Excel人民币大写终极指南:一招搞定单元格数字变现!
嘿,各位财务小伙伴,大家好!作为一个曾经被Excel里的人民币大写搞得焦头烂额的过来人,今天就来跟大家聊聊,如何在Excel单元格里优雅地、一劳永逸地显示大写人民币数字。
别跟我说你还在一个一个手动输入!2024年了!效率才是王道!
我记得刚入职那会儿,每个月报销,碰到需要填写大写金额的时候,简直是噩梦。一个数字一个数字地对应,稍不留神就出错,改来改去,老板脸色都变了。后来,我痛定思痛,发誓一定要掌握这个技巧,解放自己,也拯救大家的钱包!
其实方法很简单,主要分两种,各有千秋,大家可以根据自己的习惯和需求来选择:
第一种:Excel自带函数大法 – NUMBERSTRING 和 TEXT 的巧妙结合
这种方法不需要任何插件,完全是Excel原生功能,安全性杠杠的!
具体操作步骤是这样的:
-
准备工作: 确保你的Excel版本比较新,至少是Office 2010以上,因为
NUMBERSTRING
函数是在比较新的版本里才有的。 -
函数公式: 在你想要显示大写金额的单元格里输入以下公式(假设你的小写金额在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)&"分"))
-
公式解释:
TEXT(A1,"[DBNum2]G/通用格式")
:这个公式直接把A1单元格里的数字转换成大写人民币,简单粗暴,一步到位。NUMBERSTRING(INT(A1),2)
: 这个公式将A1单元格的整数部分转换为大写中文数字。INT(A1)
:取A1的整数部分IF()
:判断分角是否为0,显示相应的字符串
-
注意事项:
[DBNum2]
是关键,它告诉Excel用中文大写数字的格式来显示。- 如果你的金额需要精确到分,可能需要再稍微调整一下公式,比如增加判断条件,处理角和分的情况。
- 如果金额是负数,可能需要用IF函数判断一下,加上“负”字。
第二种:自定义函数 VBA 脚本 – 高级玩家的专属
如果你对Excel VBA编程有点了解,或者愿意花点时间研究一下,那么自定义函数绝对是你的不二之选。它可以让你完全掌控大写金额的格式,更加灵活。
-
打开VBA编辑器: 按下
Alt + F11
,打开VBA编辑器。 -
插入模块: 在VBA编辑器里,点击
插入 -> 模块
。 -
编写代码: 在模块里输入以下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
“`
-
保存VBA代码: 关闭VBA编辑器,Excel会自动保存你的VBA代码。
-
使用自定义函数: 在Excel单元格里输入
=DX(A1)
,其中A1是你的小写金额所在的单元格。 -
注意事项:
- 这段代码相对复杂,包含了处理角、分、负数等各种情况的逻辑。
- 如果你对VBA不熟悉,可以先从简单的例子开始,逐步学习。
- 使用VBA代码的Excel文件需要保存为
.xlsm
格式,因为这种格式支持宏。 - 第一次打开
.xlsm
文件时,Excel可能会提示启用宏,一定要启用,否则自定义函数无法使用。
无论你选择哪种方法,掌握Excel人民币大写转换技巧,都能让你在财务工作中更加得心应手,效率倍增。以后再也不用为填写大写金额而烦恼啦!赶紧试试吧!
发表回复