Найти точную подстроку в ячейке, используя формулу Excel - PullRequest
1 голос
/ 14 февраля 2020

У меня есть строка "L5 + L6 + L7 + L10" в ячейке, а затем у меня есть столбец со значениями L1, L2, ..., L10 в каждой ячейке. Мне нужно знать, какие из этих значений содержатся в основной строке, но с точным соответствием.

Чтобы решить мою проблему, я попробовал формулу =IF(ISNUM(SEARCH(B3;$F$2));"Found";"Not found"), и полученные результаты показаны на этом изображении.

enter image description here

Однако эти результаты неверны, потому что мне нужно найти только L5, L6, L7 и L10, а не L1.

Есть ли способ сделать это только с помощью формул Excel?

Ответы [ 3 ]

1 голос
/ 14 февраля 2020

Просто добавьте "+" в начало и конец строк в поиске:

=IF(ISNUMBER(SEARCH("+"&B3&"+","+"&$F$3&"+")),"Found","Not found")

enter image description here

1 голос
/ 14 февраля 2020

В этом случае может помочь функция FILTERXML:

=SUMPRODUCT(--(B3=FILTERXML("<data><a>" & SUBSTITUTE($F$2;"+";"</a><a>") & "</a></data>";"//a")))

enter image description here

0 голосов
/ 14 февраля 2020

Для всех, кто просматривает вопрос и открыт для VBA UDF решение

Отправка кода в модуль рабочего листа

Синтаксис формулы: =Found( Substring, Search String )

Так что в Excel лист: C3 = Found(B3, F2) = Not Found


Public Function Found(SubString As Range, Within As Range) As String

Dim Arr, i As Long
Arr = Split(Within, "+")

Found = "Not Found"

For i = LBound(Arr) To UBound(Arr)
    If SubString = Arr(i) Then
        Found = "Found"
        Exit For
    End If
Next i

End Function
...