Найти частичный текст в Excel 2013

Найти частичный текст в Excel 2013

В Excel 2013 я хотел бы найти значение в столбце B в строке, где строка совпадает со строкой в ​​столбце A. Сложность заключается в том, что строки в столбце A могут быть короче искомой строки значения. Пример:

Column A    Column B
ABCD-       Result1
EF          Result2
BCD         Result3

Теперь примеры строк, которые должны возвращать...

"Result1": "ABCD-", "ABCD-EFG", "ABCD-H"
"Result2": "EF", "EFG", "EFGHIIJKL"
"Result3": "BCD", "BCDXY"

«ABCD» не должен возвращать никаких результатов.

Предположим, что искомая строка находится в ячейке C1.

Нужно ли мне прибегать к макросу или для этого есть какая-то формула?

ОБНОВЛЕНИЕ: Будет несколько искомых строк, которые фактически будут расположены в столбце на другом листе, и не будет никаких подстановочных знаков в начале. Значение, которое я ищу, может быть размещено в столбце рядом со столбцом с искомыми строками.

ОБНОВЛЕНИЕ2: Предположим, что содержимое столбцов A и B на Листе 1 и содержимое на Листе 2 приведены ниже:

SoughtString    ResultFound
ABCD-           Result1
EF              Result2
BCD             Result3
BCDXY           Result3
EFG             Result2
ABCD-EFG        Result1
EFGHIIJKL       Result2
ABCD-H          Result1
ABCD            No match

Скопировав немного измененную формулу массива из принятого ответа в ячейке B2:

=IFERROR(INDEX(Sheet1!B$2:B$4;MATCH(1;COUNTIF(A2;Sheet1!A$2:A$4&"*")*(Sheet1!A$2:A$4<>"");0));"No match")

решение1

Предполагая, что у вас есть данные в строках со 2 по 10, вы можете использовать эту «формулу массива»

=IFERROR(INDEX(B$2:B$10,MATCH(1,COUNTIF(C1,A$2:A$10&"*")*(A$2:A$10<>""),0)),"No match")

подтверждено с CTRL+ SHIFT+ENTER

решение2

Неясно, какую роль играет C1. Если искомые строки уже существуют в столбце, вы можете использовать это как то, что вы показываете как Col A Листа2. Если они находятся где-то еще, вы можете построить Col A, просто ссылаясь на связанную ячейку в другом списке. Например, если список находится в Col Z, начиная со строки 2, A2 будет =Z2, и вы можете скопировать эту формулу вниз по Col A, чтобы предварительно заполнить больше ячеек, чем вам нужно (они будут оставаться пустыми, пока не понадобятся).

Если искомый список строк создается по одной новой записи за раз, вы можете просто поместить новые записи в следующую позицию в любом списке (Col Z или Col A). Если новые записи должны попадать в C1 и каждая новая запись заменяет предыдущую, вам понадобится макрос или программа VBA для построения списка из записей C1.

Начиная с точки, где искомые строки будут в списке в Col A с помощью любого из этих методов, это то, что будет в Col B. Предположим, что Result1 находится в B2. Формула в B2 будет:

    =IF(ISERROR(FIND(Sheet1!A2,A2)),"NO MATCH",IF(FIND(Sheet1!A2,A2)=1,A2,"NO MATCH"))

Скопируйте формулу в столбец B столько раз, сколько вам нужно. Вы можете предварительно заполнить Col B произвольно большим количеством записей, и они останутся пустыми, пока в связанной ячейке в Col A не появится значение, которое даст результат.

Связанный контент