从Excel中的单元格中提取数字

时间:2018-09-26 17:47:42

标签: excel excel-formula

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

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。有人可以帮忙吗?谢谢!

5 个答案:

答案 0 :(得分:3)

尝试以下用户定义功能:

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

enter image description here

答案 1 :(得分:0)

您可以使用文本到列从列中提取数据。应用另一种方法,然后选择冒号作为提取物:。然后,您将得到一个“空格” +数字...注意,“空格”仅表示一个空格。 接下来,使用全部替换列删除空格,然后只剩下+数字。

答案 2 :(得分:0)

选择仅与您要提取数字的列表相邻的空白单元格,然后键入此公式=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键,然后拖动填充手柄以填充应用此公式所需的范围。

答案 3 :(得分:0)

使用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引入的

enter image description here

答案 4 :(得分:0)

首先,您应该将单元格转换为列,然后转到空白单元格并编写以下命令= B1&“”&“,”&“”&F1&“”&“,”&“”& J1

该命令用于您的第一个示例,因为该命令中的引用单元格包含数字 如果要应用相同的命令,只需修改参考单元格即可 enter image description here