我第一次深切体会到这痛点,是刚工作那会儿。每个月报销餐费、打车费,手里一堆发票,得往 Excel 里敲小写金额,然后旁边一栏手写大写。天知道我有多痛恨写大写数字!那些字儿笔画多,又得一个挨一个挤着写,眼睛都快看花了。一块五毛钱,得写“壹元伍角整”,五毛零三分,得写“伍角零叁分”。稍微一走神,角写成元,分写成角,得,整张单子都得重来。那个时候啊,真恨不得有台打印机能直接把大写印上去。
后来发现,咦?Excel 这玩意儿这么牛,难道就没个办法自动把小写金额变成大写汉字吗?心里燃起一丝希望。开始在网上瞎捣鼓,搜“Excel 金额大写自动生成”。结果蹦出来一堆五花八门的说法。
最开始看到的是那种,教你在单元格里敲一个长长的公式。当时看着就头大,什么TEXT(A1,"[DbNum2][$-804]G/通用格式元;[红色][DbNum2][$-804]G/通用格式元")&IF(ISPR(A1-INT(A1)),IF(INT(A1*10)-INT(A1)*10=0,"",TEXT(INT(A1*10),"[DBNum2]拾"))&IF(ROUND(A1*100,0)-INT(A1*10)*10=0,"",TEXT(ROUND(A1*100,0)-INT(A1*10)*10,"[DBNum2]分")),"整")
——妈呀,这一串儿跟天书似的!弯弯绕绕的,中间还带点颜色判断,反正当时一看就懵了。硬着头皮照着敲了一遍,稍微输错个标点或者字母,直接 #VALUE!
或者 #NAME?
。那种挫败感,真是…… 想把电脑砸了的心都有。而且这个公式只管小数点前后的整数和角分,遇到零头什么的,处理起来还不太完美,有时候“零”的位置不对劲。还得手动去调整,一点没省事儿。
后来又发现一种方法,说是利用 Excel 的单元格格式。选中单元格,右键,“设置单元格格式”,然后跑到“数字”那一栏,选“特殊”或者“自定义”。自定义里头输入一个特定的格式代码,比如 [DBNum2][$-804]General
。据说就能让小写金额显示成大写。这个听起来好像简单点?试了。结果呢?确实显示成大写了,比如输个 123.45,它可能显示成“壹佰贰拾叁点肆伍”。问题是,这只是显示格式变了,单元格里实际的值还是那个小写数字 123.45。你要是拿这个单元格去做计算,还是按 123.45 算。这跟我要的把大写字儿独立放在旁边一列的需求完全不符啊!而且,“点肆伍”这种说法也不对,我们正常写金额大写,小数点后面是说“角”和“分”的,得是“肆角伍分”。这种方法,只能在显示的时候过过眼瘾,一点不实用。
摸索来摸索去,终于找到了一点门道,那会儿感觉就像 discovery 新大陆!原来 Excel 里头有个叫 VBA 的东西,全称是 Visual Basic for Applications。听着挺高大上的,其实就是一段小程序,可以给 Excel 增加新功能。很多热心网友或者大神们,早就写好了把小写金额变大写的 VBA 代码。
这个方法相对来说有点技术含量,但一旦学会了,那真是一劳永逸!你需要打开 Excel 的开发者工具(如果没看到,需要在选项里头勾出来),然后插入一个模块,把那段神奇的 VBA 代码粘贴进去。代码通常会定义一个自定义函数,名字可能是 RMB
或者 ConvertAmount
之类的。比如,一段常见的代码长这样(当然实际的代码会更长更严谨,处理各种边界情况):
vba
Function RMB(n)
' ... (这里是处理逻辑,省略)
' 把数字 n 转换成人民币大写
' ...
RMB = result_string ' 返回转换后的大写字符串
End Function
把这段代码放进模块后,关掉 VBA 编辑器,回到你的工作表里,就可以像使用 Excel 内置函数一样调用它了!比如,你的小写金额在 A1 单元格,你在旁边 B1 单元格输入 =RMB(A1)
,回车!铛铛铛!A1 里头的小写金额,“1234.56” 立马在 B1 里变成了“壹仟贰佰叁拾肆元伍角陆分”!那一瞬间,心花怒放啊!那种“啊,终于搞定了!”的快感,简直难以形容。
这种 VBA 方法的好处是显而易见的:自动化程度高,你只需要输入小写金额,大写自动生成;准确性高,只要代码写得对,处理各种情况(有分有角、只有元、只有角分、金额为零等等)都很规范;而且这个函数可以拖拽填充,批量转换一大堆金额,效率蹭蹭往上涨。再也不用一个字一个字写,一个字一个字校对了。
当然,VBA 方法也有它的小门槛。首先你得知道怎么打开开发者工具,怎么插入模块,怎么复制代码。对于完全没接触过编程的人来说,可能有点摸不着头脑。而且网上流传的代码版本很多,有些代码可能处理某些特殊情况(比如负数、特别大的金额)不太完美,需要自己甄别或者微调。我当时也是摸索了好几次,才找到一段自己觉得用着最顺手、最准确的代码。有时候复制的代码里有个别字符不对,运行起来就会出错,还得瞪大眼睛一行一行对照检查,那个痛苦啊,谁经历谁知道。
除了函数和 VBA,还有没有更傻瓜式的办法呢?当然有!有些 Excel 插件或者已经做好的宏文件就提供了这个功能。你只需要下载安装插件,或者启用别人分享的带宏的文件,可能在菜单栏里就会多出一个按钮,点一下,选中金额区域,就能自动转换。这种方法对于完全不想碰代码、连公式都不想敲太复杂的“小白”用户来说,可能是最友好的。操作简单,点点鼠标的事儿。
但是,用插件或者别人的宏文件也得注意点。第一,安全性问题。来路不明的宏文件可能会携带病毒,或者做一些你不希望的操作,所以下载和使用时一定要谨慎。Excel 在打开带宏的文件时通常会弹警告,告诉你“宏已被禁用”,需要你手动“启用内容”。启用前最好确认文件来源可靠。第二,通用性。有些插件或宏可能只能在特定版本的 Excel 上运行,或者跟其他插件冲突。而且一旦换了电脑或者发给别人一个不带宏的文件,这个功能就失效了。别人还得自己想办法转换。
回想这一路走来,从最开始的手写大写写到手抽筋,到对着复杂公式一脸懵逼,再到发现 VBA 这个强大工具,以及最后了解到的插件宏等各种“捷径”,感觉就像打通了任督二脉。现在处理带金额的表格,心里特别有底。拿到一个报销单汇总表,小写金额哗啦啦输进去,旁边的大写列一个 =RMB(A2)
,然后鼠标往下一拉,齐活!那种效率,那种成就感,是之前一个字一个字抠大写时完全无法想象的。
这个金额大小写转换功能,看似是个小需求,但它折射出的其实是自动化的力量,是工具的力量。手工重复劳动效率低下又容易出错,而借助 Excel 提供的各种手段,无论是内置函数、VBA 编程,还是第三方插件,都能把我们从繁琐的事务中解放出来,让我们更专注于那些真正需要人脑去思考、去判断的工作。别小看这个转换功能,它可能每年能帮你省下好几个小时,少犯几十个错误。特别是在财务、行政这些跟钱打交道的岗位上,这点小技巧,关键时候能帮大忙,让你在同事和领导面前显得更专业、更高效。
所以啊,如果你还在为 Excel 里的金额大写犯愁,别再一个字一个字敲了。去学学那个 VBA 函数吧!虽然刚开始可能有点费劲,但相信我,一旦掌握了,你会感谢自己当初付出的那点点努力。那感觉,就像手里突然多了个趁手的兵器,看啥不顺眼的重复劳动,都想试试能不能用 Excel 自动化给它“一键解决”!
话说回来,Excel 这玩意儿真是个宝藏啊,光一个金额大小写转换,就能玩出这么多花样。还有多少隐藏的功能和技巧等着我们去挖掘呢?想想都觉得有点兴奋。
发表回复