Я пытаюсь создать комбинацию 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))}
Вы столкнулись с какой-либо проблемой?