如何在excel单元格中显示大写人民币数字

Excel人民币大写终极指南:一招搞定单元格数字变现!

嘿,各位财务小伙伴,大家好!作为一个曾经被Excel里的人民币大写搞得焦头烂额的过来人,今天就来跟大家聊聊,如何在Excel单元格里优雅地、一劳永逸地显示大写人民币数字。

别跟我说你还在一个一个手动输入!2024年了!效率才是王道!

我记得刚入职那会儿,每个月报销,碰到需要填写大写金额的时候,简直是噩梦。一个数字一个数字地对应,稍不留神就出错,改来改去,老板脸色都变了。后来,我痛定思痛,发誓一定要掌握这个技巧,解放自己,也拯救大家的钱包!

其实方法很简单,主要分两种,各有千秋,大家可以根据自己的习惯和需求来选择:

第一种:Excel自带函数大法 – NUMBERSTRING 和 TEXT 的巧妙结合

这种方法不需要任何插件,完全是Excel原生功能,安全性杠杠的!

具体操作步骤是这样的:

  1. 准备工作: 确保你的Excel版本比较新,至少是Office 2010以上,因为NUMBERSTRING函数是在比较新的版本里才有的。

  2. 函数公式: 在你想要显示大写金额的单元格里输入以下公式(假设你的小写金额在A1单元格):

excel
=TEXT(A1,"[DBNum2]G/通用格式")

或者

excel
=NUMBERSTRING(INT(A1),2)&"元"&IF(INT(A1*10)-INT(A1)*10=0,"整",NUMBERSTRING(INT(A1*10)-INT(A1)*10,2)&"角"&IF(INT(A1*100)-INT(A1*10)*10=0,"整",NUMBERSTRING(INT(A1*100)-INT(A1*10)*10,2)&"分"))

  1. 公式解释:

    • TEXT(A1,"[DBNum2]G/通用格式"):这个公式直接把A1单元格里的数字转换成大写人民币,简单粗暴,一步到位。
    • NUMBERSTRING(INT(A1),2): 这个公式将A1单元格的整数部分转换为大写中文数字。
    • INT(A1):取A1的整数部分
    • IF():判断分角是否为0,显示相应的字符串
  2. 注意事项:

    • [DBNum2]是关键,它告诉Excel用中文大写数字的格式来显示。
    • 如果你的金额需要精确到分,可能需要再稍微调整一下公式,比如增加判断条件,处理角和分的情况。
    • 如果金额是负数,可能需要用IF函数判断一下,加上“负”字。

第二种:自定义函数 VBA 脚本 – 高级玩家的专属

如果你对Excel VBA编程有点了解,或者愿意花点时间研究一下,那么自定义函数绝对是你的不二之选。它可以让你完全掌控大写金额的格式,更加灵活。

  1. 打开VBA编辑器: 按下 Alt + F11,打开VBA编辑器。

  2. 插入模块: 在VBA编辑器里,点击 插入 -> 模块

  3. 编写代码: 在模块里输入以下VBA代码(以下代码来自网络,我做了些修改,方便大家使用):

