Извлечение чисел из строки в Excel - PullRequest
0 голосов
/ 14 марта 2019

Я хочу извлечь ряд чисел из строки в Excel.

ZERINER JERNIGAN                                       123-45-6789

Формула, которую я использовал:

right(trim(A1), len(trim(A1)-MIN(FIND({0,1,2,3,4,5,6,7,8,9},trim(A1)&"0123456789")) + 1)

, которую он вернет 123-45-6789


Но когда я сталкиваюсь с примером, подобным

3ES INNOVATION INC                                     12-3456789

Функция захватит 9 в качестве первого числа вместо 1.

Есть ли способ захватить только правую сторонустроки (12-3456789) и игнорировать все, что начинается слева, даже если это цифра?

Спасибо!

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Например, в B1 используйте:

=TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",255)),255))

Проверьте, есть ли числа:

=COUNT(FIND({0,1,2,3,4,5,6,7,8,9},A1))>0

Объедините два в IF:

=IF(COUNT(FIND({0,1,2,3,4,5,6,7,8,9},TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",255)),255))))>0,TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",255)),255)),"")
0 голосов
/ 14 марта 2019

Попробуйте эту функцию, например = FNumbers (A1) или = FNumbers ("3ES INNOVATION INC 98-0485843").

Я не уверен, что были перечислены все возможные варианты.Я предположил, как предполагает Rawrplus, что есть, по крайней мере, пробел, отделяющий числа в начале и позже.

Function FNumber(s As String) As String

With CreateObject("VBScript.RegExp")
    .Global = True
    .Pattern = ".\s(\d+-*\d+)"
    If .Test(s) Then FNumber = .Execute(s)(0).submatches(0)
End With

End Function

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...