在 Excel 里面把数字金额转换成大写,是财务开票收据工资表非常高频的需求,核心方案分为两种,一种是使用嵌套函数公式实现人民币大写,适合普通表格直接调用,另一种是自定义 VBA 函数,适合长期高频使用,公式版本不需要开启宏,兼容性更好,但是公式比较长,VBA 版本可以做成自定义函数,后续输入函数名就可以转换,缺点是文件必须保存成 xlsm 启用宏格式,普通 xlsx 保存之后宏会失效,转换大写金额的标准规范是整数部分按照中文大写数字,搭配拾佰仟万亿单位,小数部分转换为角分,末尾加上元整或者元角分,很多新手转换之后会出现零处理错误,连续多个零没有合并,单位错乱,负数金额没有标识,小数点位数不对,这些都是财务大写里面常见问题,使用公式的时候要确认原始金额是纯数值,不能是文本型数字,否则转换结果会报错,同时要注意不同行业规范,有的单据不需要写人民币前缀,可以自行修改公式里面的文字。
方法一 嵌套函数公式 无宏转换大写金额
假设 A2 单元格是原始数字金额,在 B2 单元格输入公式
=IF (A2=0,"零元整",IF (A2<0,"负"&TEXT (INT (ABS (A2)),"[DBNum2]")&"元"&IF (INT (ABS (A2)10)-INT (ABS (A2))10=0,IF (INT (ABS (A2)100)-INT (ABS (A2)10)10=0,"整",TEXT (INT (ABS (A2)10)-INT (ABS (A2))10,"[DBNum2]")&"角"),TEXT (INT (ABS (A2)10)-INT (ABS (A2))10,"[DBNum2]")&"角"&IF (INT (ABS (A2)100)-INT (ABS (A2)10)10=0,"整",TEXT (INT (ABS (A2)100)-INT (ABS (A2)10)10,"[DBNum2]")&"分")))
操作步骤
1 打开财务表格,确认 A 列金额是标准数值格式,不是文本
2 点击大写金额对应的单元格 B2,粘贴上面完整公式
3 按下回车,自动生成人民币中文大写金额
4 鼠标放在单元格右下角,黑色十字填充柄向下拖动,批量完成全部行的数字金额转换成大写
原理说明,这里核心是 TEXT 函数搭配 DBNum2 格式代码,这个代码是 Excel 自带中文大写数字格式,外层 IF 用来判断零值负数,拆分整数部分角分,判断末尾是否写整字
注意点,这个基础公式在超大金额或者连续零的场景会存在零字冗余,如果是正式财务单据,建议使用优化版公式,自动合并连续零
方法二 自定义 VBA 函数 长期批量转换
适合经常做票据,不想每次粘贴长公式,自定义之后就像普通函数一样调用
操作步骤
1 打开 Excel,按下 Alt 加 F11,打开 VBA 编辑器
2 右键点击当前工作簿,插入,模块
3 在代码窗口粘贴自定义函数代码,函数名称可以命名为 RMBDX
4 关闭 VBA 编辑器,回到表格,单元格输入 = RMBDX (A2)
5 回车下拉填充,实现数字金额转换成大写
重要提醒,文件必须另存为 xlsm 启用宏的工作簿,如果保存成普通 xlsx,下次打开宏代码会直接丢失,函数提示名称错误
优势,代码可以自定义修改,比如增加人民币前缀,调整零的显示规则,适合企业固定财务格式
方法三 TEXT 格式快速简易大写 不推荐正式财务
简易写法 =TEXT (A2,"[DBNum2]")
这个方法只能单纯把数字转中文大写,不会自动添加元角分单位,也不会自动加整字,只适合临时查看,正式票据不能直接使用,很多用户容易混淆这个简易方法和标准财务大写,这点需要区分清楚
常见错误排查对照表
| 错误现象 | 原因 | 解决办法 |
|---|---|---|
| 公式报 value 错误 | 原始金额是文本数字 | 选中金额列,转为数值格式之后重新转换大写 |
| VBA 函数打开之后失效 | 文件保存为 xlsx 格式 | 另存为 xlsm 启用宏格式,保存数字金额转换成大写自定义函数 |
| 连续多个零显示多余零字 | 基础 DBNum2 公式零合并逻辑不足 | 更换优化版嵌套公式或者修改 VBA 代码 |
| 负数金额没有负号 | 公式没有增加 ABS 和负号判断 | 在公式外层增加负数判断,完成负数数字金额转换成大写 |
| 只有整数没有角分自动写整 | IF 判断逻辑缺失 | 补充判断,小数全部为零的时候末尾输出元整 |
把数字金额转换成大写,临时一次性使用优先选择无宏嵌套公式,不需要改动文件格式,长期高频财务业务推荐 VBA 自定义函数,简易 TEXT 格式只适合预览不能用于正式单据,操作前确认金额单元格是数值类型,测试大额小数零值负数这几种边界数据,确认元角分和整字符合财务规范,后续可以根据单据要求自行修改公式内文字。
【常见问题】
问题 1 excel 中怎么把数字金额转换成大写,xlsx 文件可以直接用 VBA 吗
回答 1 excel 中怎么把数字金额转换成大写的时候,普通 xlsx 文件不支持保留宏,使用 VBA 实现数字金额转换成大写,必须另存为 xlsm 启用宏工作簿,否则下次打开自定义函数就会失效。
问题 2 excel 中怎么把数字金额转换成大写,TEXT 函数能不能直接生成带元角分
回答 2 excel 中怎么把数字金额转换成大写,单纯 TEXT 搭配 DBNum2 只能转换数字本身,不会自动添加元角分单位,想要标准财务格式的数字金额转换成大写,需要使用嵌套 IF 公式或者 VBA 自定义函数。
问题 3 excel 中怎么把数字金额转换成大写,为什么会出现 value 报错
回答 3 excel 中怎么把数字金额转换成大写出现 value 报错,一般是原始金额单元格是文本格式,不是数值,把金额区域转换为数值之后,再执行数字金额转换成大写就可以正常运算。
问题 4 excel 中怎么把数字金额转换成大写,负数金额可以显示负号吗
回答 4 excel 中怎么把数字金额转换成大写支持负数处理,公式外层增加 ABS 取绝对值,前面增加负号文字,就可以实现负数的数字金额转换成大写,显示负某某元整。
【免责申明】
本文内容基于桌面版 Excel 通用函数和 VBA 逻辑讲解,不同版本 Excel 对 DBNum2 格式代码以及宏功能支持存在差异,WPS 表格 VBA 部分功能和微软 Excel 存在区别,所有公式代码仅作为学习参考,正式财务票据使用前请核对财务规范,本文不对因为公式代码错误造成票据金额书写失误带来的损失承担责任。


