大家在造价审核时,Excel中默认的人民币大写公式显示是下面的样子:
但根据正规的财务写法,其实应该是下面的样子:
那么如何才能做到正确的写法并且大小写金额联动呢,其实这个问题在Excel或WPS中并不太好解决,需要利用到一点VBA的知识。操作如下:
在 Excel 中将数值金额转换为中文大写金额,可以通过自定义函数来实现。下面是一个使用 VBA(Visual Basic for Applications)来编写自定义函数的方法,将数值金额转换为中文大写金额。
- 打开你的 Excel 文件。
- 按
Alt + F11
打开 VBA 编辑器。 - 在 VBA 编辑器中,选择
插入
->模块
来插入一个新的模块。 - 复制以下代码并粘贴到新模块中:
Function NumToRMB(amt As Double) As String Dim StrValue As String Dim Units As Variant Dim Digits As Variant Dim i As Integer Dim StrTemp As String Dim isNeg As Boolean ' 判断负数 If amt < 0 Then isNeg = True amt = Abs(amt) End If StrValue = Format(amt, "0.00") Units = Array("", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万", "拾", "佰", "仟") Digits = Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖") Dim StrInt As String Dim StrDec As String Dim PosDot As Integer PosDot = InStr(StrValue, ".") If PosDot > 0 Then StrInt = Mid(StrValue, 1, PosDot - 1) StrDec = Mid(StrValue, PosDot + 1) Else StrInt = StrValue StrDec = "" End If StrTemp = "" For i = 1 To Len(StrInt) StrTemp = StrTemp & Digits(Mid(StrInt, i, 1)) & Units(Len(StrInt) - i) Next i StrTemp = Replace(StrTemp, "零拾", "零") StrTemp = Replace(StrTemp, "零佰", "零") StrTemp = Replace(StrTemp, "零仟", "零") StrTemp = Replace(StrTemp, "零万", "万") StrTemp = Replace(StrTemp, "零亿", "亿") StrTemp = Replace(StrTemp, "零零零零", "零") StrTemp = Replace(StrTemp, "零零零", "零") StrTemp = Replace(StrTemp, "零零", "零") If Right(StrTemp, 1) = "零" Then StrTemp = Left(StrTemp, Len(StrTemp) - 1) End If If StrDec <> "" Then StrTemp = StrTemp & "元" & Digits(Mid(StrDec, 1, 1)) & "角" & Digits(Mid(StrDec, 2, 1)) & "分" Else StrTemp = StrTemp & "元整" End If If isNeg Then StrTemp = "负" & StrTemp End If NumToRMB = StrTemp End Function
5.关闭 VBA 编辑器,返回到你的 Excel 工作表。
6.在 Excel 中,使用自定义函数 NumToRMB
将数值转换为中文大写金额。例如,如果你的数值在 A1 单元格中,你可以在 B1 单元格中输入:
=NumToRMB(A1)
这样,Excel 将自动把 A1 单元格中的数值(如 294632.80)转换为中文大写金额(贰拾玖万肆仟陆佰叁拾贰元捌角)。
你可以根据需要修改和扩展这个函数来适应具体的需求。
评论0