【Excel VBA 编程】批量操作:从一段文本中快速提取多个金额数据并汇总

目录

引言

问题的分析与设计

正则表达式提取数据

读取数据并求和

代码入口设计

代码实现

运行结果

回顾总结


引言

如下表格是一批等待报销的数据信息,按照员工信息存储,并且无论一名员工有多少要报销的数据全部都存放在一起,即一个单元格中,也就是B列报销费用。我们本期的需求就是从这些报销费用中提取出相关金额,并按照员工汇总后输出到C列保存

如果手工粘贴复制再汇总的话,的确有点慢,还容易出错。那么本期就教大家一招,学会了一个按钮立刻出结果,又快又准大家都满意

问题的分析与设计

正则表达式提取数据

结合手工操作的顺序和过程,想实现VBA自动化,就需要用编程的方式实现数据的提取,能实现这个功能最直接的方式就是正则表达式,想到这一点任务基本上就完成了大半。

由于本需求的数据分为两种:整数和小数(数字中间含有小数点),所以不能单纯的使用\d获取数字,否则含有小数点的数值就被一分为二了。那么正则表达式的匹配规则要怎么写呢?有以下三种情况

  1. 匹配任意小数‌:可以使用表达式 \d+\.\d+ 来匹配形如“123.45”的小数。这里的 \d+ 表示一个或多个数字,\. 表示小数点,\d+ 表示一个或多个数字。
  2. ‌匹配整数部分为0的小数‌:可以使用表达式 0\.\d+ 来匹配形如“0.12”的小数。这里的 0\. 表示0和小数点,\d+ 表示一个或多个数字。
  3. ‌匹配负数小数‌:可以使用表达式 -?\d+\.\d+ 来匹配形如“-123.45”的负数小数。这里的 -? 表示负号可以出现也可以不出现,\d+ 表示一个或多个数字,\. 表示小数点,\d+ 表示一个或多个数字‌

结合本期的数据特点,使用方式一比较准确,如果确实只想提取类似0.89这类整数部分为0的数据,那么就选方式二

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wei1019

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值