我有一列,其中的单元格包含以下格式的电话号码:
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
。有人可以帮忙吗?谢谢!
答案 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
答案 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引入的
答案 4 :(得分:0)