2016-04-28 80 views
0

我想在A1格式中提取10位數字的移動格式隨機字符串,其中包含文本以及移動號碼,其中一個移動號碼有兩個或三個移動號碼。所有手機號碼要保存不同coloumns.Only Excel工作表中公式需要從固定格式的隨機文本字符串中提取數字

enter image description here

+0

你可能想匿名化的數據。 – Wodin

+0

你有沒有試圖自己做這個? –

回答

1

首先,您需要創建一個命名範圍。命名範圍的目的是規範化並按空格分割數據,以便可以通過其他公式讀取數據,而不必每次都輸入該數據。

首先,將您的數據放在第1行開始的列A中(如示例數據圖所示)。然後創建的SplitString名字命名的範圍,這個公式定義它:

=INDEX(TRIM(MID(SUBSTITUTE(TRIM(SUBSTITUTE($A1,"."," "))," ",REPT(" ",999)),999*(ROW($1:$10)-1)+1,999)),) 

注意ROW($1:$10)10這是一個猜測,字符串將永遠不會有超過10個條目在單個單元格中進行評估。這與您的樣本數據一致,其中條目最多的單元格爲ROHTAK (BUILDER) 7777777777 PAL 6666666666,其中有5個條目要評估。如果您需要增加數字,只需增加10即可獲得更高的數字。

然後在B1單元格和複製和向下,用這個公式,利用已定義的SplitString命名範圍:

=IFERROR(IF(AND(ISNUMBER(--$A1),LEN($A1)=10,COLUMN(A1)=1),--$A1,--INDEX(SplitString,MATCH(1,INDEX((COUNTIF($A1:A1,SplitString)=0)*(LEN(SplitString)=10)*(ISNUMBER(--SplitString)),),0))),"") 

tigeravatar example for Nitin Jain (2)

+0

你工作得很好 –

0

隨着柱運行該短宏數據:

Sub numbersss() 
    Dim N As Long, L As Long, K As Long 
    Dim i As Long, j As Long, t As String 
    N = Cells(Rows.Count, "A").End(xlUp).Row 
    For j = 1 To N 
     t = Cells(j, 1).Text 
     L = Len(t) 
     For i = 1 To L 
      If Mid(t, i, 1) Like "[0-9]" Then 
      Else 
       Mid(t, i, 1) = " " 
      End If 
     Next i 
     ary = Split(Application.WorksheetFunction.Trim(t), " ") 
     K = 2 
     For Each a In ary 
      If Len(a) = 10 Then 
       Cells(j, K) = "'" & a 
       K = K + 1 
      End If 
     Next a 
    Next j 
End Sub 

例如:

enter image description here

如果某人發佈的純式的解決方案,請忽略此信息。