#excel #excel-formula
#excel #excel-формула
Вопрос:
Я использую формулу как:
=INDEX(B1:G1,H3)
Это не работает. даже при наличии жестких похожих сообщений я не смог найти проблему с этим.
На самом деле я выполняю максимальное количество всех объектов строки, таких как:
=MAX(B2:G2)
и выполнение
=INDEX(B1:G1,H2)
Это работает для первой строки, а не для другой
Комментарии:
1. Первый работает из-за совпадения, ничего больше. 6 — это максимальное значение, и это просто позиция значения, которое вы ищете. Третья строка
#REF!
потому что вы пытаетесь получить 8-ю ячейку в пределах 6 ячеек; она не может быть найдена. То же самое относится к четвертой строке с 77-й ячейкой в пределах 6 ячеек.
Ответ №1:
ИНДЕКСУ требуется относительная позиция, а не значение. Вам нужно добавить СООТВЕТСТВИЕ:
=INDEX($B$1:$G$1,MATCH(H2,B2:G2,0))
Совпадение вернет относительное положение совпадения.
Комментарии:
1.
=INDEX($B$1:$G$1,1, MATCH(H2,B2:G2,0))
2. какие значения здесь имеют 1 и 0.
3. @user11217663 поскольку диапазон составляет одну строку,
,1
он не нужен.4. @MLLearner2
0
в моем заставляют его искать точное соответствие.5. Спасибо @user11217663
Ответ №2:
Индекс использует H3 для определения возвращаемого столбца. Вот почему Row1 функционирует. Это поиск столбца 6 (между B1:G1) и возврат результата. Это всего лишь случайность, что это правильный ответ. Если бы вы заменили 5 в ячейку H2, это также вернуло бы столбец 5. В других показанных примерах функция max возвращает индекс столбца, который превышает то, что есть в массиве (B1: G1 имеет длину 6 столбцов).
Для исправления выполните сопряжение индекса с функцией сопоставления. Match выполнит поиск в массиве (B2: G2; B3: G3; и т.д.) и вернет номер соответствующего столбца, затем передаст его функции Index для возврата правильного результата.
Ваша окончательная формула будет выглядеть следующим образом: =INDEX($ B $1: $ G $ 1, MATCH(H2, B2: G2, 0))