从固定格式

时间:2016-04-28 15:39:07

标签: excel excel-formula

我想在单元格A1中提取10位数的移动形式随机字符串,其中包含文本以及移动号码,其中一些有一个移动,另外有两个或者三个移动号码。所有移动号码都保存在不同的颜色中。只有excel表单公式是必需的

enter image description here

3 个答案:

答案 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)

答案 1 :(得分:0)

我会尝试使用此答案中提到的正则表达式:https://stackoverflow.com/a/22542835/2068595

从表面上看,我会在你的专栏中寻找这个正则表达式[0-9] {10}(意味着从0到9连续10个字符)。

答案 2 :(得分:0)

使用 A 列中的数据运行此短宏:

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

如果有人发布纯配方解决方案,请忽略此帖。