#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
в вашем диапазоне поиска.