Строка ВПР больше, чем параметры

Я пытаюсь искать строки на основе общих символов слева направо в Excel 2019

Если я ищу строки короче, чем значения поиска в столбце A, эта формула vlookup с подстановочным знаком в E2 работает

=VLOOKUP(D2&"*",A1:B5,2,FALSE)

Но как искать строку, которая больше, чем значения поиска?

Для ABCDE вывод будет H, так как

АВСДЕ

ABCDEFG

И вывод для ABCDEFGHIJKLM должен быть Y, так как ABCDEFGHIW — это строка, более похожая, чем ABCDEFGHIJKLM. Равных символов для соответствия слева направо будет не менее 4, если не отображается «не найдено»

ABCDEFGHIJKLM

ABCDEFGHIW

А Б С Д Е 1 НИТЬ ПИСЬМО СТРОКА МЕНЬШЕ, ЧЕМ COLL A STRINGS ПИСЬМО 2 ABCJKPOR Вопрос АВСДЕ ЧАС 3 ABCDEFG ЧАС 4 АБСКХСПЛЛЗ Т СТРОКА БОЛЬШЕ ЧЕМ COLL A STRINGS ПИСЬМО 5 ABCDEFGHIW Д ABCDEFGHIJKLM Д

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

Black cat 18.08.2023 19:09

ABCDE потенциально может вернуть H или Y, поскольку он соответствует первым 5 символам как ABCDEFG, так и ABCDEFGHIW. Это порядок появления, количество несопоставленных символов в поиске или что-то еще, что определяет, что возвращается в случае такой ничьей?

DMM 19.08.2023 03:57

Когда есть несколько вариантов с одинаковыми первыми символами, например, если я ищу ABCDE, а в столбце A есть варианты ABCDE12, ABCDE123, ABCDE1234567, то лучшим совпадением будет вариант с меньшей длиной, в этом примере будет ABCDE12. Если лучшие варианты имеют одинаковую длину, то ответом будет тот, который стоит первым в порядке появления

Rasec Malkic 19.08.2023 07:21
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
3
76
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если вы всегда смотрите на совпадение левых символов, то:

Со старыми версиями:

=INDEX(VLOOKUP(LEFT(D5,LEN(D5)-ROW($ZZ$1:INDEX($ZZ:$ZZ,LEN(D5)))+1)&"*",A:B,2,FALSE),N(IF({1},SUM(--(ISERROR(VLOOKUP(LEFT(D5,LEN(D5)-ROW($ZZ$1:INDEX($ZZ:$ZZ,LEN(D5)))+1)&"*",A:B,2,FALSE))=TRUE))+1)))

Это может потребовать использования Ctrl-Shift-Enter вместо Enter при выходе из режима редактирования.


С Office 365

=LET(
    lkp,D5,
    lkprng,A:A,
    otprng,B:B,
    ar,XLOOKUP(
        BYROW(SEQUENCE(LEN(lkp),,0),LAMBDA(a,LEFT(lkp,LEN(lkp)-a)))&"*",
        lkprng,
        otprng,
        "",2),
    TAKE(FILTER(ar,ar<>"",""),1))

Это повторяет удаление буквы из значения в D, возвращая все совпадения. Затем мы берем первую непустую строку.


Если совпадение может быть где угодно, нам нужно использовать Fuzzy Lookup:

https://www.microsoft.com/en-US/download/details.aspx?id=15011

@RasecMalkic см. редактирование. Возможно, вам придется обновить, чтобы увидеть его.

Scott Craner 18.08.2023 18:53

вы получили {} вокруг формулы, когда использовали Ctrl-Shift-Enter?

Scott Craner 18.08.2023 19:13

да, в виде матричной формулы

Rasec Malkic 18.08.2023 19:13

Теперь это работает очень хорошо. Единственная проблема, не связанная с вашей формулой, заключается в том, что мне нужно искать более 3000 строк в диапазоне, например A1: B5000, и он немного зависает для такой задачи.

Rasec Malkic 21.08.2023 02:36

Похоже, у вас есть ответ для vlookup, но если вы когда-нибудь получите 365, вы можете использовать xlookup, чтобы получить H для ABCDE:

=XLOOKUP(D2,A2:A5,B2:B5,,1)

Спасибо за вашу помощь

Rasec Malkic 21.08.2023 02:35

Другие вопросы по теме