“`vba
Function DX(M) As String
Dim Num As String, i As Integer
Dim Currency_Amount As String
Currency_Amount = Replace(Trim(Str(M)), ” “, “”)
Currency_Amount = Replace(Currency_Amount, “,”, “”)
Currency_Amount = Replace(Currency_Amount, “-“, “负”)

Dim tempAmount As String
If InStr(1, Currency_Amount, ".") > 0 Then
    tempAmount = Left(Currency_Amount, InStr(1, Currency_Amount, ".") - 1)
Else
    tempAmount = Currency_Amount
End If

If Len(tempAmount) > 15 Then
    DX = "数字太大,无法转换!"
    Exit Function
End If

Dim str_Digital(9) As String, str_Unit(8) As String
Dim str_Digital2(3) As String

str_Digital(0) = "零"
str_Digital(1) = "壹"
str_Digital(2) = "贰"
str_Digital(3) = "叁"
str_Digital(4) = "肆"
str_Digital(5) = "伍"
str_Digital(6) = "陆"
str_Digital(7) = "柒"
str_Digital(8) = "捌"
str_Digital(9) = "玖"

str_Unit(0) = "分"
str_Unit(1) = "角"
str_Unit(2) = "元"
str_Unit(3) = "拾"
str_Unit(4) = "佰"
str_Unit(5) = "仟"
str_Unit(6) = "万"
str_Unit(7) = "亿"

Dim Amount(30) As String
Dim Money As String
Dim str_Amount As String
Dim decimalPart As String

If InStr(1, Currency_Amount, ".") > 0 Then
    str_Amount = Left(Currency_Amount, InStr(1, Currency_Amount, ".") - 1)
    decimalPart = Mid(Currency_Amount, InStr(1, Currency_Amount, ".") + 1)
Else
    str_Amount = Currency_Amount
    decimalPart = ""
End If

Dim amountLength As Integer
amountLength = Len(str_Amount)

For i = 1 To amountLength
    Amount(i) = Mid(str_Amount, amountLength - i + 1, 1)
Next i

Money = ""
For i = 1 To amountLength
    Num = str_Digital(Amount(i))
    Select Case i
        Case 1: str_Amount = Num & str_Unit(2) '元
        Case 2, 3, 4: str_Amount = Num & str_Unit(i + 1) '拾,佰,仟
        Case 5: str_Amount = Num & str_Unit(6) '万
        Case 6, 7, 8: str_Amount = Num & str_Unit(i) '拾,佰,仟 万
        Case 9: str_Amount = Num & str_Unit(7) '亿
        Case 10, 11, 12: str_Amount = Num & str_Unit(i + 1) '拾,佰,仟 亿
        Case 13: str_Amount = Num & str_Unit(6) & "万"
        Case Else: str_Amount = Num
    End Select

    Money = str_Amount & Money

    If Amount(i) = 0 Then
        If i = 3 Then
            Money = Replace(Money, "零元", "元", 1)
        ElseIf i = 7 Then
            Money = Replace(Money, "零万", "万", 1)
        ElseIf i = 11 Then
            Money = Replace(Money, "零亿", "亿", 1)
        End If
    End If
Next i
Money = Replace(Money, "零零", "零", 1)

If decimalPart <> "" Then
    If Len(decimalPart) >= 1 Then
        i = Val(Left(decimalPart, 1))
        If i > 0 Then
            Money = Money & str_Digital(i) & str_Unit(1)
        Else
            Money = Money & "零"
        End If
    End If

    If Len(decimalPart) >= 2 Then
        i = Val(Mid(decimalPart, 2, 1))
        If i > 0 Then
            Money = Money & str_Digital(i) & str_Unit(0)
        Else
            If Val(Left(decimalPart, 1)) > 0 Then
                Money = Money
            Else
                 Money = Money
            End If
        End If
    End If
Else
    Money = Money & "整"
End If

Money = Replace(Money, "零整", "整", 1)
Money = Replace(Money, "零零", "零", 1)
Money = Replace(Money, "零亿", "亿", 1)
Money = Replace(Money, "零万", "万", 1)
Money = Replace(Money, "零元", "元", 1)
Money = Replace(Money, "亿万", "亿", 1)

DX = Money

End Function

“`

  1. 保存VBA代码: 关闭VBA编辑器,Excel会自动保存你的VBA代码。

  2. 使用自定义函数: 在Excel单元格里输入 =DX(A1),其中A1是你的小写金额所在的单元格。

  3. 注意事项:

    • 这段代码相对复杂,包含了处理角、分、负数等各种情况的逻辑。
    • 如果你对VBA不熟悉,可以先从简单的例子开始,逐步学习。
    • 使用VBA代码的Excel文件需要保存为.xlsm格式,因为这种格式支持宏。
    • 第一次打开.xlsm文件时,Excel可能会提示启用宏,一定要启用,否则自定义函数无法使用。

无论你选择哪种方法,掌握Excel人民币大写转换技巧,都能让你在财务工作中更加得心应手,效率倍增。以后再也不用为填写大写金额而烦恼啦!赶紧试试吧!

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注