Сохранение определенной строки текста в ячейке для конкретных начальных букв с помощью Excel VBA - PullRequest
0 голосов
/ 24 июня 2019

У меня есть несколько строк текста в ячейке в столбце А. Я хочу оставить только одну строку, начинающуюся с определенных букв (см. Рисунок 1). Например, сначала я хотел бы проверить, есть ли в нем строка, начинающаяся с «МБ». Если да, то я бы хотел оставить только эту строку. Если этого не произойдет, он будет последовательно искать буквы «SA», затем «PQ» и так далее. Я пытаюсь реализовать это в Excel VBA.

1

Я нашел подсказку, используя встроенную функцию. Например

* Удалить все после первой запятой

=LEFT(A1,FIND(",",A1)-1)

* Удалите все до появления второй запятой

=RIGHT(SUBSTITUTE(A1, ",", CHAR(9), 2), LEN(A1)- FIND(CHAR(9), SUBSTITUTE(A1, ",", CHAR(9), 2), 1) + 1)

Однако это не то решение, которое я ищу. Буду очень признателен, если кто-нибудь сможет мне помочь.

С уважением, Оливер

1 Ответ

1 голос
/ 24 июня 2019

Google-листов

Я знаю, что вы не спрашивали о Google-Sheets, но в этом случае это тоже может быть хорошим выходом (я вообще не эксперт по GS, но попробовал кое-что, что кажется вам интересным)

enter image description here

Формула в B2:

=IFERROR(ARRAYFORMULA(TRANSPOSE(REGEXEXTRACT(A2,"\b"&TRANSPOSE($B$1:$D$1)&"[^\s]+"))),"")

Таким образом, вы можете расширить интересующие вас части (расширить диапазон B1:D1), + это даст вам все совпадения регулярных выражений, доступные во входных данных.

Перетащите формулу вниз.

Excel

В Excel вы можете думать о UDF, используя REGEX, вот небольшой пример:

Function GetRegEx(str As String)

Dim regex As Object
Set regex = CreateObject("VBScript.RegExp")
Dim MyArr() As String
MyArr = Split("MB,PQ,SA", ",")

For X = LBound(MyArr) To UBound(MyArr)
    With regex
        .Pattern = "\b" & MyArr(X) & "[^\s]+"
        .Global = True
    End With
    Set matches = regex.Execute(str)
    If matches.Count > 0 Then
        GetRegEx = matches(0).Value
        Exit Function
    End If
Next X
End Function

Назовите это как =getregex(A2) и перетащите вниз ...

enter image description here

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