Функция ИНДЕКС() в MS EXCEL

Функция ИНДЕКС(), английский вариант INDEX(), возвращает значение из диапазона ячеек по номеру строки и столбца. Например, формула =ИНДЕКС(A9:A12;2) вернет значение из ячейки А10, т.е. из ячейки расположенной во второй строке диапазона.

Синтаксис функции

ИНДЕКС(массив; номер_строки; номер_столбца)

Массив  — ссылка на диапазон ячеек.

Номер_строки   — номер строки в массиве, из которой требуется возвратить значение. Если аргумент «номер_строки» опущен, аргумент «номер_столбца» является обязательным.

Номер_столбца   — номер столбца в массиве, из которого требуется возвратить значение. Если аргумент «номер_столбца» опущен, аргумент «номер_строки» является обязательным.

Если используются оба аргумента — и «номер_строки», и «номер_столбца», — то функция ИНДЕКС() возвращает значение, находящееся в ячейке на пересечении указанных строки и столбца.

Значения аргументов «номер_строки» и «номер_столбца» должны указывать на ячейку внутри заданного массива; в противном случае функция ИНДЕКС() возвращает значение ошибки #ССЫЛКА! Например, формула =ИНДЕКС(A2:A13;22) вернет ошибку, т.к. в диапазоне А2:А13 только 12 строк.

Значение из заданной строки диапазона

Пусть имеется одностолбцовый диапазон А6:А9.

Выведем значение из 2-й строки диапазона, т.е. значение Груши. Это можно сделать с помощью формулы =ИНДЕКС(A6:A9;2)

Если диапазон горизонтальный (расположен в одной строке, например, А6:D6), то формула для вывода значения из 2-го столбца будет выглядеть так =ИНДЕКС(A6:D6;;2)

Значение из заданной строки и столбца таблицы

Пусть имеется таблица в диапазоне А6:B9.

Выведем значение, расположенное в 3-й строке и 2-м столбце таблицы, т.е. значение 200. Это можно сделать с помощью формулы =ИНДЕКС(A6:B9;3;2)

Использование функции в формулах массива

Если задать для аргумента «номер_строки» или «номер_столбца» значение 0, функция ИНДЕКС() возвратит массив значений для целого столбца или, соответственно, целой строки (не всего столбца/строки листа, а только столбца/строки входящего в массив). Чтобы использовать массив значений, введите функцию ИНДЕКС() как формулу массива.

Пусть имеется одностолбцовый диапазон А6:А9. Выведем 3 первых значения из этого диапазона, т.е. на А6, А7, А8. Для этого выделите 3 ячейки (А21, А22, А23), в Строку формул введите формулу =ИНДЕКС(A6:A9;0), затем нажмите CTRL+SHIFT+ENTER.

Зачем это нужно? Теперь удалить по отдельности значения из ячеек А21, А22, А23 не удастся, мы получим предупреждение "нельзя изменять часть массива".

Хотя можно просто ввести в этих 3-х ячейках ссылки на диапазон А6:А8. Выделите 3 ячейки и введите формулу =A6:A8. Затем нажмите CTRL+SHIFT+ENTER и получим тот же результат.

Использование массива констант

Вместо ссылки на диапазон можно использовать массив констант:

Формула =ИНДЕКС({"первый":"второй":"третий":"четвертый"};4) вернет текстовое значение четвертый.

ПОИСКПОЗ() + ИНДЕКС()

Функция ИНДЕКС() часто используется в связке с функцией ПОИСКПОЗ(), которая возвращает позицию (строку) содержащую искомое значение. Это позволяет создать формулу, аналогичную функции ВПР().

Формула =ВПР("яблоки";A35:B38;2;0) аналогична формуле =ИНДЕКС(B35:B38;ПОИСКПОЗ("яблоки";A35:A38;0)) которая извлекает цену товара Яблоки из таблицы, размещенную в диапазоне A35:B38

Связка ПОИСКПОЗ() + ИНДЕКС() даже гибче, чем функция ВПР(), т.к. с помощью ее можно, например, определить товар с заданной ценой (обратная задача, так называемый "левый ВПР()"). Формула =ИНДЕКС(A35:A38;ПОИСКПОЗ(200;B35:B38;0)) определяет товар с ценой 200. Если товаров с такой ценой несколько, то будет выведен первый сверху.

Ссылочная форма

Функция ИНДЕКС() позволяет использовать так называемую ссылочную форму. Поясним на примере.

Пусть имеется диапазон с числами (А2:А10) Необходимо найти сумму первых 2-х, 3-х, ...9 значений. Конечно, можно написать несколько формул =СУММ(А2:А3), =СУММ(А2:А4) и т.д. Но, записав формулу ввиде:

=СУММ(A2:ИНДЕКС(A2:A10;4))

получим универсальное решение, в котором требуется изменять только последний аргумент (если в формуле выше вместо 4 ввести 5, то будет подсчитана сумма первых 5-и значений). 

Использование функции ИНДЕКС() в этом примере принципиально отличается от примеров рассмотренных выше, т.к. функция возвращает не само значение, а ссылку (адрес ячейки) на значение. Вышеуказанная формула =СУММ(A2:ИНДЕКС(A2:A10;4)) эквивалентна формуле =СУММ(A2:A5)

 

Аналогичный результат можно получить используя функцию СМЕЩ() 

=СУММ(СМЕЩ(A2;;;4))

Теперь более сложный пример, с областями.

Пусть имеется таблица продаж нескольких товаров по полугодиям.

Задав Товар, год и полугодие, можно вывести соответствующий объем продаж с помощью формулы =ИНДЕКС((B9:C12;D9:E12;F9:G12);B15;A19;B17)

Вся таблица как бы разбита на 3 подтаблицы (области), соответствующие отдельным годам: B9:C12; D9:E12; F9:G12. Задавая номер строки, столбца (в подтаблице) и номер области, можно вывести соответствующий объем продаж. В файле примера, выбранные строка и столбец выделены цветом с помощью Условного форматирования.

Связанные статьи

Похожие задачи
Прочитайте другие статьи, решающие похожие задачи в MS Excel. Это позволит Вам решать широкий класс подобных задач.
Средняя: 4.4 (7 оценок)