Microsoft Excel实现金额数字维文大写转换

2017-12-15 08:33艾合麦提尼亚孜艾合麦提江
和田师范专科学校学报 2017年5期
关键词:和田小写大写

艾合麦提尼亚孜·艾合麦提江

(和田师范专科学校数学与信息学院,新疆 和田 848000)

Microsoft Excel实现金额数字维文大写转换

艾合麦提尼亚孜·艾合麦提江

(和田师范专科学校数学与信息学院,新疆 和田 848000)

财务工作中经常使用金额数字大写,利用编程法可以方便地实现金额数字的维文大写转换。本文阐述了编写SpellNumber函数并调用实现金额数字维文大写的方法。

Microsoft Excel;金额数字维文大写

一般会计工作中经常会遇到货币金额小写转换成大写的问题。比如说: 支票,发票,收款单,缴款单,借款单等都是使用金额大写。一般制单人逐一输入,输入有点复杂,而且很难保证拼写无误,下面我们介绍,用Microsoft Excel自动转换人民币金额小写转换维文大写的方法。

2. 需要解决的问题

在Microsoft Excel中实现人民币金额小写转换维文大写,存在以下两个问题:

(一)办公室自动化软件里面没有现成的函数。

(二)Microsoft Excel的Visual Basic代码框不能直接写维吾尔文。

为了解决以上的两个问题我们在Microsoft Excel 中定义一个维文金额数大小写转换函数,写代码时维吾尔文字母的ASCII码提出来,然后用ChrW函数转换维文,最后单元格里面显示金额数维文大写。

3. 实现维文金额小写自动转换大写

先要打开Excel工作簿,然后单击菜单栏选 “工具→宏→Visual Basic编辑器”。在“Visual Basic编辑器”窗口中选择“插入→模块”命令,窗口中输入如下代码:

Function SpellNumber(ByVal MyNumber)

Dim Dollars, Cents, Temp

Dim DecimalPlace, Count

ReDim Place(9) As String

Place(2) = ChrW(32) amp; ChrW(1605) amp; ChrW(1609) amp; ChrW(1709) amp; ChrW(32)

Place(3) = ChrW(32) amp; ChrW(1605) amp; ChrW(1609) amp; ChrW(1604) amp; ChrW(1610) amp; ChrW(1608) amp; ChrW(1606) amp; ChrW(32)

Place(4) = ChrW(32) amp; ChrW(1605) amp; ChrW(1609) amp; ChrW(1604) amp; ChrW(1610) amp; ChrW(1575) amp; ChrW(1585) amp; ChrW(1583) amp; ChrW(32)

Place(5) = ChrW(32) amp; ChrW(1578) amp; ChrW(1585) amp; ChrW(1604) amp; ChrW(1609) amp; ChrW(1610) amp; ChrW(1608) amp; ChrW(1606) amp; ChrW(32)

MyNumber = Trim(Str(MyNumber))

' Position of decimal place 0 if none.

DecimalPlace = InStr(MyNumber, “.”)

' Convert cents and set MyNumber to dollar amount.

If DecimalPlace gt; 0 Then

Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) amp; _“00”, 2))

MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))

End If

Count = 1

Do While MyNumber lt;gt; “”

Temp = GetHundreds(Right(MyNumber, 3))

If Temp lt;gt; “” Then Dollars = Temp amp; Place(Count) amp; Dollars

If Len(MyNumber) gt; 3 Then

MyNumber = Left(MyNumber, Len(MyNumber) - 3)

Else

MyNumber = “”

End If

Count = Count + 1

Loop

Dollars = Dollars amp; ChrW(32) amp; ChrW(1610) amp; ChrW(1736) amp; ChrW(1749) amp; ChrW(1606) amp; ChrW(32)

Select Case Cents

Case “”

Cents = “ ”

Case Else

Cents = Cents amp; ChrW(32) amp; ChrW(1662) amp; ChrW(1735) amp; ChrW(1709) amp; ChrW(32)

End Select

If Dollars = ChrW(32) amp; ChrW(1610) amp; ChrW(1736) amp; ChrW(1749) amp; ChrW(1606) amp; ChrW(32) Then

SpellNumber = Cents

Else

SpellNumber = Dollars amp; Cents

End If

End Function

' Converts a number from 100-999 into text

Function GetHundreds(ByVal MyNumber)

Dim Result As String

If Val(MyNumber) = 0 Then Exit Function

MyNumber = Right(“000” amp; MyNumber, 3)

' Convert the hundreds place.

If Mid(MyNumber, 1, 1) lt;gt; “0” Then

Result = GetDigit(Mid(MyNumber, 1, 1)) amp; ChrW(32) amp; ChrW(1610) amp; ChrW(1736) amp; ChrW(1586) amp; ChrW(32)

End If

' Convert the tens and ones place.

If Mid(MyNumber, 2, 1) lt;gt; “0” Then

Result = Result amp; GetTens(Mid(MyNumber, 2))

Else

Result = Result amp; GetDigit(Mid(MyNumber, 3))

End If

GetHundreds = Result

End Function

' Converts a number from 10 to 99 into text.

Function GetTens(TensText)

Dim Result As String

Result = “” ' Null out the temporary function value.

' If value between 10-99...

Select Case Val(Left(TensText, 1))

Case 1: Result = ChrW(1574) amp; ChrW(1608) amp; ChrW(1606) amp; ChrW(32)

