
Общая формула
=INDEX(CHOOSE(number,array1,array2),MATCH(value,range,0))
Резюме
Чтобы настроить формулу ИНДЕКС и ПОИСКПОЗ, где массив, предоставленный для ИНДЕКС, является переменным, вы можете использовать функцию ВЫБОР. В показанном примере формула I5, скопированная ниже, выглядит так:
=INDEX(CHOOSE(H5,Table1,Table2),MATCH(G5,Table1(Model),0),2)
С Table1 и Table2, как показано на скриншоте.
Объяснение
По сути, это обычные функции ИНДЕКС и ПОИСКПОЗ:
=INDEX(array,MATCH(value,range,0))
Где функция ПОИСКПОЗ используется для поиска правильной строки для возврата из массива, а функция ИНДЕКС возвращает значение в этом массиве.
Однако в этом случае мы хотим создать переменную массива, чтобы диапазон, заданный для INDEX, можно было изменять на лету. Мы делаем это с помощью функции ВЫБРАТЬ:
CHOOSE(H5,Table1,Table2)
Функция ВЫБОР возвращает значение из списка с использованием данной позиции или индекса. Значение может быть константой, ссылкой на ячейку, массивом или диапазоном. В этом примере числовой индекс предоставляется в столбце H. Когда номер индекса равен 1, мы используем Table1. Когда индекс равен 2, мы передаем Table2 в INDEX:
CHOOSE(1,Table1,Table2) // returns Table1 CHOOSE(2,Table1,Table2) // returns Table2
Примечание: диапазоны, предоставленные для ВЫБРАТЬ, не обязательно должны быть таблицами или именованными диапазонами.
В I5 число в столбце H равно 1, поэтому CHOOSE возвращает Table1, а формула принимает следующий вид:
=INDEX(Table1,MATCH("A",Table1(Model),0),2)
Функция ПОИСКПОЗ возвращает позицию «А» в таблице 1, которая равна 1, а ИНДЕКС возвращает значение в строке 1, столбце 2 таблицы 1, которое составляет 20,00 долларов США.
=INDEX(Table1,1,2) // returns $20.00