阿菠萝13 发表于 2025-8-7 09:50

EXCEL自带的中文数字格式不符合会计要求,咋整?

大部分时候没问题,但是遇到万位为0且千位不为0、或者亿位为0且千万位不为0、等情况,规范的会计写法里是要加个“零”的,但是EXCEL的中文数字格式里就缺这个“零”,有没有解决方法?



PS:我知道搜狗输入法可以快捷输入符合会计要求的中文数字,但是一来多加一个输入环节就多一分出错的可能性,二来输入进单元格的是文本,无法进行后续计算,所以不考虑用输入法解决



古畑任三郎2015 发表于 2025-8-7 09:53

写个函数呗。。问了下ai
=SUBSTITUTE(SUBSTITUTE(TEXT(INT(A1),"[$-804]G/通用格式元")&TEXT(MID(A1,Find(".",A1&".")+1,1),"[$-804]G/通用格式角")&TEXT(MID(A1,Find(".",A1&".")+2,1),"[$-804]G/通用格式分"),"零角","零"),"零分","整")

starash 发表于 2025-8-7 10:08

本帖最后由 starash 于 2025-8-7 10:13 编辑

哦,是加零啊,楼上那个不知道,我这个是一直在用的,把阿拉伯数字转为会计专用大写汉字数。
=IF(M39<0,"金额为负无效",
(IF(OR(M39=0,M39=""),"零元",
IF(M39<1,"(人民币)",
TEXT(INT(M39),"")&"元"))))&
IF((INT(M39*10)-INT(M39)*10)=0,
IF(INT(M39*100)-INT(M39*10)*10=0,"","零"),
(TEXT(INT(M39*10)-INT(M39)*10,"")&"角"))
&IF((INT(M39*100)-INT(M39*10)*10)=0,"整",
TEXT((INT(M39*100)-INT(M39*10)*10),"")&"分")

自己把M39替换一下。



















阿菠萝13 发表于 2025-8-7 10:08

古畑任三郎2015 发表于 2025-8-7 09:53
写个函数呗。。问了下ai
=SUBSTITUTE(SUBSTITUTE(TEXT(INT(A1),"[$-804]G/通用格式元")&TEXT(MID(A ...

试了下公式,还是缺零

日常读法里确实没这个零,但是会计书写规范里要加这个零

古畑任三郎2015 发表于 2025-8-7 10:15

阿菠萝13 发表于 2025-8-7 10:08
试了下公式,还是缺零

日常读法里确实没这个零,但是会计书写规范里要加这个零 ...

让ai改了下,
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TEXT(INT(A1),"[$-804]G/通用格式元"),"万","万零"),"零仟","零"),"零零","零"),"零元","元")&IF(INT(A1*10)-INT(A1)*10=0,IF(INT(A1*100)-INT(A1*10)*10=0,"整","零"&TEXT(RIGHT(INT(A1*100),1),"[$-804]G/通用格式分")),TEXT(MID(INT(A1*100),LEN(INT(A1*100))-1,1),"[$-804]G/通用格式角")&IF(RIGHT(INT(A1*100),1)=0,"",""&TEXT(RIGHT(INT(A1*100),1),"[$-804]G/通用格式分")))

阿菠萝13 发表于 2025-8-7 11:06

starash 发表于 2025-8-7 10:08
哦,是加零啊,楼上那个不知道,我这个是一直在用的,把阿拉伯数字转为会计专用大写汉字数。
=IF(M39 ...

第4行的 TEXT(INT(A1),"")&"元" 只是把整数部分变成中文大写数字,501000转成中文数字后缺零的问题还是存在

starash 发表于 2025-8-7 11:09

本帖最后由 starash 于 2025-8-7 11:15 编辑

阿菠萝13 发表于 2025-8-7 11:06
第4行的 TEXT(INT(A1),"")&"元"只是把整数部分变成中文大写数字,501000转成中文数字后缺零的 ...
哦,我知道了,你说十万和仟之间加零的问题。确实,现在的要求是要有,我也得改一下。



















lawsherman 发表于 2025-8-7 11:15

推荐换成wps

https://youke1.picui.cn/s1/2025/08/07/68941a221b0fb.png

starash 发表于 2025-8-7 11:20

lawsherman 发表于 2025-8-7 11:15
推荐换成wps

wps在十万和千之间也是不加零的。

lawsherman 发表于 2025-8-7 11:20

本帖最后由 lawsherman 于 2025-8-7 11:21 编辑

你的excel里面有NUMBERSTRING函数没有,参数“2”是会计大写

lawsherman 发表于 2025-8-7 11:26

本帖最后由 lawsherman 于 2025-8-7 11:28 编辑

等下,我看会计规范里面没有要求万位是0的时候,大写必须要加零啊,可加可不加

gdx9900 发表于 2025-8-7 11:34

主楼的这种写法,应该是要结合位数来写的吧,应该不是单独来写的。
比如:50010010=>伍(仟万)零(百万)零(拾万)壹(万)零(仟)零(佰)壹(拾)零(元)零(角)零(分),这种在手写(机打)票据时候是要求空位填零的。
如果只是要转写为大写中文数字直接用上面的公式就好。

阿菠萝13 发表于 2025-8-7 12:50

本帖最后由 阿菠萝13 于 2025-8-7 20:49 编辑

受5楼公式启发,写出了更简单的公式——
数据量不大于8位的话:
=SUBSTITUTE(NUMBERSTRING(A1,2),"万",IF(AND(MOD(INT(A1/10^4),10)=0,MOD(INT(A1/10^3),10)>0),"万零","万"))


数据量不大于12位的话:
=SUBSTITUTE(SUBSTITUTE(NUMBERSTRING(A1,2),
"万",IF(AND(MOD(INT(A1/10^4),10)=0,MOD(INT(A1/10^3),10)>0),"万零","万")),
"亿",IF(OR(AND(MOD(INT(A1/10^8),10)=0,MOD(INT(A1/10^7),10)>0),AND(MOD(INT(A1/10^4),10^4)=0,MOD(INT(A1/10^3),10)>0)),"亿零","亿"))

解释一下,先将数值转为EXCEL内置中文大写数字格式,然后当万位(10^4)为0且千位不为0时:将汉字“万”替换为“万零”、否则照旧;再当亿位(10^8)为0且千万位不为0时、或整个万级为0且千位不为0时:将汉字“亿”替换为“亿零”、否则照旧。目前只考虑到这步,数据量还没大到要考虑兆位(10^12),如果需要考虑的话依葫芦画瓢再嵌套一层即可

顺便说一下,5楼的公式在处理角分时是有问题的,会出现"伍角零分"之类的错误结果,而我主楼里仅仅是考虑将整数转为会计大写,并未考虑元角分这些字的处理


页: [1]
查看完整版本: EXCEL自带的中文数字格式不符合会计要求,咋整?