Excel - нужно извлечь идентификатор машины, который включает число в ячейке, независимо от его положения в предложении - PullRequest
0 голосов
/ 06 мая 2019

Я впервые публикую здесь вопрос:)

При экспорте данных из нашей системы корпоративных тикетов у нас, к сожалению, нет конкретного столбца для идентификатора компьютера, но вместо этого есть столбец "описание проблемы", в которомвключает в себя как краткое описание проблемы, так и идентификатор машины.Идентификатор машины всегда содержит цифры, но может содержать только цифры или 2-4 буквы перед цифрой без пробелов, например:

XK2065

2092

BOZK10625

Количество цифр может варьироваться, но не более шести.

2 примера описания проблемы:

1) XK2065 - проблема не обнаружена, пожалуйста, проверьте.

2) Пожалуйста, выясните, почему проблема не была обнаружена, идентификатор машины XK2065 ,номер билета 1425778.

Итак, проблема в том, что идентификатор устройства может быть расположен где угодно в предложении, а также может содержать только цифры или от 2 до 4 букв перед числами.

Есть лифункция, которая может извлекать идентификатор машины, независимо от местоположения, вместе с начальными буквами рядом с цифрами, если они есть?Дополнительное условие, которое я хотел бы, чтобы число цифр было не более 6, так как иногда могут быть включены номера билетов, которые состоят из 7 цифр.

Функция предпочтительнее, чем макрос VBA.

Заранее спасибо!

1 Ответ

0 голосов
/ 06 мая 2019

Эта функция должна делать то, что вам нужно, используя регулярное выражение (как предложено @RonRosenfeld):

Function RegExID(str As String) As String

Dim rgx As Object
Set rgx = CreateObject("VBScript.RegExp")
Dim allMatches As Object
With rgx
    .Pattern = "\b[A-Z]{0,4}[\d]{4,6}\b"
    .Global = True
    .ignoreCase = True
    .MultiLine = True
End With

Set allMatches = rgx.Execute(str)

For Each Item In allMatches
    RegExID = Item.Value
Next

End Function

enter image description here

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