从随机复杂testingstring中提取10或11位电话号码的公式
我是一个excel公式领域的新手,需要你的帮助一个复杂的公式,我需要从一串随机文本中提取电话号码。 这没有固定的string格式
举例string:
Dring to data add9724516002 add 08107936777 to me pler 8000069633 plz add. Me 9000088106 mujhe bhi add karo dosto
我已经尝试了许多公式,但似乎没有任何工作。 唯一固定的是数字的长度,它应该是10位或11(包括最初的0)
您可以通过VBA使用RegExp
(这似乎是作为一个公式选项在Excel的某个时间来到Excel,请参阅uservoice
码
Function GetCode(strIn As String) As String Dim objRegex As Object Set objRegex = CreateObject("vbscript.regexp") With objRegex .Pattern = "\d{10,11}\b" If .test(strIn) Then GetCode = .Execute(strIn)(0) Else GetCode = "no match" End If End With End Function
如果它们看起来像上面提供的string,则可以使用“文本到列”。 假设所有这些string都在A1:A4中。
- select全部四个单元格
- 数据 – “文本到列”
- 分隔
- 使用“空格”分隔值
- 完
现在,您的电话号码大部分会被抽出,而且看起来像这样:
(我在数据上面添加了一行,使每一列都有自己的一组数据。列1,2,3,4,5和6.我还添加了另一列来代替列A,Sort。这将在稍后阶段有用)
接下来,selectA1:G5。
- 点击“插入 – 表格”
- “我的桌子有标题”
- 好
您的范围现在是一个表格,这意味着您可以按升序对数据进行sorting。 我假设你有数百个string,你正在sorting。 当您通过升序sorting,所有数字将首先显示。
在下面的图片中,我已经对实际数据的第一列进行了sorting,并且在顶部可以列出两个电话号码:
如果您想要恢复到您的原始数据arrays,请单击“sorting”列以“升序”
我希望这是避免VBA的一个很好的解决方法。 你可能没有得到所有的电话号码,但可能是一个很好的块。 如果您只需要所有的电话号码,也可以将列C:G复制并粘贴到列A的底部,并一次对所有内容进行sorting。
如果附有数字和字母的string是相似的,则还可以查看RIGHT和LEFT公式以从字母数字string中提取数字