ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 批量给整段或几段文字中的数字添加千分符

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-3-15 12:19 | 显示全部楼层 |阅读模式
本帖最后由 wshcw 于 2017-3-15 12:27 编辑

excel中批量给整段或几段文字中的数字添加千分符,文字不固定。VBA代码如何写?
如:A1单元格中输入:
全年医疗收入4318794.27元,财政补助收入3810756.14元;全年总收入8129550.41元。全年总支出6879391.67元,医疗卫生支出5447014.98元,其中:医疗支出4260503.86元,公共卫生支出1186511.12元,基建设备补助支出1432376.69元。本期结余1471583.67元,结余分配1128781.55元。
    ①废旧品款等直接冲减支出,如2013年7月第4#凭证2212.10元;9月第3#凭证2663.70元;12月第4#凭证冲减招待费1500.00元,交通费、车辆用燃料费756.4元,车辆维修费1500.00元,印刷费570元。
    ②拨入就业见习生培训费冲减支出,如2013年7月3#凭证9000.00元。
    ③卫生院劳务收入部分冲减支出24485.00元(2013年8月14#凭证)
    ④冲减网购药款和卫生材料款两笔,分别为42437.05元和96314.90元(2013年8月16#凭证)

   
如何批量给数字添加千分符,实现象WORD中的那样,能批量给数字添加千分符。

TA的精华主题

TA的得分主题

发表于 2017-3-15 13:29 | 显示全部楼层
供参考
  1. Sub 数字批量添加千分符()
  2.     Dim myRng As Range, myV$, i%, myV1$
  3.     Set regex1 = CreateObject("VBSCRIPT.REGEXP")    'RegEx为建立正则表达式
  4.     With regex1
  5.         .Global = True    '设置全局可用
  6.         .Pattern = "\d{4,}?(?=[\.元])"
  7.     End With
  8.     '--------------------------------------------------
  9.     For Each myRng In Selection
  10.         myV = myRng.Value
  11.         Set c = regex1.Execute(myV)
  12.         If c.Count > 0 Then
  13.             For i = 0 To c.Count - 1
  14.                 myV1 = c.Item(i).Value
  15.                 myV = Replace(myV, myV1, Format(myV1, "#,##"))
  16.             Next i
  17.             myRng.Value = myV
  18.         End If
  19.     Next

  20. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-3-15 13:57 | 显示全部楼层
学习了!
特殊情况时有个小问题,如:
③卫生院劳务收入部分冲减支出2013.00元(2013年8月14#凭证),会转换成
③卫生院劳务收入部分冲减支出2,013.00元(2,013年8月14#凭证)

TA的精华主题

TA的得分主题

发表于 2017-3-15 14:01 | 显示全部楼层
正则太好用了,我自己写一个稍微复杂点的挺不容易的,羡慕熟练使用正则表达式的版友。

TA的精华主题

TA的得分主题

发表于 2017-3-15 14:34 | 显示全部楼层
半百 发表于 2017-3-15 13:57
学习了!
特殊情况时有个小问题,如:
③卫生院劳务收入部分冲减支出2013.00元(2013年8月14#凭证),会 ...

按道理应该不会
我这测试过没有出现这种情况 QQ拼音截图未命名.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-3-15 14:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

优秀作品,感谢帮助,解决大问题了。

TA的精华主题

TA的得分主题

发表于 2017-3-15 15:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
huanglicheng 发表于 2017-3-15 14:34
按道理应该不会
我这测试过没有出现这种情况

呵呵,您没注意我说的特殊情况,就是遇上要转换的金额与其它不需转换的数字相同时,如上面说的2013.00元和2013年,当然,通常情况下可能没这么巧合,特别在一个单元格中。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-3-16 09:44 | 显示全部楼层
假如,万元与元混用呢?如:
全年医疗收入4318794.27万元,财政补助收入3810756.14万元;全年总收入8129550.41万元。全年总支出6879391.67万元,医疗卫生支出5447014.98万元,其中:医疗支出4260503.86万元,公共卫生支出1186511.12万元,基建设备补助支出1432376.69万元。本期结余1471583.67万元,结余分配1128781.55万元。
    ①废旧品款等直接冲减支出,如2013年7月第4#凭证2212.10元;9月第3#凭证2663.70元;12月第4#凭证冲减招待费1500.00元,交通费、车辆用燃料费756.4元,车辆维修费1500.00元,印刷费570元。
    ②拨入就业见习生培训费冲减支出,如2013年7月3#凭证9000.00元。
    ③卫生院劳务收入部分冲减支出24485.00元(2013年8月14#凭证)
    ④冲减网购药款和卫生材料款两笔,分别为42437.05元和96314.90元(2013年8月16#凭证)
代码是不是要作小调整?

TA的精华主题

TA的得分主题

发表于 2017-3-16 09:49 | 显示全部楼层
\d{4,}?(?=[\.元万])

把万这个字符也加入正向预搜就可以。如上。

点评

赞!完美解决了,谢谢!  发表于 2017-3-16 12:35

TA的精华主题

TA的得分主题

发表于 2017-3-16 10:29 | 显示全部楼层
半百 发表于 2017-3-15 15:30
呵呵,您没注意我说的特殊情况,就是遇上要转换的金额与其它不需转换的数字相同时,如上面说的2013.00元 ...

确实存在这种问题,看来要用起始位置和宽度来定位
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-26 14:51 , Processed in 0.041758 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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