Соответствие индекса нескольким критериям при поиске определенной строки

#excel #indexing #match

#превосходить #индексация #совпадение

Вопрос:

 A B C 1 Name Last Name ID 2 Ben Dafflin ID1001 3 Yu Yiin ID1002 5 Max Gray ID1003 6 John Carl Flit ID1004  
 Situation 1 : Index Match with wildcards "*" (Working Fine!) Formula : =INDEX($C:$C,MATCH("*John*",$A:$A,0)) Result : ID1004   Situation 2 : Index Match with multiple criteria (Working Fine!) Formula : =IFERROR(INDEX(D:D,MATCH(1,(B:B="Flit")*(C:C="John Carl"),0)),"") Result : ID1004  

Проблема: В ситуации 2, если он ищет только ячейки с "Carl" или "*Carl*" не работает. Любое предложение, как я буду использовать ситуацию 2, когда индекс совпадает с несколькими критериями, но все равно может искать ячейки, содержащие такую конкретную строку.

Комментарии:

1. У вас есть Office 365?

Ответ №1:

Чтобы ваша 2-я формула возвращала значение, вам просто нужно ссылаться на правильные столбцы: =IFERROR(INDEX(C:C,MATCH(1,(B:B="Flit")*(A:A="John Carl"),0)),"")

Если вы хотите использовать подстановочные знаки с MATCH несколькими критериями, вы можете попробовать:

 =INDEX(C:C,MATCH(1,1/(ISNUMBER(SEARCH("*Carl*",A:A))*(B:B="Flit")),0))  

Если у вас есть Office 365

 =FILTER(C:C,ISNUMBER(SEARCH("*Carl*",A:A))*(B:B="Flit"))  

Комментарии:

1. Первый случай (не 365) возвращается #N/A , если либо Carl его нет, A:A либо Flit его нет B:B . Конечно, это также происходит, если формула OP 1-я не работает (даже после того, как вы ее исправили). Так что, возможно, это нормально (трудно сказать).

2. @Spinner Я думал, что он хотел соответствовать обоим, поэтому я ожидал бы такого результата.

3. Как я уже сказал, трудно сказать. Их 2-я формула (та, которую они хотели адаптировать дальше) возвращает»», если она не найдена (в то время как их 1-я не найдена). В любом случае, я уверен, что они смогут адаптировать его, если это то, чего они хотят.

Ответ №2:

Поиск при сопоставлении с несколькими столбцами
Есть другой способ подойти к этому, который проще и вполне может лучше подойти:

 {=INDEX(C:C,MATCH("*CarlFlit",A:Aamp;B:B,0))}  

Выше, конечно, формула массива (отсюда открытие { и закрытие } )
a) Сопоставленный массив-это строки столбцов A , B объединенные в одну строку
б) Этот конкретный пример, конечно, ищет ( * с диким кардированием) *CarlFlit
c) Что, конечно, может быть любой комбинацией значений и допустимых MATCH wildcards

Если искомые значения находятся в ячейках (а не жестко закодированы в формуле), просто обратитесь к этим ячейкам:

 {=INDEX(C:C,MATCH(E2amp;F2,A:Aamp;B:B,0))}  

Чтобы добавить проверку на отсутствие совпадений (используя первый пример выше):

 {=IF(ISNUMBER(MATCH("*CarlFlit",A:Aamp;B:B,0)),INDEX(C:C,MATCH("*CarlFlit",A:Aamp;B:B,0)),"Not Found")}  

Дополнительная информация
Приведенную выше формулу можно расширить, чтобы обеспечить соответствие любому количеству столбцов.
o Просто amp; в каждой дополнительной колонке (в любом порядке, соответствующем вашей цели).

По соображениям производительности не рекомендуется использовать функции поиска для просмотра целых столбцов.
а) Лучше использовать (например) {=INDEX($C$1:$C$1000,MATCH("*CarlFlit",$A$1:$A$1000amp;$B$1:$B$1000,0))} .
б) Где 1000 , конечно, пример last row в вашем диапазоне поиска.