Я пытаюсь создать комбинацию INDEX MATCH с динамическим вводом листа и тремя переменными для сопоставления.
Я воспользовался этой статьей, чтобы понять, как это сделать, и решил использовать версию без массива (или, скорее, как индексный собственный массив, я думаю)
В итоге я получил приведенную ниже функцию ячейки, в настоящее время включающую только 2 переменные.
ПРОБЛЕМА: в настоящее время возвращается ошибка «Значение недоступно». Я дважды проверил ввод несколько раз и не смог найти проблему с формулой.
Текущая формула для ясности:
=INDEX(
INDIRECT(D2&"!J2:J20000");
MATCH(1;
(B1=INDIRECT(D2&"!E2:E20000"))*(B3=INDIRECT(D2&"!G2:G20000"));
0))
@ Harun24hr Harun24hr Спасибо, что указали на это. Я добавил текущую, расплывчатую проблему.
Какая у вас версия Excel? Если это не Microsoft 365, попробуйте CTRL
+SHIFT
+ENTER
.
Вы оценивали биты отдельно? они работают правильно? т.е. вернуть необходимую информацию в index() и match()?
Формула правильная (работает с моей стороны). Проверьте ячейки B1
и B3
(D2
отобразит ошибку #REF!
) на наличие начальных или конечных пробелов. Сделайте то же самое в столбцах E
и G
листа 2010
, по крайней мере, в той строке, где, по вашему мнению, должно было быть возвращено значение J
. Также обратите внимание, что вы не проверяете Property type
, поэтому (самое верхнее) совпадение может быть выше ожидаемого, например, ячейка (в столбце J
) с ошибкой #N/A
. Поделитесь тем, что вы обнаружили.
В Excel 2016, как упоминал @Harun24hr, хотя INDEX
возвращает одно значение, требуется сочетание клавиш CTRL+SHIFT+ENTER, поскольку (B1=INDIRECT(D2&"!E2:E20000"))
возвращает массив; это не требуется для простого MATCH(lookup_value, range)
.
@nkalvi и harun24hr (не могу @ дважды), которые полностью решили эту проблему. Я также добавил тег Office2016 для ясности. Может ли кто-нибудь из вас опубликовать это как решение, чтобы я мог принять?
Рад это слышать! @ Harun24hr Harun24hr, не могли бы вы опубликовать решение? Я опубликую решение, если понадобится альтернатива решению на основе INDIRECT
.
В случае Excel-2016 вам необходимо ввести формулу как литерал массива. Значит, нажмите CTRL+SHIFT+ENTER после ввода формулы в ячейку. Итак, когда вы помещаете формулу в качестве записи массива, до и после формулы добавляется фигурная скобка {...}
. Формула будет выглядеть так
{=INDEX( INDIRECT(D2&"!J2:J20000"); MATCH(1; (B1=INDIRECT(D2&"!E2:E20000"))*(B3=INDIRECT(D2&"!G2:G20000")); 0))}
Вы столкнулись с какой-либо проблемой?