Создать соответствие индекса в Excel с динамическим листом

Я пытаюсь создать комбинацию INDEX MATCH с динамическим вводом листа и тремя переменными для сопоставления.

Я воспользовался этой статьей, чтобы понять, как это сделать, и решил использовать версию без массива (или, скорее, как индексный собственный массив, я думаю)

В итоге я получил приведенную ниже функцию ячейки, в настоящее время включающую только 2 переменные.

ПРОБЛЕМА: в настоящее время возвращается ошибка «Значение недоступно». Я дважды проверил ввод несколько раз и не смог найти проблему с формулой.

Текущая формула для ясности:

=INDEX(
INDIRECT(D2&"!J2:J20000");
MATCH(1;
(B1=INDIRECT(D2&"!E2:E20000"))*(B3=INDIRECT(D2&"!G2:G20000"));
0))

Вы столкнулись с какой-либо проблемой?

Harun24hr 29.08.2024 11:22

@ Harun24hr Harun24hr Спасибо, что указали на это. Я добавил текущую, расплывчатую проблему.

Spyral 29.08.2024 11:28

Какая у вас версия Excel? Если это не Microsoft 365, попробуйте CTRL+SHIFT+ENTER.

Harun24hr 29.08.2024 11:31

Вы оценивали биты отдельно? они работают правильно? т.е. вернуть необходимую информацию в index() и match()?

Solar Mike 29.08.2024 12:01

Формула правильная (работает с моей стороны). Проверьте ячейки B1 и B3 (D2 отобразит ошибку #REF!) на наличие начальных или конечных пробелов. Сделайте то же самое в столбцах E и G листа 2010, по крайней мере, в той строке, где, по вашему мнению, должно было быть возвращено значение J. Также обратите внимание, что вы не проверяете Property type, поэтому (самое верхнее) совпадение может быть выше ожидаемого, например, ячейка (в столбце J) с ошибкой #N/A. Поделитесь тем, что вы обнаружили.

VBasic2008 29.08.2024 13:51

В Excel 2016, как упоминал @Harun24hr, хотя INDEX возвращает одно значение, требуется сочетание клавиш CTRL+SHIFT+ENTER, поскольку (B1=INDIRECT(D2&"!E2:E20000")) возвращает массив; это не требуется для простого MATCH(lookup_value, range).

nkalvi 29.08.2024 16:39

@nkalvi и harun24hr (не могу @ дважды), которые полностью решили эту проблему. Я также добавил тег Office2016 для ясности. Может ли кто-нибудь из вас опубликовать это как решение, чтобы я мог принять?

Spyral 29.08.2024 18:54

Рад это слышать! @ Harun24hr Harun24hr, не могли бы вы опубликовать решение? Я опубликую решение, если понадобится альтернатива решению на основе INDIRECT.

nkalvi 29.08.2024 19:11
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
8
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В случае Excel-2016 вам необходимо ввести формулу как литерал массива. Значит, нажмите CTRL+SHIFT+ENTER после ввода формулы в ячейку. Итак, когда вы помещаете формулу в качестве записи массива, до и после формулы добавляется фигурная скобка {...}. Формула будет выглядеть так

{=INDEX( INDIRECT(D2&"!J2:J20000"); MATCH(1; (B1=INDIRECT(D2&"!E2:E20000"))*(B3=INDIRECT(D2&"!G2:G20000")); 0))}

Другие вопросы по теме