VBA写入公式(4):数字转大写金额公式

写入大写金额公式:=SUBSTITUTE(SUBSTITUTE(IF(A2>-0.5%,“负”)&TEXT(INT(FIXED(ABS(A2))),“[dbnum2]G/通用格式元;;”)&TEXT(RIGHT(FIXED(A2),2),“[dbnum2]0角0分;;”&IF(ABS(A2)>1%,“整”,)),“零角”,IF(ABS(A2)<1,“零”)),“零分”,“整”)

Sub 金额大写()
    '先选择数字所在的一个单元格,在选择大写金额保存的一个单元格。带有双引号的外面必须由两重双引号,而且最内侧双引号外不能连接其他字符串。
    Set rng1 = Application.InputBox(prompt:="选择数据源的一个单元格", Type:=8)
    'rng1.Select
    a = rng1.Address(0, 0)
'    Debug.Print rng1
'    Debug.Print rng1_addr
'    a = rng1_addr
    Set rng2 = Application.InputBox(prompt:="选择保存结果一个单元格", Type:=8)
'    row2 = rng2.Row
'    colu2 = rng2.Column
    rng2.Formula = "=SUBSTITUTE(SUBSTITUTE(IF(" & a & ">-0.5%,," & """负""" & ")&TEXT(INT(FIXED(ABS(" & a & ")))," & """[dbnum2]G/通用格式元;;""" & ")&TEXT(RIGHT(FIXED(" & a & "),2)," & """[dbnum2]0角0分;;""" & "&IF(ABS(" & a & ")>1%," & """整""" & ",))," & """零角""" & ",IF(ABS(" & a & ")<1,," & """零""" & "))," & """零分""" & "," & """整""" & ")"
'    For Each i In rng1
'        'Cells(row2, colu2).Formula = "=" & a & "+" & a & "+" & a
'        'Cells(row2, colu2).Formula = "=SUBSTITUTE(" & a & "," & "1" & "," & "3" & ")"
'        '=SUBSTITUTE(SUBSTITUTE(IF(A2>-0.5%,,"负")&TEXT(INT(FIXED(ABS(A2))),"[dbnum2]G/通用格式元;;")&TEXT(RIGHT(FIXED(A2),2),"[dbnum2]0角0分;;"&IF(ABS(A2)>1%,"整",)),"零角",IF(ABS(A2)<1,,"零")),"零分","整")
'        '带有双引号的外面必须由两重双引号,而且最内侧双引号外不能连接其他字符串。
'        rng2.Formula = "=SUBSTITUTE(SUBSTITUTE(IF(" & a & ">-0.5%,," & """负""" & ")&TEXT(INT(FIXED(ABS(" & a & ")))," & """[dbnum2]G/通用格式元;;""" & ")&TEXT(RIGHT(FIXED(" & a & "),2)," & """[dbnum2]0角0分;;""" & "&IF(ABS(" & a & ")>1%," & """整""" & ",))," & """零角""" & ",IF(ABS(" & a & ")<1,," & """零""" & "))," & """零分""" & "," & """整""" & ")"
'        row2 = row2 + 1
'    Next
End Sub

去除备注:

Sub 金额大写()
    Set rng1 = Application.InputBox(prompt:="选择数据源的一个单元格", Type:=8)
    a = rng1.Address(0, 0)
    Set rng2 = Application.InputBox(prompt:="选择保存结果一个单元格", Type:=8)
    rng2.Formula = "=SUBSTITUTE(SUBSTITUTE(IF(" & a & ">-0.5%,," & """负""" & ")&TEXT(INT(FIXED(ABS(" & a & ")))," & """[dbnum2]G/通用格式元;;""" & ")&TEXT(RIGHT(FIXED(" & a & "),2)," & """[dbnum2]0角0分;;""" & "&IF(ABS(" & a & ")>1%," & """整""" & ",))," & """零角""" & ",IF(ABS(" & a & ")<1,," & """零""" & "))," & """零分""" & "," & """整""" & ")"
End Sub

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的VBA代码示例,可用于将Word文档所选单元格数字金额换为大写金额: ``` Sub ConvertCurrencyToWords() Dim cell As Range For Each cell In Selection.Cells If IsNumeric(cell.Value) Then cell.Value = Format(cell.Value, "#,##0.00") cell.Value = "RMB " & ConvertToWords(cell.Value) & " only" End If Next End Sub Function ConvertToWords(ByVal MyNumber) Dim Dollars, Cents, Temp Dim DecimalPlace, Count ReDim Place(9) As String Place(2) = " Thousand " Place(3) = " Million " Place(4) = " Billion " Place(5) = " Trillion " MyNumber = Trim(Str(MyNumber)) DecimalPlace = InStr(MyNumber, ".") If DecimalPlace > 0 Then Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2)) MyNumber = Trim(Left(MyNumber, DecimalPlace - 1)) End If Count = 1 Do While MyNumber <> "" Temp = GetHundreds(Right(MyNumber, 3)) If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars If Len(MyNumber) > 3 Then MyNumber = Left(MyNumber, Len(MyNumber) - 3) Else MyNumber = "" End If Count = Count + 1 Loop Select Case Dollars Case "" Dollars = "No Dollars" Case "One" Dollars = "One Dollar" Case Else Dollars = Dollars & " Dollars" End Select Select Case Cents Case "" Cents = " and No Cents" Case "One" Cents = " and One Cent" Case Else Cents = " and " & Cents & " Cents" End Select ConvertToWords = Dollars & Cents End Function Function GetHundreds(ByVal MyNumber) Dim Result As String If Val(MyNumber) = 0 Then Exit Function MyNumber = Right("000" & MyNumber, 3) If Mid(MyNumber, 1, 1) <> "0" Then Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred " End If If Mid(MyNumber, 2, 1) <> "0" Then Result = Result & GetTens(Mid(MyNumber, 2)) Else Result = Result & GetDigit(Mid(MyNumber, 3)) End If GetHundreds = Result End Function Function GetTens(TensText) Dim Result As String Result = "" If Val(Left(TensText, 1)) = 1 Then Select Case Val(TensText) Case 10: Result = "Ten" Case 11: Result = "Eleven" Case 12: Result = "Twelve" Case 13: Result = "Thirteen" Case 14: Result = "Fourteen" Case 15: Result = "Fifteen" Case 16: Result = "Sixteen" Case 17: Result = "Seventeen" Case 18: Result = "Eighteen" Case 19: Result = "Nineteen

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值