ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] [开_118][已结}结贴在1楼]大写金额逆转换为数字金额

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-7-23 21:42 | 显示全部楼层 |阅读模式
通过大家的参与,拓展了思路,一个好的主题,没有大家参与交流思路是写不出精妙的公式,自然也称不上好贴。现将较优的公式挑选至一楼,方便大家查阅.
一、适用于十万元内大写逆转换为数字的公式  
适用于十万元内大写逆转换为数字的公式,只将经典公式结题如下:
x.f.zhao(14楼,通用公式,共121字)
=SUM(TEXT(FIND(MID(0&A3,FIND(MID("万仟佰拾元角分",ROW($1:8),1),A3&"万仟佰拾元角分"),1),"0整分万仟佰拾零壹贰叁肆伍陆柒捌玖")-8,"0;!0")*10^(5-ROW($1:8)))
wshcw(24楼,EXCEL2007版公式共98字)         
=SUM(IFERROR(FIND(MID(A3,FIND(MID("分角元拾佰仟万",ROW($1:8),1),A3)-1,1),"壹贰叁肆伍陆柒捌玖"),)*10^(ROW($1:8)-3))

二、liuzj2s网友的公式最通用(37楼,适用于1000亿以内,03版的).
=IF(COUNT(FIND("亿",A2)),SUM(TEXT(FIND(MID(A2,FIND({"亿","拾","佰","仟"},A2&"整拾佰仟")-1,1),"拾佰仟整壹贰叁肆伍陆柒捌玖")-4,"0;!0")*10^{8,9,10,11}*(FIND({"亿","拾","佰","仟"},A2&"拾佰仟")<=FIND("亿",A2))))+IF(COUNT(FIND("万",A2)),SUM(TEXT(FIND(MID(A2,FIND({"万","拾","佰","仟"},A2&"整拾佰仟",IF(FIND("亿",A2&"亿")<LEN(A2),FIND("亿",A2),1))-1,1),"拾佰仟整壹贰叁肆伍陆柒捌玖")-4,"0;!0")*10^{4,5,6,7}*(FIND({"万","拾","佰","仟"},A2&"拾佰仟",IF(FIND("亿",A2&"亿")<LEN(A2),FIND("亿",A2),1))<=FIND("万",A2))))+SUM(TEXT(FIND(MID(MID(A2,MAX((FIND({"万","亿"},A2&{"万","亿"})<LEN(A2))*FIND({"万","亿"},A2&{"万","亿"}),1),99)&"分角元拾佰仟",FIND({"分","角","元","拾","佰","仟"},MID(A2,MAX((FIND({"万","亿"},A2&{"万","亿"})<LEN(A2))*FIND({"万","亿"},A2&{"万","亿"}),1),99)&"分角元拾佰仟")-1,1),"拾佰仟万亿元角分整壹贰叁肆伍陆柒捌玖")-9,"0;!0")*10^{-2,-1,0,1,2,3})


[ 本帖最后由 wshcw 于 2009-8-13 17:31 编辑 ]

大写金额转数字.rar

30.04 KB, 下载次数: 185

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-7-23 21:54 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-7-23 22:10 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-7-25 09:04 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-7-25 11:40 | 显示全部楼层
=SUM(IF(ISERR(FIND({"万";"仟";"佰";"拾";"元";"角";"分"},A2,1)),0,MATCH(MID(A2,FIND({"万";"仟";"佰";"拾";"元";"角";"分"},A2,1)-1,1),TEXT(ROW($1:$9),"[DBNUM2]"),))*(10^(7-ROW($1:$7))))/100
......

[ 本帖最后由 wjzwang 于 2009-7-25 16:36 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-7-25 23:32 | 显示全部楼层
原帖由 wjzwang 于 2009-7-25 11:40 发表
=SUM(IF(ISERR(FIND({"万";"仟";"佰";"拾";"元";"角";"分"},A2,1)),0,MATCH(MID(A2,FIND({"万";"仟";"佰";"拾";"元";"角";"分"},A2,1)-1,1),TEXT(ROW($1:$9),"[DBNUM2]"),))*(10^(7-ROW($1:$7))))/100
......

不错,已大大简化到172字,再简可能就是160字以下了.

TA的精华主题

TA的得分主题

发表于 2009-7-26 04:53 | 显示全部楼层
=SUM((FIND(MID(A2,FIND(MID("万仟佰拾元角分",COLUMN(A:G),1),A2&"零万零仟零佰零拾零元零角零分")-1,1),"零壹贰叁肆伍陆柒捌玖")-1)*10^(5-COLUMN(A:G)))

TA的精华主题

TA的得分主题

发表于 2009-7-26 05:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
根据wshcw兄题目的数据,5、7楼公式是可以的。但都没考虑:叁万元整、肆仟元整、玖百元整、贰拾元整等情况。
=SUM((FIND(MID(SUBSTITUTE(A2,"元",IF(COUNT(FIND({"万";"仟";"百";"拾"}&"元",A2)),"零元","元")),FIND(MID("万仟佰拾元角分",COLUMN(A:G),1),SUBSTITUTE(A2,"元",IF(COUNT(FIND({"万";"仟";"百";"拾"}&"元",A2)),"零元","元"))&"零万零仟零佰零拾零元零角零分")-1,1),"零壹贰叁肆伍陆柒捌玖")-1)*10^(5-COLUMN(A:G)))

红字的部分定义为名称,字符就可以在220以内。

不过,既然定义了名称,不知道怎么算字符?比如整个公式定义为名称x,那算1个?

[ 本帖最后由 gouweicao78 于 2009-7-26 05:37 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-7-26 09:40 | 显示全部楼层
确实没有考虑周全,不过狗尾草版主早上四五点还在上班工作,可真辛苦啊,是不是有三倍加班费?

TA的精华主题

TA的得分主题

发表于 2009-7-26 10:31 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-28 01:48 , Processed in 0.051136 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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