用于从随机复杂测试字符串中提取10或11位数电话号码的公式

时间:2016-03-19 04:52:23

标签: excel excel-formula excel-2010

我是excel公式领域的新手,在复杂的公式中需要你的帮助,我需要从一串随机文本中提取电话号码。这没有字符串

的修复格式

示例设置字符串:

 Dring to data add9724516002
 add 08107936777 to me pler
 8000069633 plz add. Me
 9000088106 mujhe bhi add karo dosto

我已经尝试了很多公式,但似乎没有任何效果。唯一固定的是数字的长度,它应该是10位数或11位(包括初始0)

2 个答案:

答案 0 :(得分:1)

您可以通过VBA使用RegExp

(这似乎是作为公式选项出现在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

答案 1 :(得分:0)

如果它们看起来都像您在上面提供的字符串,则可以使用Text to Columns。假设所有这些字符串都在A1:A4中。

  1. 选择所有四个单元格
  2. 数据 - “文字到列”
  3. 分隔
  4. 使用“space”分隔值
  5. 完成
  6. 现在,你的手机号码大部分会被拔出,看起来像这样:

    Image Link

    (我在数据上方添加了一行,使每列都有自己的数据集。第1,2,3,4,5和6列。我还添加了另一列代替A列,排序。这将在以后阶段有用)

    接下来,选择A1:G5。

    1. 点击“插入 - 表格”
    2. “我的桌子有标题”
    3. 您的范围现在是一个表格,这意味着您可以按升序对数据进行排序。我假设你有数百个字符串,你正在整理。按升序排序时,所有数字将首先显示。

      在下面的图片中,我已经对实际数据的第一列进行了排序,最顶层有两个电话号码可以拔出:

      Image Link 2 如果您想恢复原始数据阵容,请单击“排序”列以“升序”

      我希望这是一个避免VBA的好方法。您可能无法获得所有电话号码,但可能是一大块。如果您只需要所有电话号码,也可以将C:G列复制并粘贴到A栏的底部,并立即对所有内容进行排序。

      如果附加数字和字母的字符串相似,您还可以查看RIGHT和LEFT公式以从字母数字字符串中提取数字