ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创]使用域自动填充功能完成人民币金额大写

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2006-7-11 06:26 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

这是《Word非常接触》一书中的自动填充人民币金额大写的域代码,我把它贴出来,希冀对大家有所帮助、裨益。

金额大写中,对于整数金额,可以直接通过【插入】/【数字】命令,在打开的【数字】对话框中选取为“壹,贰,叁…”数字类型(设置数字格式)即可实现。对于小数部分,原理也是设置数字格式,只是把角分数据提取出来后再设置其格式。

金额大写转换的域代码:

{ SET Data { ={ Quote "A{ ={ SEQ Z }+1 }" } } }{ SET JinE { =ABS(Data) \#"0.00" } }{ SET Yuan { =INT(JinE) } }{ SET Jiao { =INT(JinE*10-Yuan*10) } }{ SET Fen { =INT(JinE*100-Yuan*100-Jiao*10) } }{ IF Data < 0 "" "" }{ IF Yuan = JinE "{ =Yuan \*CHINESENUM2 }圆整" { IF Fen = 0 "{ =Yuan \*CHINESENUM2 }{ =Jiao \*CHINESENUM2 }角整" { IF Jiao = 0 "{ =Yuan \*CHINESENUM2 }{ =Fen \*CHINESENUM2 }" "{ =Yuan \*CHINESENUM2 }{ =Jiao \*CHINESENUM2 }{ =Fen \*CHINESENUM2 }" }} }

说明:

①可以将该嵌套域代码保存于自动图文集中以方便调用。

②可在单元格中填充该域代码。

③具有正负数自动识别功能。

④自动四舍五入。

⑤最大金额绝对值为214 748 364 7

有兴趣的朋友可以替我解释一下各域代码的含义,此处略。

  0HUN9P8l.rar (8.31 KB, 下载次数: 11394)



[此贴子已经被作者于2006-7-11 6:27:22编辑过]

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2006-7-11 06:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

老大利害。坐沙发。

[em17][em17]

TA的精华主题

TA的得分主题

发表于 2006-7-11 10:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
学习学习再学习

TA的精华主题

TA的得分主题

发表于 2006-7-11 12:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

为便于大家学习,我来给守柔的域代码注释一下:

{ SEQ Z }      取得一个以“Z”为标签的编号域

{ ={ SEQ Z }+1 }  为编号域起始数+1,单元格计算从A2开始

{ Quote "A{ ={ SEQ Z }+1 }" }   转换为单元格地址,动态引用行标

{ ={ Quote "A{ ={ SEQ Z }+1 }" } }   取得对于该单元格地址数据的引用

{ SET Data { ={ Quote "A{ ={ SEQ Z }+1 }" } } }   将动态单元格数据赋值给“Data”书签域或称为变量名

{ =ABS(Data) \#"0.00" }       为“Data”取绝对值并设置数据格式为保留两位小数,自动四舍五入

{ SET JinE { =ABS(Data) \#"0.00" } } { =ABS(Data) \#"0.00" }的结果赋值给“JinE”书签域

{ SET Yuan { =INT(JinE) } }       将取整后的金额数据赋值给“Yuan”书签域

{ SET Jiao { =INT(JinE*10-Yuan*10) } }   将金额的角值赋于“Jiao”书签域

{ SET Fen { =INT(JinE*100-Yuan*100-Jiao*10) } }  将金额的分值赋于“Fen”书签域

{ IF Data < 0 "" "" }   如果“Data”值(即单元格数据)小于0,显示为“负”,否则为“”(空空)

{ IF Yuan = JinE "{ =Yuan \*CHINESENUM2 }圆整" }      如果没有角分,即数据取整前后相等,则为“圆整”形式

{ IF Fen = 0 "{ =Yuan \*CHINESENUM2 }{ =Jiao \*CHINESENUM2 }角整" }  如果分值为0,则域结果为“圆角整”形式

{ IF Jiao = 0 "{ =Yuan \*CHINESENUM2 }{ =Fen \*CHINESENUM2 }" "{ =Yuan \*CHINESENUM2 }{ =Jiao \*CHINESENUM2 }{ =Fen \*CHINESENUM2 }" }    如果角值为0,则域结果为“圆分”形式,否则为“圆角分”形式

如果说人民币金额大写本身不是特别难,只是繁些而已,而域代码{ ={ Quote "A{ ={ SEQ Z }+1 }" } } 则是整个代码的灵魂和精华所在,通过它,用户可以直接复制整个域代码,更新后将自动取得所有相应单元格的大写数据,即自动动态填充单元格域代码(动态引用单元格地址)。

Word中动态引用单元格地址,我只看到守柔有两个贴子中,而这个更全面到位,应该是首创,所以,支持一下守柔。

不知我这样分析得对不对,请守柔评判。

TA的精华主题

TA的得分主题

发表于 2006-7-11 22:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢守柔,收藏学习。

TA的精华主题

TA的得分主题

发表于 2006-7-22 10:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
学习中

TA的精华主题

TA的得分主题

发表于 2006-7-24 09:44 | 显示全部楼层
感谢感谢再感谢;握手握手再握手;敬礼敬礼再敬礼;努力努力再努力!!!

TA的精华主题

TA的得分主题

发表于 2006-7-26 10:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
高手就是不一样呀。学习下了。

TA的精华主题

TA的得分主题

发表于 2006-7-26 16:52 | 显示全部楼层

TA的精华主题

TA的得分主题

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

本版积分规则

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

GMT+8, 2024-12-25 16:20 , Processed in 0.041705 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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