2016-04-28 91 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

如果某人发布的纯式的解决方案,请忽略此信息。