可以参考这个
鉴于EXCEL本身提供将数字转换为大写表示的功能根本不能正常应用在实际投标或财务应用之中,所以要自己建设,暂时找到了三种实现途径,经过测试均功能正常,还有一种是在书上找到的,懒得KEYIN进来了,反正也差不多了。
方法1,通过在EXCEL表格框(例如在“B1”单元)中直接输入以下公式:
=IF(A1<0,"金额为负无效",
(IF(OR(A1=0,A1=""),"(人民币)零元",
IF(A1<1,"(人民币)",
TEXT(INT(A1),"[dbnum2](人民币)G/通用格式")&"元"))))&
IF(
(INT(A110)-INT(A1)10)=0,
IF(INT(A1100)-INT(A110)10=0,"","零"),
(TEXT(INT(A110)-INT(A1)10,"[dbnum2]")&"角"))
&IF(
(INT(A1100)-INT(A110)10)=0,
"整",
TEXT((INT(A1100)-INT(A110)10),"[dbnum2]")&"分")
然后在“A1”中输入数字,就可看到效果。
公式并非本人制作,此为本人学习及理解日记。
总之,先粘贴具体实现公式:
=SUBSTITUTE(SUBSTITUTE(IF(F9<0,"负","")&TEXT(TRUNC(ABS(ROUND(F9,2))),"[DBNum2]")&"圆"&IF(ISERR(FIND("",ROUND(F9,2))),"",TEXT(RIGHT(TRUNC(ROUND(F9,2)10)),"[DBNum2]"))&IF(ISERR(FIND("0",TEXT(F9,"000"))),"角","")&IF(LEFT(RIGHT(ROUND(F9,2),3))="",TEXT(RIGHT(ROUND(F9,2)),"[DBNum2]")&"分",IF(ROUND(F9,2)=0,"","整")),"零圆零",""),"零圆","")
解析公式前,先了解其中用到的一些函数。
substitute函数 作用为 替换单元格内的字符串,可指定。
公式如下:=substitute(text“要替换的值,可指定单元格”,old_text“要被替换的旧字符串”,new_text“新的字符串内容”,[instance_num]“指定更换字符串的位置,如果不写则默认全转换”)
一般用于大部分格式相同时的单元格值替换,其实跟Ctrl+H的效果差不多,不过函数胜在可以嵌套使用,例子如下:
text函数 作用为 将数值格式的内容 替换为 文本型格式的内容。
公式如下: =text(value“要替换的值,可指定单元格”,format_text“指定新的格式,等同于自定义格式”)
一般可以用来规范文本或者设置特定的日期显示格式以及增加特定的符号等,例子如下:
trunc函数 作用为 直接截取数值型内容。
公式如下:=trunc(number“要替换的数值,可指定单元格,限定数值型单元格”,number_digits“可指定位数,不填则默认为0”)
这个函数的概念不存在四舍五入,如同字符串一般只会直接截取,例子如下:
abs函数 作用为 将带有符号的数值替换为绝对的数值型内容。
公式如下:=abs(number“用于设置公式,也可不设置”)
例子如下:
[DBNum2]函数 作用为 excel内建函数,将数字转换为中文大写。
相同效果但显示不同的内建函数还有[DBNum1],[DBNum3]
一般嵌合在其他函数内使用,比如text函数。
公式如下:=text(value,[DBNum2])
例子如下:
iserr函数 作用为 检测除#N/A以外的错误值。
公式如下:=iserr(value“指定单元格,也可嵌套函数”)
一般嵌合在其他函数内使用,比如if函数。
例子如下:
公式解析:
当数字为负数时,则在繁体汉字前追加“负”字,否则不添加。用abs函数将文本型数值替换成数值型数值,再用trunc函数直接截取整数后,使用text函数将数值替换成繁体大写。
将“角”这一位数单独处理。
使用find函数找出单元格内的数值是否具有“”这一符号。
如果有则显示值为错误并进入错误的分支项,在错误的分支项中使用(round函数10)将“角”这一位数提取成为整数,并用trunc函数提取所有整数。
再用right函数从右边提取第一位数,通过text函数将此数值替换成为繁体大写。
后面的单位通过if和iserr函数的嵌合判断“”后面是否为零,如果不为零则使用单位“角”,为零则什么都不 *** 作。
最后通过&符号将繁体大写和单位连接在一起。
将“分”这一位数单独处理。
因为繁体大写一般不会使用到小数点后面三位或者更多位数,所以通过round函数将数值限定成两位小数。
PS此函数支持四舍五入算法。
紧接着,使用right函数提取从右边数起第三个字符串,将这个位置的字符串作为left函数的第一起始点。
如果left函数提取的这个字符串刚好等于“”,进入正确的分支项,使用right函数提取右边数起第一个数字。
PS需使用round函数将数值限定成两位小数。
提取出数字后,使用text函数将其转换成大写,并通过&符号直接连接单位“分”。
如果left函数提取的这个字符串不等于“”则进入错误的分支项,通过if函数和round函数的嵌合使用判断“分”这个位置是否具有数值,如果不具有直接进入错误的分支项。
至此,公式主要部分已经解释完毕,剩下后面的部分纯属画龙点睛之作,其实可要,亦可不要。
1若要对字母进行大、小写转换可以使用如下的步骤。
2若要将单元格中的所有字母全部转换为大写形式,可以使用UPPER函数。
公式为
=UPPER(A2)
3若要将单元格中的所有字母全部转换为小写形式,可以使用UPPER函数。
公式为
=LOWER(A2)
4若要将单元格中的所有字母转换为首字母大写,其余字母小写的形式,可以使用PROPER函数。
公式为
=PROPER(A2)
在财务工作中,金额转大写是几乎天天要用到的,在Excel里面通过以下的技巧,轻松的实现。
1、没有小数的数字
对于没有小数的数字,也就是金额具体到元,不计较角和分的,可以使用这种简单方法
选中金额,按CTRL+1,调出自定义单元格格式,在数字里面选择特殊,选择中文大写数字
最终的结果:
上面是技巧法,当然也可以使用Excel中的NUMBERSTRING函数实现
使用=NUMBERSTRING(A1,2)可以得到平时需要的金额大写
如果金额是具体到小数点的,也就是有角和分的,用上述的方法都不得行, 那就需要使用一个通用的公式来进行计算了
=TEXT(INT(A1),"[DBNUM2]")&"元"&TEXT(MID(A1,LEN(INT(A1))+2,1),"[DBNUM2]D角
")&TEXT(MID(A1,LEN(INT(A1))+3,1),"[DBNUM2]D分")&"整"
这个公式就是提取元,角,分,分别用TEXT函数格式化并在一起,其实也可以不用记,直接收藏备用,把里面的A1改成其他的就可以使用了。
你学会了么?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)