公式1(仅供研究学习使用,不建议使用)
=IF(AND(A1<=-0.01,A1>=-0.99),"负","")&SUBSTITUTE(SUBSTITUTE(TEXT(TRUNC(A1),"[dbnum2]G/通用格式元;负[dbnum2]G/通用格式元")&TEXT(RIGHT(FIXED(A1),2),"[dbnum2]0角0分;[dbnum2]0角;[dbnum2]整"),"零角","零"),"零分",)
公式2(仅供研究学习使用,不建议使用)
=IF(AND(A1<=-0.01,A1>=-0.99),"负","")&TEXT(TRUNC(FIXED(A2)),"[dbnum2]g/通用格式元;负[dbnum2]g/通用格式元")&SUBSTITUTE(TEXT(RIGHT(FIXED(A2),2),"[=0][dbnum2]整;[<10][dbnum2]零0分;[dbnum2]0角0分"),"零分",)
公式3(仅供研究学习使用,不建议使用)
=SUBSTITUTE(IF(RIGHT(FIXED(A1)*100,2)*1=0,TEXT(FIXED(A1),"[dbnum2]")&"元整",SUBSTITUTE(SUBSTITUTE(REPLACE(TEXT(FIXED(A1),"[dbnum2]"),LEN(TEXT(FIXED(A1),"[dbnum2]")),0,"角")&"分",".","元"),"零角","零")),"-","负")
此公式处理小于-0.99与-0.1之间的数据有问题
补充1:
EXCEL中隐藏了一个数字转大写的函数NUMBERSTRING,但它仅支持正整数,用中文版的朋友可以试试这个函数:
=NUMBERSTRING(VALUE,TYPE)
NumberString(1234567890,1) = 一十二亿三千四百五十六万七千八百九十
NumberString(1234567890,2) = 壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾
NumberString(1234567890,3) =
一二三四五六七八九〇
=IF(A1<0,"负",)&NUMBERSTRING(ABS(A1),2)&"元"&SUBSTITUTE(TEXT(MOD(ABS(A1)/1%,100),"[=0]整;[<10][dbnum2]零0分;[dbnum2]0角0分"),"零分",)
角后面无分,后面可有“整”,也可无“整”,实际应用中,无“整”的情况更多一些。“整”也可写成“正”。
补充2:在转换成大写金额前,最好用round(a1,2)将小写金额数字四舍五入保留两位小数。
补充3:
使用自定义函数的方法:
Function DX(ByVal Num)
' 人民币中文大写函数
Application.Volatile
True
Place =
"分角元拾佰仟万拾佰仟亿拾佰仟万"
Dn = "壹贰叁肆伍陆柒捌玖"
D1 =
"整零元零零零万零零零亿零零零万"
If Num < 0 Then FuHao
= "负"
Num = Format(Abs(Num),
"###0.00") * 100
If Num >
999999999999999# Then: DX = "超出转换范围!!": Exit Function
If Num = 0 Then: DX =
"零元零分": Exit Function
NumA =
Trim(Str(Num))
NumLen = Len(NumA)
For J = NumLen To 1 Step
-1 ' 转换过程
Temp
= Val(Mid(NumA, NumLen - J + 1, 1))
If
Temp <> 0 Then
' 非零数字转换
NumC = NumC & Mid(Dn,
Temp, 1) & Mid(Place, J, 1)
Else
' 数字零的转换
If Right(NumC, 1) <> "零"
Then
NumC = NumC
& Mid(D1, J, 1)
Else
Select Case
J
'
特殊数位转换
Case 1
NumC =
Left(NumC, Len(NumC) - 1) & Mid(D1, J, 1)
Case 3, 11
NumC =
Left(NumC, Len(NumC) - 1) & Mid(D1, J, 1) & "零"
Case 7
If
Mid(NumC, Len(NumC) - 1, 1) <> "亿" Then
NumC = Left(NumC, Len(NumC) -
1) & Mid(D1, J, 1) & "零"
End
If
Case Else
End
Select
End If
End
If
Next
DX = FuHao &
Trim(NumC)
End Function
使用自定义函数另外最简洁的方法如下:
Function RMBDX(M)
Y = Int(Round(100 *
Abs(M)) / 100)
j = Round(100 * Abs(M) +
0.00001) - Y * 100
f = (j / 10 - Int(j /
10)) * 10
A = IIf(Y < 1, "",
Application.Text(Y, "[DBNum2]") & "元")
B = IIf(j > 9.5,
Application.Text(Int(j / 10), "[DBNum2]") & "角", IIf(Y < 1,
"", IIf(f > 1, "零", "")))
c = IIf(f < 1, "整",
Application.Text(Round(f, 0), "[DBNum2]") & "分")
RMBDX = IIf(Abs(M) <
0.005, "", IIf(M < 0, "负" & A & B & c, A & B
& c))
End Function
Function rmbd(m)
y = Int(Round(Abs(m), 2))
'整数部分
j = Right(Round(Abs(m) * 100), 2) *
0.01
j1 = IIf(j < 0.1 And j <> 0, "零"
& Application.Text(j * 100, "[dbnum2]") & "分", "")
'零几分
j2 = IIf(Int(j * 10) = j * 10 And j
<> 0, Application.Text(j * 10, "[dbnum2]") & "角整",
"")
j3 = IIf(j = 0, "整", "")
j4 = IIf(Int(j * 10) <> j * 10 And j
> 0.1, Application.Text(Int(j * 10), "[dbnum2]") & "角" &
Application.Text(j * 100 - Int(j * 10) * 10, "[dbnum2]") & "分",
"")
rmbd = IIf(m < 0, "负", "") &
Application.Text(y, "[dbnum2]") & "元" & j3 & j2 &
j1 & j4
End Function
很多在职人员经常写错人民币大写金额,甚至有些高级职称的财务人员也写错(这样都写错应该感到很脸红的),以下内容建议学习掌握
人民币大写规范
一、 标准字样
壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、
亿、元、角、分、零、整(正)
二、 正确填写票据和结算凭证的基本规定
银行、单位和个人填写的各种票据和结算凭证是办理支付结
算和现金收付的重要依据,直接关系到支付结算的准确、及时和 安全。票据和结算凭证是银行、单位和个人凭以记载账务的会计
凭证,是记载经济业务和明确经济责任的一种书面证明。因此, 填写票据和结算凭证,必须做到标准化、规范化,要要素齐全、
数字正确、字迹清晰、不错漏、不潦草,防止涂改。中文大写金 额数字应用正楷或行书填写,如壹、贰、叁、肆、
伍、陆、柒、捌、玖、拾、佰、仟、万、亿、 元、角、分、零、整(正)等字样。不得用一、二(两)、三、
四、五、六、七、八、九、十、念、毛、另(或〇)填写,不得自造简化字。如果金额数字书写中使用繁体字,如貮(貳)、圆的,也应受理,但个人认为:最好不要使用貮(貳)、圆。
1.中文大写金额数字到“元”为止的,在“元”之后,应写 “整”(或“正”)字,在“角”之后,可以不写“整”(或“正”)
字。大写金额数字有“分”的,“分”后面不写”整”(或“正”) 字。
2.中文大写金额数字前应标明“人民币”字样,大写金额数字有“分”的,“分”后面不写“整”(或“正”)字。
3.中文大写金额数字前应标明“人民币”字样,大写金额数 字应紧接“人民币”字样填写,不得留有空白。大写金额数字前
未印“人民币’’字样的,应加填“人民币”三字。在票据和结算 凭证大写金额栏内不得预印围定的“仟、佰、拾、万、仟、佰、
拾、元、角、分”字样。
4.阿拉伯数字小写金额数字中有“0”时,中文大写应按照 汉语语言规律、金额数字构成和防止涂改的要求进行书写。举例
如下:
(1)阿拉伯数字中间有“0”时,中文大写要写“零”字,如
¥1409.50,应写成人民币陆壹仟肆佰零玫元伍角。
(2)阿拉伯数字中间连续有几个“0”时,中文大写金额中间可 以只写--个“零”字,如¥6007.14,应写成人民币陆仟零柒元
壹角肆分。
(3)阿拉伯金额数字万位和元位是“0”,或者数字中间连续有 几个“0”,万位、元位也是“0”,但千位、角位不是“0”时,
中文大写金额中可以只写一个零字,也可以不写”零”字。如 Y1680.32,应写成人民币壹仟陆佰捌拾元零叁角贰分,或者写
成人民币壹仟陆佰捌拾元叁角贰分,又如¥107000.53,应写成 人民币壹拾万柒仟元零伍角卷分,或者写成人民币壹拾万零柒仟
元伍角卷分。
(4)阿拉伯金额数字角位是“0”,而分位不是“0”时,中文大写金额“元”后面应写“零”字。如¥16409.02,应写成人民币壹万陆仟肆佰零玖元零贰分;又如Y325.04,应写成人民币叁佰贰拾伍元零肆分,
(5)阿拉伯小写金额数字前面,均应填写人民币符号“Y”。阿拉伯小写金额数字要认真填写,不得连写分辨不清。特别注意:人民币符号“Y”,不能写成¥。仔细观察,少一横是人民币符号,多一横是日元符号(小日本用的),在N年之前,人民币符号与日元符号一样,自从计算机与网络普及以后,中国人民银行作出了规定,用人民币符号“Y”,与日元符号相区别。