Как извлечь номер телефона и разбить на столбец в гугл листе? - PullRequest
2 голосов
/ 21 мая 2019

Я пытаюсь извлечь телефонные номера в этом формате (123) 456-7890 и поместить каждый номер в отдельный столбец с форматом 1234567890 без пробела, тире или скобок.

Я могу добиться этого в Excel, используя приведенный ниже код VBA из другого вопроса StackOverflow, но не могу заставить его работать на листе Google


Sub ewqre()
    Dim str As String, n As Long, rw As Long
    Dim rgx As Object, cmat As Object, ws As Worksheet

    Set rgx = CreateObject("VBScript.RegExp")
    Set ws = Worksheets("Sheet4")

    With rgx
        .Global = True
        .MultiLine = True
        'phone number pattern is: ###-###-####
        .Pattern = "/^(\d{3})(\d{3})(\d{4})$/"
        For rw = 2 To ws.Cells(Rows.Count, "A").End(xlUp).Row
            str = ws.Cells(rw, "A").Value2
            If .Test(str) Then
                Set cmat = .Execute(str)
                'populate the worksheet with the matches
                For n = 0 To cmat.Count - 1
                    ws.Cells(rw, Columns.Count).End(xlToLeft).Offset(0, 1) = cmat.Item(n)
                Next n
            End If
        Next rw
    End With

    Set rgx = Nothing: Set ws = Nothing

End Sub

1 Ответ

2 голосов
/ 22 мая 2019
=ARRAYFORMULA(IFERROR(REGEXEXTRACT(TO_TEXT(SPLIT(
 REGEXREPLACE(A2:A, "\(|\)|\-| ", ""), CHAR(10))), "\d+")))


или

=ARRAYFORMULA(REGEXREPLACE(REGEXEXTRACT(SPLIT(A2, CHAR(10)), 
 "\((.*)\(.T"),"\)|\s|\-", ""))

0

Истинная формула массива будет:

=ARRAYFORMULA(IFERROR(REGEXREPLACE(REGEXEXTRACT(SPLIT(A2:A, CHAR(10)), 
 "\((.*)\(.T"),"\)|\s|\-", "")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...