找回密码
 立即注册
搜索
查看: 947|回复: 12

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

[复制链接]
     
发表于 2025-8-7 09:50 | 显示全部楼层 |阅读模式
大部分时候没问题,但是遇到万位为0且千位不为0、或者亿位为0且千万位不为0、等情况,规范的会计写法里是要加个“零”的,但是EXCEL的中文数字格式里就缺这个“零”,有没有解决方法?



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



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

     
发表于 2025-8-7 09:53 | 显示全部楼层
写个函数呗。。问了下ai
=SUBSTITUTE(SUBSTITUTE(TEXT(INT(A1),"[DBNum2][$-804]G/通用格式元")&TEXT(MID(A1,Find(".",A1&".")+1,1),"[DBNum2][$-804]G/通用格式角")&TEXT(MID(A1,Find(".",A1&".")+2,1),"[DBNum2][$-804]G/通用格式分"),"零角","零"),"零分","整")
回复

使用道具 举报

     
发表于 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),"[dbnum2]")&"元"))))&
IF((INT(M39*10)-INT(M39)*10)=0,
IF(INT(M39*100)-INT(M39*10)*10=0,"","零"),
(TEXT(INT(M39*10)-INT(M39)*10,"[dbnum2]")&"角"))
&IF((INT(M39*100)-INT(M39*10)*10)=0,"整",
TEXT((INT(M39*100)-INT(M39*10)*10),"[dbnum2]")&"分")

自己把M39替换一下。



















评分

参与人数 1战斗力 +1 收起 理由
阿菠萝13 + 1 还有点问题,但是思路有了

查看全部评分

回复

使用道具 举报

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

试了下公式,还是缺零

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

使用道具 举报

     
发表于 2025-8-7 10:15 | 显示全部楼层
阿菠萝13 发表于 2025-8-7 10:08
试了下公式,还是缺零

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

让ai改了下,
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TEXT(INT(A1),"[DBNum2][$-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),"[DBNum2][$-804]G/通用格式分")),TEXT(MID(INT(A1*100),LEN(INT(A1*100))-1,1),"[DBNum2][$-804]G/通用格式角")&IF(RIGHT(INT(A1*100),1)=0,"",""&TEXT(RIGHT(INT(A1*100),1),"[DBNum2][$-804]G/通用格式分")))

评分

参与人数 1战斗力 +1 收起 理由
阿菠萝13 + 1 试了下可行,容我慢慢消化

查看全部评分

回复

使用道具 举报

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

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

使用道具 举报

     
发表于 2025-8-7 11:09 | 显示全部楼层
本帖最后由 starash 于 2025-8-7 11:15 编辑
阿菠萝13 发表于 2025-8-7 11:06
第4行的 TEXT(INT(A1),"[dbnum2]")&"元"  只是把整数部分变成中文大写数字,501000转成中文数字后缺零的 ...

哦,我知道了,你说十万和仟之间加零的问题。确实,现在的要求是要有,我也得改一下。



















本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

     
发表于 2025-8-7 11:15 | 显示全部楼层
推荐换成wps

回复

使用道具 举报

     
发表于 2025-8-7 11:20 | 显示全部楼层

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

使用道具 举报

     
发表于 2025-8-7 11:20 | 显示全部楼层
本帖最后由 lawsherman 于 2025-8-7 11:21 编辑

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

使用道具 举报

     
发表于 2025-8-7 11:26 | 显示全部楼层
本帖最后由 lawsherman 于 2025-8-7 11:28 编辑

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

使用道具 举报

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

使用道具 举报

     
 楼主| 发表于 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楼的公式在处理角分时是有问题的,会出现"伍角零分"之类的错误结果,而我主楼里仅仅是考虑将整数转为会计大写,并未考虑元角分这些字的处理


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-8-17 15:00 , Processed in 0.037133 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表