ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2013-10-27 16:37 | 显示全部楼层 |阅读模式
{:soso_e133:}逆天消息!——突破150字符!无缺陷!非VBA!EXCEL2003通用!
经极其详细测试,148字符(含等号)无缺陷人民币金额大写公式新鲜出炉!
测试方法、内容见附件EXCEL表格(其中包括对本论坛ldy版主的两条公式160字符以及百度贴吧EXCEL吧中的多条公式的测试)。

卖个关子,暂只先给出一个176字符的“无缺陷”的的公式(其实这个176字符的公式已经够耀眼了,在这个148字符的公式没有诞生之前,几乎就是争夺冠军的有力选手,可惜,现在不是了{:soso_e118:}): 人民币金额大写公式总汇与终极测评.rar (74.56 KB, 下载次数: 358)

176字符、无缺陷公式:
  1. =SUBSTITUTE(IF(-RMB(A2,2),TEXT(A2,";负")&TEXT(INT(ABS(A2)+0.5%),"[dbnum2]G/通用格式元;;")&SUBSTITUTE(TEXT(RIGHT(RMB(A2,2),2),"[dbnum2]0角0分;;整"),"零分","整"),"零元整"),"零角",IF(A2^2<1,,"零"))
复制代码
敬请各位期待“148”明星先生的闪亮登场。。。。。。

未命名.JPG


补充内容 (2016-7-8 22:05):
=IF(A2>-0.5%,,"负")&TEXT(INT(ABS(A2)+0.5%),"[dbnum2]G/通用格式元;;")&SUBSTITUTE(SUBSTITUTE(TEXT(RIGHT(RMB(A2,2),2),"[dbnum2]0角0分;;"),"零分","整"),"零角",IF(A2^2<1,,"零"))

评分

3

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-27 17:02 | 显示全部楼层
       楼上包含有测试公式的表格附件。
    点击表格中的列出的文本公式,可以使公式自动进入测试区(需要启用宏),宏程序将自动把公式结果与手工答案对比,并且列出公式的缺陷类型和项数,结果一目了然。
如果你有自用的公式,也可复制到表格中测试、对比,看看到底有没有漏洞。
表中收录EXCEL吧中一个389字的长公式,该公式的发表者称使用它10余年“未发现”问题,但在本测试中直接显出原形:在所列举的26类容易出现误差甚至错误的检测项目中,它占了其中24种,几乎千疮百孔了!!!
    现在,你还敢用那些你从来没有怀疑过的公式吗?如果不那么放心,那就赶紧来试试吧!

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-27 18:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
金额大写公式测评说明:
1、货币单位可以是元、或圆,不一致的可替换后再测试。
2、无角、分的值按规则可以使用“整”、“正”,不一致的可替换后再测试。
3、如只是大写繁体字与简体字差异引起的不一致的可忽略。这一项需评测者自己手工检查。
4、元和角之间加“零”与不加“零”的写法,各人有不同观点,在不产生歧义的情况下认为都是对的。我个人倾向于不加“零”,除非角位上的值为零,即个人认为:¥10.98,大写为壹拾元玖角捌分,而¥9.08则大写为玖元零捌分。
5、对于万和仟之间加不加零也有不同观点,个人认为:仟进位就是万,因此它们之间不加零时也不会引起歧义,宜不加零,比如:¥1009080.35大写为:壹佰万玖仟零捌拾元叁角伍分;¥1030108.07大写为壹佰零叁万零壹佰零捌元零柒分。
6、对于0元是否显示,本人的观点是:既然转换,则无论什么值都应以大写呈现,而且从严谨的角度来说,票据上有小写金额值的就应填写相应大写金额,避免被修改,因此本人认为零元时公式结果留白的为重要漏洞。

TA的精华主题

TA的得分主题

发表于 2013-10-27 18:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
下面这个用 numberstring 不是更短?
TEXT(INT(ABS(A2)+0.5%),"[dbnum2]G/通用格式元;;")

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-27 19:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
jsxjd 发表于 2013-10-27 18:49
下面这个用 numberstring 不是更短?
TEXT(INT(ABS(A2)+0.5%),"[dbnum2]G/通用格式元;;")

也许会更短,可以考虑尝试一下。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-27 19:37 | 显示全部楼层
text的参数自含4段条件,这是numberstring所比不了的,而且,numberstring不能处理负数,同样需要其它函数辅助。还有numberstring只保留0位小数,用在金额上的精度不够。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-27 19:40 | 显示全部楼层
各位,试过一楼的公式给出的176字公式了吗?请提出点看法吧

TA的精华主题

TA的得分主题

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

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-27 19:57 | 显示全部楼层
这里有一个帖子,提供了一个巨长的公式:762字,其计算结果在正数时完全正确,在负数部分时负号未转换仍显示为“-”,也可视为正确。该贴是在2003年6月发的,而后贴主在三年后的2006年12月再次更新附件的公式,可见一个准确的大写转换公式在他心中的重要性:
http://club.excelhome.net/thread-24562-1-1.html

TA的精华主题

TA的得分主题

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

146字的公式如果无缺陷,我想,它应该不会在论坛中失传。但至今还很是很少见到170字以内而且无缺陷的公式。
就我,好不容易发现了150字以内的好公式,就赶忙发贴要炫一下,那老早前就能精简到146字的,还不早就去赚个精华了?嘿嘿!

点评

短的,不一定都是好的!,计算速度必须要讲究.  发表于 2013-10-27 22:34
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-4 22:42 , Processed in 0.034582 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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