Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2602|回复: 4

[已解决]求电话号码过滤的函数或VBA算法

[复制链接]
发表于 2011-11-2 10:32 | 显示全部楼层 |阅读模式
比如一列中有如下数据,有什么好方法可以将其中的手机号码提取出来
85827582/13507431512
85681238/85659298
85601270/13787311981
85501886/13786104289
85499766;86823528
85456213 88982552
85226837/15116381133
85190711;85458085
85136972/ 82613776
8496183-8202
84835919/84835750
84710528。82733938
8450047 13687371306
83111587/013867926705
82780024/82780372
13974867861(代)
13974867808(代)
13974836734曹

最佳答案
2011-11-2 10:58
  1. Sub Test()
  2.     Dim Regex As Object
  3.     Dim Str As String
  4.     Dim arr()
  5.     Dim i As Integer
  6.    
  7.     arr = Range("a1:a" & Range("a65536").End(xlUp).Row).Value
  8.     Set Regex = CreateObject("VBScript.RegExp")
  9.     For i = 1 To UBound(arr)
  10.         With Regex
  11.             .Pattern = "\d{11,12}"
  12.             If .Execute(arr(i, 1)).Count > 0 Then
  13.                 arr(i, 1) = .Execute(arr(i, 1))(0)
  14.             Else
  15.                 arr(i, 1) = ""
  16.             End If
  17.         End With
  18.     Next i
  19.     Columns(2).ClearContents
  20.     Columns(2).NumberFormat = "@"
  21.     Range("B1").Resize(UBound(arr), 1) = arr
  22. End Sub
复制代码
工作簿1.rar (10.73 KB, 下载次数: 5)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-11-2 10:58 | 显示全部楼层    本楼为最佳答案   
  1. Sub Test()
  2.     Dim Regex As Object
  3.     Dim Str As String
  4.     Dim arr()
  5.     Dim i As Integer
  6.    
  7.     arr = Range("a1:a" & Range("a65536").End(xlUp).Row).Value
  8.     Set Regex = CreateObject("VBScript.RegExp")
  9.     For i = 1 To UBound(arr)
  10.         With Regex
  11.             .Pattern = "\d{11,12}"
  12.             If .Execute(arr(i, 1)).Count > 0 Then
  13.                 arr(i, 1) = .Execute(arr(i, 1))(0)
  14.             Else
  15.                 arr(i, 1) = ""
  16.             End If
  17.         End With
  18.     Next i
  19.     Columns(2).ClearContents
  20.     Columns(2).NumberFormat = "@"
  21.     Range("B1").Resize(UBound(arr), 1) = arr
  22. End Sub
复制代码
工作簿1.rar (10.73 KB, 下载次数: 5)
回复

使用道具 举报

 楼主| 发表于 2011-11-2 11:09 | 显示全部楼层
回复 爱疯 的帖子

再问一下  .Pattern = "\d{11,12}" 后面的参数代表什么 ,谢谢

回复

使用道具 举报

发表于 2011-11-2 11:36 | 显示全部楼层
amela 发表于 2011-11-2 11:09
回复 爱疯 的帖子

再问一下  .Pattern = "\d{11,12}" 后面的参数代表什么 ,谢谢

数字至少重复11次,最多重复12次
回复

使用道具 举报

发表于 2011-11-2 11:45 | 显示全部楼层
好复杂....
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 08:14 , Processed in 0.315059 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表