Excel - как найти строку с подстановочными знаками из большого списка

Моя таблица данных состоит из а) индексных номеров и б) строк, связанных с этими индексными номерами. В моем шаблоне пользователь вводил порядковый номер, и отображалась строка, связанная с этим порядковым номером.

Например

1    Bag
1    Catsgsg
1    Dogs
1    oygg
2    Stackoverflow
2    tacks
2    Binoculars
2    all
.
.
.
1000   Bonobos
1000   Canopy
1000   Ascot

Если пользователь вводит число 1000, как я могу получить слово бонобо, зная, что есть слово b, но не фактическое слово? Как исправить формулу массива, чтобы она работала с подстановочными знаками?

=INDEX(Partners!$D$2:$D$2227,MATCH(1,(Partners!$A$2:$A$2227=number)*(Partners!$C$2:$C$2227="b *"),0))

РЕДАКТИРОВАТЬ: мне удалось настроить решение callum и иметь учетную запись формулы для нескольких строк с подстановочными знаками.

=INDEX(Partners!$D$2:$D$2227,MATCH(1,IFERROR(SEARCH(num&"A*",Partners!$A$2:$A$2227&Partners!$D$2:$D$2227),0)+IFERROR(SEARCH(num&"B*",Partners!$A$2:$A$2227&Partners!$D$2:$D$2227),0)+IFERROR(SEARCH(num&"C*",Partners!$A$2:$A$2227&Partners!$D$2:$D$2227),0),0))

person lostinOracle    schedule 28.03.2017    source источник


Ответы (2)


Только определенные функции принимают подстановочные знаки, поэтому вам нужно будет использовать одну из них, если вы хотите использовать подстановочный знак *. SEARCH является одним из примеров:

=INDEX(Partners!$D$2:$D$2227,MATCH(1,IFERROR(SEARCH(number&"b*",Partners!$A$2:$A$2227&Partners!$B$2:$B$2227),0),0))

Или вы можете просто вообще избежать подстановочного знака:

=INDEX(Partners!$D$2:$D$2227,MATCH(number&"b",Partners!$A$2:$A$2227&LEFT(Partners!$B$2:$B$2227,1),0))


оба введены как формулы массива (Ctrl+Shift+Enter)

person CallumDA    schedule 28.03.2017
comment
Спасибо, Каллум, именно то, что я искал. - person lostinOracle; 28.03.2017
comment
можно ли искать массив подстановочных знаков? например, если вам нужны слова, начинающиеся с b, c или d... можете ли вы выполнить поиск(number&{b*, c*, d*},......) - person lostinOracle; 28.03.2017
comment
Привет @ excelmonkey93, рад помочь. К сожалению, функция поиска не может этого добиться, но, вероятно, это можно сделать с помощью какой-то другой сложной формулы. Я бы, наверное, сэкономил время и создал отдельные формулы для каждого значения поиска b, c,... и т.д. - person CallumDA; 28.03.2017
comment
спасибо, я смог разобраться. отредактированный пост с решением - person lostinOracle; 28.03.2017

Пытаться,

=INDEX(B:B, AGGREGATE(15, 6, ROW(A$1:INDEX(A:A, MATCH(1E+99, A:A)))/((A$1:INDEX(A:A, MATCH(1E+99, A:A))=E6)*(LEFT(B$1:INDEX(B:B, MATCH(1E+99, A:A)), 1)=F6)), 1))

В приведенном ниже примере изображения я заменил B на C, чтобы продемонстрировать, что формула не просто возвращает первые 1000. найденный.

введите здесь описание изображения

person Community    schedule 28.03.2017