VBA实例(37) - 快速提取手机号及归属地

作品简介

点击下方红字获取VBA实例完整代码文件

永恒君最近处理资料,碰到一个这样的问题,如下图:

图片


联系人的手机号码夹杂在各种不规则的、混乱的字符串当中,需要一个一个的提取出来,并查询到该手机号的归属地。

过程分析及效果

两个需求一个一个来说。

1、提取手机号码。

如上图可以看到,每个手机号所在单元格的位置不一样,基本上没有啥规律可言,自然就无法用left、right、mid之类的函数了。永恒君首先想到的就是使用正则表达式来提取。

关于正则表达式,永恒君之前写过不少相关文章和实例:

正则表达式,查找、筛选数据的又一利器!

这个查找、筛选数据的利器,你不能不会!

这样做,快速提取省份信息!

技巧 | 正则表达式实例 – 快速提取爱奇艺视频目录

Excel vba 实例(8)- 利用正则表达式进行定向提取

这里永恒君设置一个自定义的函数phone,提取的结果就是手机号

我国大陆的手机号都是1开头的11位数字,这个就表示要匹配寻找11位字符串,这个字符串以1开头,后面10位分别为0-9中任意一个。

把上面的代码粘贴到VBE编辑器里面,这样就可以直接使用phone函数了,

图片


2、获取手机归属地

网上有很多在线的工具可以查询到手机号的归属地,但是要批量的查询的话,现成的工具还是不好找,要么付费、要么限制挺多。

所以,只好自己动手来制作一个爬虫,将手机号传递到在线工具,然后抓取返回结果。

这里经过测试之后,永恒君使用的是这个网站:https://cx.shouji.360.cn/

图片


接着,只要在Excel中写了一个自定义函数phone_reg_loc,用来查询手机号归属地的。批量查询的话,只需要向下拖动即可实现了。

这个代码有点多,就不贴了,效果演示如下:

图片


当然啦,如果你不想用函数的方式,希望直接一键点击获取结果,稍微修改也是可以的。

图片


点击下方红字获取VBA实例完整代码文件

创作时间: