【问题标题】:Extract numbers from cell in Excel从Excel中的单元格中提取数字
【发布时间】:2018-09-27 03:01:01
【问题描述】:

我有一列单元格包含以下格式的电话号码:

To: +6112312414 Will Smith To: +61832892357 Tom Hopkins To: +447857747717 Julius Caesar

或者

From: +44712423110 Jack Russel To: 112312414 Mr XYZ To: +61832892357 Hulk

我需要在单独的列中提取收件人电话号码,不需要姓名,例如

+6112312414, +61832892357, +447857747717 用于第一个示例,112312414, +61832892357 用于第二个示例。有人可以帮忙吗?谢谢!

【问题讨论】:

  • 您希望在一个单元格中用逗号输出?
  • 您尝试过什么 - Stack Overflow 不是编程服务。也就是说,这是相当微不足道的。编写一个 vba 函数来遍历字符串并使用 isumeric 函数(检查 + 符号)提取电话号码。
  • @ScottCraner 是的,请
  • @Kevin 我尝试了一些使用搜索、查找和中间功能的公式,但我只能提取第一个电话号码..也许你是对的,问题只能通过使用循环而不是单个公式..
  • 您不想要第二个示例中的发件人号码吗?

标签: excel excel-formula


【解决方案1】:

试试下面的用户定义函数:

Public Function PhoneList(st As String) As String
    Dim v As String
    PhoneList = ""
    v = Replace(st, "To: ", Chr(1))
    arr = Split(v, " ")
    For Each a In arr
        If InStr(a, Chr(1)) > 0 Then
            PhoneList = PhoneList & ", " & a
        End If
    Next a
    PhoneList = Replace(PhoneList, Chr(1), "")
    PhoneList = Mid(PhoneList, 3, 9999)
End Function

【讨论】:

  • @Kevin 我会审核我的答案
  • @Kevin 这经我的测试有效。它只返回 OP 想要的收件人。
  • @Gary'sStudent - 如果他不想要发件人号码,它会的。我重读了帖子,你的回答很好。
  • 感谢@Gary'sStudent!
【解决方案2】:

您可以使用文本到列从列中提取数据。应用另一种方法并选择冒号作为提取:。然后你会留下一个'空格'+数字......注意'空格'只表示一个空格。 接下来,使用 replace all 列删除空格,然后只剩下 + 号。

【讨论】:

  • 谢谢,我可以这样做......但我想要一个自动化的解决方案,而不是一个多步骤的过程......
  • V.Asher 你可以在 VBA 中编写代码,然后将其作为宏运行以实现自动化,你熟悉 VBA 吗?
  • 有点..我已经实现了@Gary'sStudent!的 VBA 答案完美运行..谢谢!
【解决方案3】:

选择与您只想提取数字的列表相邻的空白单元格,然后键入此公式=SUMPRODUCT(MID(0&A2,LARGE(INDEX(ISNUMBER(--MID(A2,ROW($1:$25),1))* ROW($1:$25),0),ROW($1:$25))+1,1)*10^ROW($1:$25)/10)

(A2 代表您要从列表中仅提取数字的第一个数据),然后按 Shift + Ctrl + Enter 按钮,并拖动填充柄以填充应用此公式所需的范围。

【讨论】:

    【解决方案4】:

    使用 TEXTJOIN 作为数组

    =TEXTJOIN(", ",TRUE,IF(TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",99)),(ROW($A$1:INDEX(A:A,LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1))-1)*99+1,99))="To:",TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",99)),(ROW($A$1:INDEX(A:A,LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1)))*99+1,99)),""))
    

    作为数组公式,退出编辑模式时必须使用 Ctrl-Shift-Enter 确认,而不是 Enter。

    TEXTJOIN 是随 Office 365 Excel 引入的

    【讨论】:

    • 非常感谢!它适用于 O365,不幸的是,我也需要它与旧版本的 Excel 一起使用..但感谢您的出色回答!
    【解决方案5】:

    首先你应该将单元格转换为列,然后你应该去一个空白单元格并编写这个命令 =B1 & " " & "," & " " & F1 & " " & "," & " " & J1

    此命令适用于您的第一个示例,因为命令中的参考单元格包含数字 如果您想应用相同的命令,只需根据需要修改参考单元格

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-02
      • 1970-01-01
      • 2020-10-11
      • 1970-01-01
      • 2011-09-07
      • 2011-08-04
      • 1970-01-01
      相关资源
      最近更新 更多