财务或经常出差的朋友,是不是总被报销单大写金额困扰?填完数字金额后,还要手动写“壹贰叁肆”,很易出错——漏写“零”、混淆“角分”、负数不会标,稍不注意就整张报销单作废要重写,在报销过程中浪费大把大把的时间和单据
其实在Excel中有提供数字转大写的功能,通过【设置单元格格式】选择【特殊】,在【类型】设置为“中文大写数字”;或者通过输入公式=TEXT(A3,"[DBNum2]") ,但是,最终显示的结果根本不符合国人的习惯和标准,下面分享两种方法供借鉴:方法一:Excel万能公式(网上大佬分享的,在此就借花献佛啦)整数、小数、负数全适配,直接生成规范财务大写金额,高效避坑。=IF(A3<0,"负","")&TEXT(INT(ABS(A3)),"[dbnum2]")&TEXT(MOD(ABS(A3),1)/1%,"[>0][dbnum2]元0角0分;[=0]元整")
第一部分:处理负数前缀
IF(A4<0,"负","")
- 若 A4 是负数(比如 A4=-123),这里会生成 “负” 字;
- 若 A4 是正数 / "",这里显示空值(不额外加字)。
第二部分:转换整数部分
TEXT(INT(ABS(A4)),"[dbnum2]")
ABS(A4):先取 A4 的绝对值(不管正负,都转成正数,避免符号干扰);
INT(...):提取绝对值的整数部分(比如 A4=123.45,ABS 后是 123.45,INT取整为 123);TEXT(..., "[dbnum2]"):把整数转成中文大写数字(比如 123 转 “壹佰贰拾叁”,是财务专用的规范大写)。
第三部分:处理角分 / 元整
TEXT(MOD(ABS(A4),1)/1%,"[>0][dbnum2]元0角0分;[=0]元整")
- 若小数部分 > 0(比如 45):生成 “[dbnum2] 元 0 角 0 分”(即 “元肆角伍分”);
- 若小数部分 = 0(比如 A4=123):直接生成 “元整”。
MOD(ABS(A4),1):提取 A4 绝对值的小数部分(比如 A4=123.45,ABS 后是123.45,MOD 取余得 0.45);
/1%:把小数转成两位整数(1%=0.01,0.45÷0.01=45,对应 “4 角 5 分”);
实例演示(更直观)
方法二:Excel 插件辅助转换,其原理和上面公式基本类似,其最大特点灵活好用,动画演示结果如下: