ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: cbtaja

[原创] 148字符无缺陷人民币金额大写公式 逆天了!

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-27 20:20 | 显示全部楼层
很多成天需要跟money数字打交道的人,都会保留一个自己信得过的金额大写公式,而不管别人手里的公式有多么的好,他也只会用自己编的。因为这一点上,只有自己一再确认无误的公式才会让他放心。所以,就象9楼指出的那样,有一个人3年之后还会回到论坛来更新一个在别人眼里也许根本就看不上的老公式。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-27 20:27 | 显示全部楼层
各位自己有好公式的(只要能保证准确、无论多少个字,都是好公式),也请晒出来的哟{:soso_e121:}

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-27 22:02 | 显示全部楼层
有下载看过的坛友,对于这个模拟测试表格中的手工答案如有异议,也请发表哦

TA的精华主题

TA的得分主题

发表于 2013-10-27 22:32 | 显示全部楼层
一剑惊心 发表于 2013-10-27 19:49
我见过一个146的公式,但具体是怎么样的我忘了,因为我用不到大写公式

本人也是用 WPS 的 ET ,中文货币自有大写模块,所以对它也就不关心了.

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-29 08:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
丢丢表格 发表于 2013-10-27 22:32
本人也是用 WPS 的 ET ,中文货币自有大写模块,所以对它也就不关心了.

看来国产软件对国人的需求考虑的就是比较周到嘛,正好用来检测一下公式

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-29 21:24 | 显示全部楼层
一楼所列176字公式是在由wshcw发表在百度贴吧Excel吧的171字符公式加以完善得来的。原公式的缺陷仅为金额为0元整时不显示。
该171字符公式为:
  1. =SUBSTITUTE(SUBSTITUTE(IF(-RMB(A2,2),TEXT(A2,";负")&TEXT(INT(ABS(A2)+0.5%),"[dbnum2]G/通用格式元;;")&TEXT(RIGHT(RMB(A2,2),2),"[dbnum2]0角0分;;整"),),"零角",IF(A2^2<1,,"零")),"零分","整")
复制代码
由于wshcw版主认为金额为零元整时不应当显示,所以他故意使公式中包含的一个if函数的第三参数为空白字符串。该公式结构方法和所运用的函数已经相当精细,wshcw版主发表该公式时认为想不到还可以做怎样的精简了。当然,由于我个人认为金额为零元整时也不宜留白,以免票据上的大写金额栏有被他人添加或篡改的可能,所以我把留白的第三参数"零元整"加上去,包含引号共增加5个字符,因此成为176字符。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-31 13:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这个148字公式,转换出来的结果,当金额为不足1元时前面会显示出“零元”。比如¥0.56转换为:零元伍角陆分,¥0.05转换为:零元零伍分;¥0.30转换为零元叁角整。这是美中不足之处,但它仍然完全满足银行有关规定(见附文)的要求,因此是无缺陷的公式。
附:正确填写票据和结算凭证的基本规定
  1. 正确填写票据和结算凭证的基本规定 答:银行、单位和个人填写的各种票据和结算凭证是办理支付结算和现金收付的重要依据,直接关系到支付结算的准确、及时和安全。票据和结算凭证是银行、单位和个人凭以记载帐务的会计凭证,是记载经济业务和明确经济责任的一种书面证明。因此,填写票据和结算凭证,必须做到标准化、规范化,要要素齐全、数字正确、字迹清晰、不错漏、不潦草,防止涂改。
  2. 一、 中文大写金额数字应用正楷或行书填写,如壹(壹)、贰(贰)、叁、肆(肆)、伍(伍)、陆(陆)、柒、捌、玖、拾、伯、仟、万(万)、亿、元、角、分、零、整(正)等字样。不得用一、二(两)、三、四、五、六、七、八、九、十、念、毛、另(或0)填写,不得自造简化字。如果金额数字书写中使用繁体字,也应受理。
  3. 二、 中文大写金额数字到"元"为止的,在"元"之后,应写"整"(或"正")字,在"角"之后可以不写"整"(或"正")字。数字有"分"的,"分"后面不写"整"(或"正")字。
  4. 三、 中文大写金额数字前应标明"人民币"字样,大写金额数字应紧接"人民币"字样填写,不得留有空白。大写金额数字前未印"人民币"字样的,应加填"人民币"三字。在票据和结算凭证大写金额栏内不得预印固定的"仟、佰、拾、万、仟、佰、拾、元、角、分;字样。
  5. 四、阿拉伯小写金额数字中有"0"时, 中文大写应按照汉语语言规律、金额数字构成和防止涂改的要求进行书写。举例如下:
  6. (一)阿拉伯数字中间有"0"时,中文大写金额要写"零"字。如¥1,409.50,应写成人民币壹仟肆佰零玖元伍角。 (二)阿拉伯数字中间连续有几个"0"时,中文大写金额中间可以只写一个"零"字。如¥6,007.14,应写成人民币陆仟零柒元壹角肆分。 (三)阿拉伯金额数字万位或元位是"0",或者数字中间连续有几个"0",万位、元位也是"0",但千位、角位不是"0"时,中文大写金额中可以只写一个零字,也可以不写"零"字。如¥1,680.32,应写成人民币壹仟陆佰捌拾元零叁角贰分,或者写成人民币壹仟陆佰捌拾元叁角贰分;又如¥107,000.53,应写成人民币壹拾万柒仟元零伍角叁分,或者写成人民币壹拾万零柒仟元伍角叁分。 (四)阿拉伯金额数字角位是"0",而分位不是"0"时,中文大写金额"元"后面应写"零"字。如¥16,409.02,应写成人民币壹万陆仟肆佰零玖元零贰分;又如¥325.04,应写成人民币叁佰贰拾伍元零肆分。
  7. 五、阿拉伯小写金额数字前面,均应填写人民币符号"¥"(或草写)。阿拉伯小写金额数字要认真填写,不得连写分辨不清。
  8. 六、票据的出票日期必须使用中文大写。为防止变造票据的出票日期,在填写月、日时,月为壹、贰和壹拾的,日为壹至玖和壹拾、贰拾和叁拾的,应在其前加"零"; 日为拾壹至拾玖的,应在其前加"壹"。如1月15日,应写成零壹月壹拾伍日。再如10月20日,应写成零壹拾月零贰拾日。
  9. 七、票据出票日期使用小写填写的,银行不予受理。大写日期未按要求规范填写的,银行可予受理,但由此造成损失的,由出票人自行承担。
  10. 该文引自中国人民银行会计司编写的最新《企业、银行正确办理支付结算指南》的第114页-第115页。
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-31 12:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
现在贴出我做的148字公式为:
  1. =TEXT(A2+0.5%,";负;负")&TEXT(INT(ABS(A2)+0.5%),"[dbnum2]G/通用格式元")&SUBSTITUTE(SUBSTITUTE(TEXT(RIGHT(RMB(A2,2),2),"[dbnum2]0角0分;;整"),"零角","零"),"零分","整")
复制代码

评分

3

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-31 13:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 cbtaja 于 2013-10-31 13:47 编辑

为了使公式的结果与人们日常的语言习惯一致,即不足1元时前面不显示零元,而直接显示为几角整、几角几分、几分的样式,我修改公式为162字的公式:
  1. =SUBSTITUTE(TEXT(A2+0.5%,";负;负")&TEXT(INT(ABS(A2)+0.5%),"[dbnum2]G/通用格式元;;")&SUBSTITUTE(TEXT(RIGHT(RMB(A2,2),2),"[dbnum2]0角0分;;整"),"零分","整"),"零角",IF(A2^2<1,,"零"))
复制代码
这个公式的结果修正了金额不足1元时转换出的结果前面带有“零元”字样的不足,但金额为0.00元时仅显示为“整”,仍不完全符合人们习惯把0.00元大写为“零元整”的方式,虽然它从票据填写的有关规定来说是无缺陷的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-31 13:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
为了解决这一条0.00元显示为“整”的问题,当时考虑了很久也没有办法,只好在外面再套一个IF函数解决:
  1. =IF(-RMB(A2,2)=0,"零元整",SUBSTITUTE(TEXT(A2+0.5%,";负;负")&TEXT(INT(ABS(A2)+0.5%),"[dbnum2]G/通用格式元;;")&SUBSTITUTE(TEXT(RIGHT(RMB(A2,2),2),"[dbnum2]0角0分;;整"),"零分","整"),"零角",IF(A2^2<1,,"零")))
复制代码
这样一来不仅完全符合了票据填写的有关规定,而且也符合了人们的语言习惯,但是,公式加长到了185字了,反而比前面给出的176字更多了9个字。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-5 01:00 , Processed in 0.045675 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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