1. 阿拉伯数字金额转换成大写金额

从阿拉伯数字转换成大写金额,主要分成两个大步骤:

  1. 通过MOD函数判断阿拉伯数字是否为整数
  2. 通过Text分别设置单元格格式为[dbnum2],小数部分通过midintlen嵌套取角和分

1.1 MOD判断是否为整数

:::info mod函数是一个求余函数,其格式为: mod(nExp1,nExp2),即是两个数值表达式作除法运算后的余数。特别注意:在EXCEL中,MOD函数是用于返回两数相除的余数,返回结果的符号与除数(divisor)的符号相同。
余数指整数除法中被除数未被除尽部分(这里以正数为例),且余数的取值范围为0到除数之间(不包括除数)的整数。例如:27除以6,商数为4,余数为3。
一个数除以另一个数,要是比另一个数小的话,商为0,余数就是它自己。例如:1除以2,商数为0,余数为1;2除以3,商数为0,余数为2。 ::: | 被除数(N) | 除数(D) | 余数 | 类型 | | —- | —- | —- | —- | | 123.45 | 1 | 0.45 | 不能被整除 | | 15 | 3 | 0 | 能被整除 | | 17 | 4 | 1 | 不能被整除 | | 21 | 18 | 3 | 不能被整除 | | 18 | 21 | 18 | 特殊情况N<D |

=if(mod(123.45,1)=0,
如果这个金额能被整除,则mod的余数是0,也就是if的判断0=0会返回TRUE,即金额为整数,则会执行if函数的参数1

1.2 TEXT设置单元格格式

1.2.1 整数部分

关于[DBNUM2]

单元格格式 说明 阿拉伯数字 中文
[DBNUM1] 简体中文 555 五百五十五
[DBNUM2] 大写数字 555 伍佰伍拾伍
[DBNUM3] 单位 555 5百5十5

=if(mod(123.45,1)=0,text(int(123.45),”[dbnum2]”&”元整”,
这里是if的第一个参数,Text是用来设置单元格格式的,表示把123.45的整数部分用大写数字来显示,结果为:壹佰贰拾叁

1.2.2 小数部分

如果目标值不是整数,就会执行if函数的第二个参数
也就是最核心的小数部分
=if(mod(123.45,1)=0,text(int(123.45),”[dbnum2]”&”元整”,text(int(123.45),”[dbnum2]D元”&text(mid(123.45,len(int(123.45)+2,1),”[dbnum2]D角”)

  • int取123.45的整数部分123
  • len计算123的长度为3
  • mid取从123.45的第2位起的第3+2位数的第1个数,即mid(123.45,3+2,1),也就是4
  • Text设置单元格格式为大写数字:肆角

同理,把+2改成+3,就可以取到分数位的值,把角改成分即可

  1. =IF(MOD(A1,1)=0,TEXT(INT(A1),"[dbnum2]")&"元整",TEXT(INT(A1),"[dbnum2]")&"元"&TEXT(MID(A1,LEN(INT(A1))+2,1),"[dbnum2]D角")&TEXT(MID(A1,LEN(INT(A1))+3,1),"[dbnum2]D分"))
数字 中文大写
46,558.06 肆万陆仟伍佰伍拾捌元零角陆分
19,246.85 壹万玖仟贰佰肆拾陆元捌角伍分
50,441.98 伍万零肆佰肆拾壹元玖角捌分
92,437.08 玖万贰仟肆佰叁拾柒元零角捌分
76,561.54 柒万陆仟伍佰陆拾壹元伍角肆分
49,792.88 肆万玖仟柒佰玖拾贰元捌角捌分
25,148.45 贰万伍仟壹佰肆拾捌元肆角伍分

数字金额转大写金额.xlsx