caspian1977, внимательно прочитайте статью, особенно самое начало. Формулы я Вам написал в приложенном файле. После проделанных манипуляций (читайте под спойлером) формулы перестанут выдавать ошибки. Если захотите, чтобы макрос сохранился в файле для дальнейшего использования сохраните его как файл с поддержкой макросов, или как надстройку. И Вам достаточно просто забивать в ячейке формулу "=RegExpExtract(Txt ; Pattern ; Item)"
Скрытый текст |
---|
Microsoft Excel, к сожалению, не имеет поддержки RegExp по-умолчанию "из коробки", но это легко исправить с помощью VBA. Откройте редактор Visual Basic с вкладки Разработчик (Developer) или сочетанием клавиш Alt+F11. Затем вставьте новый модуль через меню Insert - Module и скопируйте туда текст вот такой макрофункции:?1 2 3 4 5 6 7 8 9 10 11 12 13 | Public Function RegExpExtract(Text As String, Pattern As String, Optional Item As Integer = 1) As String On Error GoTo ErrHandl Set regex = CreateObject("VBScript.RegExp") regex.Pattern = Pattern regex.Global = True If regex.Test(Text) Then Set matches = regex.Execute(Text) RegExpExtract = matches.Item(Item - 1) Exit Function End If ErrHandl: RegExpExtract = CVErr(xlErrValue) End Function
|
Теперь можно закрыть редактор Visual Basic и, вернувшись в Excel, опробовать нашу новую функцию. Синтаксис у нее следующий: =RegExpExtract( Txt ; Pattern ; Item ) где - Txt - ячейка с текстом, который мы проверяем и из которого хотим извлечь нужную нам подстроку
- Pattern - маска (шаблон) для поиска подстроки
- Item - порядковый номер подстроки, которую надо извлечь, если их несколько (если не указан, то выводится первое вхождение)
|