Case 2: Result = ChrW(1610) amp; ChrW(1609) amp; ChrW(1711) amp; ChrW(1609) amp; ChrW(1585) amp; ChrW(1605) amp; ChrW(1749) amp; ChrW(32)

Case 3: Result = ChrW(1574) amp; ChrW(1608) amp; ChrW(1578) amp; ChrW(1578) amp; ChrW(1735) amp; ChrW(1586) amp; ChrW(32)

Case 4: Result = ChrW(1602) amp; ChrW(1609) amp; ChrW(1585) amp; ChrW(1609) amp; ChrW(1602) amp; ChrW(32)

Case 5: Result = ChrW(1574) amp; ChrW(1749) amp; ChrW(1604) amp; ChrW(1604) amp; ChrW(1609) amp; ChrW(1603) amp; ChrW(32)

Case 6: Result = ChrW(1574) amp; ChrW(1575) amp; ChrW(1578) amp; ChrW(1605) amp; ChrW(1609) amp; ChrW(1588) amp; ChrW(32)

Case 7: Result = ChrW(1610) amp; ChrW(1749) amp; ChrW(1578) amp; ChrW(1605) amp; ChrW(1609) amp; ChrW(1588) amp; ChrW(32)

Case 8: Result = ChrW(1587) amp; ChrW(1749) amp; ChrW(1603) amp; ChrW(1587) amp; ChrW(1749) amp; ChrW(1606) amp; ChrW(32)

Case 9: Result = ChrW(1578) amp; ChrW(1608) amp; ChrW(1602) amp; ChrW(1587) amp; ChrW(1575) amp; ChrW(1606) amp; ChrW(32)

Case Else

End Select

Result = Result amp; GetDigit _

(Right(TensText, 1)) ' Retrieve ones place.

GetTens = Result

End Function

' Converts a number from 1 to 9 into text.

Function GetDigit(Digit)

Select Case Val(Digit)

Case 1: GetDigit = ChrW(1576) amp; ChrW(1609) amp; ChrW(1585)

Case 2: GetDigit = ChrW(1574) amp; ChrW(1609) amp; ChrW(1603) amp; ChrW(1603) amp; ChrW(1609)

Case 3: GetDigit = ChrW(1574) amp; ChrW(1736) amp; ChrW(1670)

Case 4: GetDigit = ChrW(1578) amp; ChrW(1734) amp; ChrW(1578)

Case 5: GetDigit = ChrW(1576) amp; ChrW(1749) amp; ChrW(1588)

Case 6: GetDigit = ChrW(1574) amp; ChrW(1575) amp; ChrW(1604) amp; ChrW(1578) amp; ChrW(1749)

Case 7: GetDigit = ChrW(1610) amp; ChrW(1749) amp; ChrW(1578) amp; ChrW(1578) amp; ChrW(1749)

Case 8: GetDigit = ChrW(1587) amp; ChrW(1749) amp; ChrW(1603) amp; ChrW(1603) amp; ChrW(1609) amp; ChrW(1586)

Case 9: GetDigit = ChrW(1578) amp; ChrW(1608) amp; ChrW(1602) amp; ChrW(1602) amp; ChrW(1735) amp; ChrW(1586)

Case Else: GetDigit = “”

End Select

End Function

写完代码以后我们单击保存,退出“Visual Basic编辑器”窗口。按照以上步骤我们已经定义了一个实现维文金额小写转换成维文大写的函数,即SpellNumber 函数。

4. 使用宏代码实现金额小写转换成大写

如果我们在Excel工作簿中要实现维文大写自动转换,就是要调用SpellNumber 函数。比如:如果要把A列单元格人民币金额小写数字转换成维文大写并且在B列相应的单元格显示出来,那么首先在B2单元格中输入=SpellNumber(A2)按Enter键。然后选B2单元格拖动填充手柄往下拉自动填充,直到A列单元格人民币金额小写数字都转换成大写。如果经常使用人民币小写转换成维文大写,可以在窗口中由菜单栏单击“另存为”命令,“另存为”对话框中另存为Excel加载宏,文件名为“人民币金额维文大写转换.xla”以便使用。

5. 函数的特征

(一)人民币金额数不管是在文本格式还是数字格式都可以自动转换。

(二)人民币金额数小数点后部分自动四舍五入保留两位小数。

(三)容易理解,使用方便。

(四)有利于促进人民币金额数大写的规范。

(五)有利于提高财务人员工作效率,节省时间。

[1] 李东海,龙建祥,高建平. Excel 2010实战办公技巧精粹[M].北京:兵器工业出版社,2012:501-513.

2017-09-20

艾合麦提尼亚孜·艾合麦提江(1987-),男,维吾尔族,新疆和田人,理学硕士研究生,和田师范专科学校数学与信息学院教师。研究方向:数值泛函、计算机文字信息处理。

猜你喜欢
和田小写大写
做一个大写的“我”
大写的厉害:“00后”少年自制火箭成功上天
和田出土《法华经》古藏译本的初步研究报告(二)
本刊对来稿中统计学符号书写要求
本刊对来稿中统计学符号书写要求
“大写”与“大些”
本刊对来稿中统计学符号书写要求
—个大写的pink 该入手的都来了
试论现代维吾尔语和田方言的土语划分
医学期刊中常用的统计学符号