Функция ИНДЕКС (англ. INDEX) в Excel с примерами
О том как работает функция ИНДЕКС (англ. INDEX) мы уже писали в отдельной статье, но в чистом виде как правило данная функция применяется не так часто. Напомним, что функция ИНДЕКС возвращает значение на пересечении указанной строки и столбца определенного диапазона.
Давайте вспомним как работает эта функция, а после этого рассмотрим работу данной функции совместно с функцией ПОИСКПОЗ (англ. MATCH)
Посмотрите на вот этот пример
Есть таблица с продажами различных фруктов в разных магазинах – это область A2:F10
Напомню синтаксис функции ИНДЕКС:
=ИНДЕКС(массив; номер_строки; номер_столбца)
где массив – это наша таблица A2:F10
номер_строки – как следует из описания – это номер строки нашего массива (таблицы), Обратите внимание! Номер строки необходимо считать именно по нашему указанному массиву, а не вообще с первой строки. Наша таблица начинается со второй строки.
номер_столбца – это номер столбца указанного массива. В нашем случае первый столбец совпадает с первым столбцом нашего массива.
Давайте представим, что нам необходимо найти продажи Слив в магазине Перекресток. С помощью формулы с использованием функции ИНДЕКС это будет выглядеть следующим образом.
=ИНДЕКС(A2:F10;5;3) – смотрите рисунок выше
Еще раз обратите внимание, слива находится в 6-й строке на данном листе, но если рассматривать именно наш массив A2:F10, то видно, что Слива расположена на 5-й строчке данной таблицы. Как видите, все очень просто, но в таком виде формула не имеет применения, так как номер строки и номер столбца мы считали устно и без формулы. Если нам необходимо найти данные по другим товарам нам так же придется все считать устно и указывать номера строк и номера столбцов. Поэтому, в большинстве случаях функцию ИНДЕКС используют совместно с другими функциями, часто с функцией ПОИСКПОЗ, которая позволяет найти номер строки и столбца автоматически.
Функция ИНДЕКС в Excel с функцией ПОИСКПОЗ
Рассмотрим тот же пример. У нас есть таблица по продажам, у нас она маленькая, но это может быть огромный отчет на несколько листов и большим количество магазинов.
И вот из этого отчета нам необходимо вытащить определенные данные. Например, продажи только Груш, Слив и Киви в магазине Перекресток и Лента – правая таблица с желтыми ячейками.
Конечно, в данном случае можно использовать функцию ВПР, при этом номер столбца нам нужно будет считать вручную. Перекресток это 3-й столбец, а Лента это 4-й столбец. Но представим, что количество магазинов будет очень много, к тому же данный отчет нам присылают каждый месяц и магазины могут быть в разных столбцах, кроме того, могут добавляться новые магазины. В данном случае нам будет неудобно использовать ВПР, так как номер столбца нам в каждом случае придется находить заново.
Поэтому в данном случае мы будет использовать функцию ИНДЕКС и ПОИСКПОЗ, к тому же, если данных очень много, то функция ИНДЕКС работает заметно быстрее функции ВПР. Функцию ИНДЕКС мы рассмотрели выше, функцию ПОИСКПОЗ мы описывали в отдельной статье.
[ads]Итак, давайте для наглядности, чтобы вы видели последовательность действий, сначала пропишем функцию ИНДЕКС в чистом виде. В ячейке L4 нам необходимо найти из таблицы A2:F10 продажи Груш в Перекрестке. Пропишем формулу
=ИНДЕКС(A2:F10;3;3) – груша находится в третьей строке таблицы A2:F10, а Перекресток в третьем столбце. Отлично, а теперь пропишем формулу, чтобы номер строки и номер столбца считался автоматически.
Чтобы найти номер строки используем функцию ПОИСКПОЗ – поиск позиции. Синтаксис функции:
=ПОИСКПОЗ(искомое_значение, просматриваемый_массив, [тип_сопоставления])
искомое_значение – нашем случае, в ячейке L4 мы ищем груши, поэтому искомое значение у нас будет K4
просматриваемый массив – нашем примере нам необходимо найти груши с столбце с фруктами – это диапазон A2:A10
тип_сопоставления – указываем 0, так как мы ищем полное совпадение.
Формула будет иметь следующий вид:
=ПОИСКПОЗ(K4;A2:A10;0) – итогом данной формулы будет позиция 3 в диапазоне A2:A10
аналогично, только в горизонтальном виде находим номер столбца.
искомое_значение – магазин перекресток или ячейка L3
просматриваемый массив – магазин мы находим в строке с магазинами – это диапазон A2:F2
тип_сопоставления – указываем 0, так как мы ищем точное совпадение.
в итоге получаем формулу:
=ПОИСКПОЗ(L3;A2:F2;0) – итогом данной формулы будет позиция 3 в диапазоне A2:F2
Теперь в нашу формулу =ИНДЕКС(A2:F10;3,3) вместо номера строки и номера столбца пропишем раноценные значения, но в виде формул:
=ИНДЕКС(A2:F10;ПОИСКПОЗ(K4;A2:A10;0);ПОИСКПОЗ(L3;A2:F2;0))
Наша формула практически готова. У нас автоматически находится номер строки и номер столбца. Осталось только доделать формулу, чтобы ее можно было протянуть вниз на все товары и право на все магазины. Если мы сделаем это сейчас, то расчет будет неверным так как:
наш массив A2:F10 имеет относительный адрес, поэтому при протягивании формулы вниз и право диапазон так же будет сдвигаться, а он у нас постоянный, поэтому пропишем преобразуем его в абсолютный адрес, для этого пропишем знаки долларов перед столбцами и строки (можно выделить данный диапазон в формуле и нажать клавишу F4).
A2:F10 → $A$2:$F$10
Далее идет номер строки с формулой ПОИСКПОЗ(K4;A2:A10;0), при протягивании вниз у нас автоматически K4 (Груши) поменяется на K5 (Сливы), что нам и требуется, но диапазон, А2:A10 у нас постоянный, поэтому пропишем его в абсолютном виде А2:A10 → $А$2:$A$10
Все отлично, но когда мы будем протягивать формулу вправо, то K4 (Груши) автоматически поменяется на L4, нам же необходимо, чтобы при протягивании право K4 не менялось. Но мы помним, что в то же время нам необходимо, чтобы K4 менялось при протягивании вниз. Поэтому нам необходимо закрепить только столбец (K), а строка должна меняться. Пропишем знак доллар только перед столбцом К4 → $K4
В итоге формула поиска номера строки будет выглядеть ПОИСКПОЗ($K4;$A$2:$A$10;0)
Аналогично с номером столбца, диапазон должен быть полностью закреплен, при протягивании вправо столбец должен меняться, а при протягивании вниз номер строки (строка с магазинами) не должен меняться. Для этого пропишем знак доллара только перед номером строки L3 → L$3
В итоге формула поиска номера столбца будет выглядеть ПОИСКПОЗ(L$3;$A$2:$F$2;0)
Итоговая формула, которую вы можете протянуть вниз и вправо
=ИНДЕКС($A$2:$F$10;ПОИСКПОЗ($K4;$A$2:$A$10;0);ПОИСКПОЗ(L$3;$A$2:$F$2;0))
=INDEX($A$2:$F$10;MATCH($K4;$A$2:$A$10;0);MATCH(L$3;$A$2:$F$2;0)) – англ. версии
Важно, чтобы названия магазинов и фруктов были полностью аналогичными, если в одной из таблиц будет, например, ошибка или лишний пробел, то формула выдаст ошибку.
С данной формулой вы можете менять местами названия столбцов, добавлять другие магазины и фрукты – формула все равно будет работать, но не забудьте так же менять диапазоны. Можно заранее взять с большим запасом диапазоны, если вы знаете, что данные будут добавляться.
Надеюсь, что статья помогла вам разобраться в данной полезной функции ИНДЕКС и ПОИСКПОЗ. Спасибо за лайки, подписывайтесь на наши страницы и группы в социальных сетях.
Скачать пример файла – Функция-ИНДЕКС-и-ПОИСКПОЗ.xlsx
Добрый день!
А если фрукты по сортам (сорт указан в отдельной колонке), и, например, сорт Богатырь встречается и у яблок, и у груш. Как выбрать только по грушам сорта Богатырь? То есть, если выбор строки нужен по двум параметрам (2 колонки с наименованиями “Товар” и “Сорт” и множество колонок со значениями для каждого из магазинов) и среди перечня товаров выбираем “груши”, и в перечне сортов выбираем “Богатырь”, как правильно написать формулу?
можно сделать дополнительный служебный столбец где объединить фрукт и сорт через &. Например =A1&B1 получиться что-то типа такого “ЯблокиБогатырь” и по данному столбу уже искать, он будет уникальный.
Вложение
Добрый день!
Возможно повторюсь, но всё же. Не могу тут найти ответ на свой вопрос.
Есть таблица с именами и датами (см. рисунок). В каждой дате есть несколько показателей (количество столбцов и показатели по каждой дате одинаковые). Задачка такая. Нужно найти для каждой фамилии или сумму или среднее значение или просто количество показателей за все числа.
То есть. Например есть показатель – КТУ. Нужно сделать выборку по всем числам и вывести средний показатель. По каждому человеку (то есть по каждой строчке). Есть показатель – Отработано часов. Нужно найти общую сумму и количество ячеек, в которых есть цифры. И тд по всем показателям.
Простите, если я был невнимателен и такая задачка тут уже описана. Но я так и не нашел.
Во-первых вам ничего не мешает сделать прямо прямые ссылки на эти показатели. Сделать отдельный столбец показатель КТУ. Один раз вручную просуммировать все даты и поделить на кол-во дат и получить средний показатель.
Во-вторых можно сделать привязку к показателю с помощью если. ЕСЛИ(“ячейка х”=”КТУ”; то_=СРЗНАЧЕСЛИ(весь_дапазон;”КТУ”);ЕСЛИ(“ячейка х”=”Отработано часов”;то_=СУММЕСЛИ(весь_дапазон;”Отработано часов”);….. и т.д
Но мне кажется удобнее в конце сделать результирующие столбцы по всем показателям и просто пройтись вручную или с помощью СУММЕСЛИ, СРЗНАЧЕСЛИ. Если же еще и под дате нужно делать фильтр. Например есть данные за весь месяц а нужно только до 20 числа. Тогда вместо СУММЕСЛИ нужно использовать СУММЕСЛИМН ну и даты нужно будет разместить во все ячейки (повторяясь) а не как у вас с объединенными ячейками.
поискпоз работает в столбце, а не в диапазоне, верно?
тогда здесь формулы нужно исправить
=ПОИСКПОЗ(L3;A2:A2;0) — итогом данной формулы будет позиция 3 в диапазоне A2:A2
Теперь в нашу формулу =ИНДЕКС(A2:A10;3,3)
Спасибо за подробное объяснение.
Индира, это уже будет другая функция, здесь не по теме 🙂
А как будет выглядеть формула, чтобы она суммировала числа из заданного диапазона при повторяющихся значениях в строках (напр., груши в двух строках есть)?