EXCEL表中提取混合文本中的电话号码,正则法

我们用excel处理处理数据的时候,希望数据都是规整的,比如一列姓名就都是姓名,一列地址就都是地址,一列电话就都是电话,但是实际使用的时候,由于各种原因,我们的数据经常是信息混杂在一起,今天介绍一种从混合数据中提取出电话号码的方法,简单的数据用分列以及left或者right函数,就可以做到,当然也有函数大咖们写的无比复杂的数组公式,但是毕竟函数的应用情景有限,我今天要介绍的是自定义函数中使用正则表达式来提取信息,这个方法基本可以通用

看图

C2公式,往下复制

普通函数方法 =MIDB(A2,SEARCHB("?",A2),LEN(A2))

缺点是只能提取左边为汉字及中文标点的号码

正则函数 =regGet(A2,"d{11}")

可以提取所有11位数字形式号码,不管在文本中任何位置

alt+f11打开vba编辑器,插入模块 粘贴文章后面的代码,就可以在EXCEL表里使用了,注意使用代码的表要保存为以下格式中的一种:xls,xlsb,xlsm

代码如下

Public Function regGet(s, pString) '返回正则匹配d[^_]*d

Dim matchs, regex

Dim temp, N

Set regex = CreateObject("VBScript.RegExp")

With regex

.Global = True

.IgnoreCase = True

.Pattern = pString

Set matchs = .Execute(s)

End With

regGet = matchs(0).Value

Set regex = Nothing

Set matchs = Nothing

End Function

(0)

相关推荐