小伙伴们在工作当中或多或少会遇到需要在字符串中提取数字的需求,这时函数显得较为短板,没有合适的函数供使用,不过我们可以利用VBA+正则的功能去实现这一需求,请看下文。
熟悉飞机的小伙伴都知道飞机上分为很多舱位,各舱位座位数不一样,如下图A列所示,字母代表舱位,数字代表舱位的座位数,这里需要获取各飞机总座位数为多少。整体思路是利用正则表达式提取字符串中的数字,再将数字相加求和返回到对应单元格中。例如A2单元格,【C17Y166】正则提取数字【17,166】相加17+166赋值给B2单元格完成。
按【Alt+F11】,或者【开发工具】—【Visual Basic】调出代码视图界面,选择【ThisWorkbook】右键—【插入(N)】—【模块(M)】,输入以下代码。
除代码中青色字体注释外,还需注意以下几点:
1、这里的‘re’代表匹配模式,‘\d’表示数字,‘+’代表重复一次或者多次,对正则感兴趣的小伙伴可自行了解下,每种语言的正则表达式大同小异,掌握最常用的几个就可以了;
2、Execute将匹配模式作用到字符串上,如Execute(J8W23Y120)得到的结果即为(8,23,120),然后再用FOR循环将数字相加返回最后的总座位数;
3、每处理完成一个单元格后,‘i’值需要置0,重新累加;
4、‘j’必须定义申明为对象或者不申明,不能定义成数值型。
输入完代码之后,按【F5】或者点击工具栏上的运行按钮运行程序,提取单元格中的数字并相加的工作就完成啦~
最终结果如下图,可以发现各飞机的总座位数已被求出。
以上就是利用VBA提取数字的全过程,是不是较为便捷,你学会了吗?小伙伴们在执行的过程中如遇到什么问题,欢迎咨询、探讨~
领取专属 10元无门槛券
私享最新 技术干货