【Excel VBA 编程】面对一堆杂乱无章的邮寄地址,如何从中快速提取姓名和手机号码?

目录

引言

问题的分析与设计

手机号码提取分析

名字提取分析

代码入口设计

代码实现

运行结果

回顾总结


引言

如下表格中是一批邮寄信息,里面的数据杂乱无章,我们本期的需求就是从这些邮寄信息中提取姓名和手机号码信息,并分别输出到C列和D列中保存

看到这个表格数据,真是一个字“乱”,毫无章法可言,姓名和手机号码顺序杂乱,有的出现在邮寄信息的开始位置,有的又在末尾,还有的在中间位置,如果想要用Excel公式独立解决几乎是不可能的。

那么还有没有办法将这两项提取出来呢?答案是肯定的,现在就教你们一种方法,不但快速而且能准确无误的自动提取出来,一起看看是如何做到的吧?

问题的分析与设计

想解决问题,就首先需要分析数据特点,既然出现的顺利杂乱无章,那么就寻找别的突破口。我们把姓名和手机号码分成两个部分实现,分别去分析它们的数据特点

手机号码提取分析

首先是手机号码,它们呢都有很多共同的特点,比如都是阿拉伯数字组成的,但不是唯一标识,比如门牌号、街道号码等也可能含有阿拉伯数字,又要如何将这些数据区别开来?那就涉及到手机号码的又一个特征:全部是11位数字组成

所以只要是阿拉伯数字组成的,并且是连续的11位,就可以认定这一串数字是手机号码了。那么这个取数逻辑使用VBA编码要如何实现呢?就不得不提到正则表达式了

使用正则表达式最关键的步骤就是匹配规则了,将“连续的11位数字”用正则表示就变成了“\d{11}”,解释如下:

  • \d表示的就是数字
  • {11}表示连续的11位

剩下的就是定义正则变量、设置规则及按照规则获取数据了,如下一段代码是正则的使用步骤,结果通过Debug输出到立即窗口

Dim regxNum As New RegExp '创建正则对象regx
Dim myMatch As Object '存放结果

regxNum.Pattern = "\d{11}"
Set myMatch = regxNum.Execute("改为实际的邮寄信息") '提取手机号码
If myMatch.Count > 0 Then 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

wei1019

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

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

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

打赏作者

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

抵扣说明:

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

余额充值