设置主页 | 收藏本站 Excel学习网-公益型的EXCEL在线学习网站,助您轻松办公!

Excel杂乱数据中批量提取手机号

2020年03月31日 18:30 发布来源:Excel学习网

 数据分析中有一个重要的步骤,就是对数据进行预处理,数据的统一格式化。

例:如何将左边联系方式中的手机号码提取出来,结果如右边单元格所示:

Excel杂乱数据中批量提取手机号

从A列单元格的数据看,是手机号和固定电话的混和在一块的,其中固定电话显示也不规范,有的有区号,有的没有区号,有的区号和电话用“-”连接在一起,有的没有,而手机号码也不统一,有一个、二个、三个的。

如何数据量较少,可以逐个单元格复制提取,如果单元格很多的情况下,推荐使用VBA的方法批量提取,该VBA代码可以直接复制使用,不用修改内容

在 Excel中按ATL+F11,进行编程模式下,插入一个模块,创建一个自定义函数sz()函数

Excel杂乱数据中批量提取手机号

输入的代码如下所示:

Excel杂乱数据中批量提取手机号

Function sz(xstr As String)

Dim i As Integer

Dim n

For i = 1 To Len(xstr)

If Mid(xstr, i, 1) = 1 And IsNumeric(Mid(xstr, i, 11)) Then

n = Mid(xstr, i, 11)

If Len(n) = 11 Then

sz = sz & "/" & n

End If

End If

Next i

If Len(sz) Then

sz = Right(sz, Len(sz) - 1)

Else

sz =

End If

End Function

然后在单元格中调用自定义函数SZ(A2),得到的结果如下所示:

Excel杂乱数据中批量提取手机号

利用主要的提取原理:手机号第1位是1并且是11位数字

关键代码解释:

以A3单元格的值,做执行过程分析

58403844 15151884992 15195779387

这个字符的长度是32,让i从1至32做一个循环

i=1的时候,执行第一个IF语句

Mid(xstr, i, 1)=5,并不等于1

直接结束IF语句,继续i

那么i=2时,IF也不成立

直到i=10的时候,

Mid(xstr, i, 1)=1,并且IsNumeric(Mid(xstr, i, 11))也是数字

那么n就截取这11位,如果这个值是11位的,那就传递给sz保存下来

结果,继续i,直到把所有的手机号截取完成

不知道有没有看懂,没有看懂的话,就直接复制代码套用即可。

本节完,

原创文章如转载请注明:转载自Excel学习网 [ http://www.excelxx.com/]
需要保留本文链接地址:http://www.excelxx.com/jiqiao/12243.html
分享到:
网站地图 | XML地图 | 免责声明 | 关于我们 | Excel学习网:优秀的EXCEL在线学习和资源分享网站。
版权所有: CopyRight © 2013-2018 www.excelcn.com All Rights Reserved.
豫ICP备12002644号