1. 阿拉伯数字金额转换成大写金额
从阿拉伯数字转换成大写金额,主要分成两个大步骤:
- 通过MOD函数判断阿拉伯数字是否为整数
- 通过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,就可以取到分数位的值,把角改成分即可
=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 | 贰万伍仟壹佰肆拾捌元肆角伍分 |