5 вариантов использования функции ИНДЕКС (INDEX)
Бывает у вас такое: смотришь на человека и думаешь "что за @#$%)(*?" А потом при близком знакомстве оказывается, что он знает пять языков, прыгает с парашютом, имеет семеро детей и черный пояс в шахматах, да и, вообще, добрейшей души человек и умница?
Так и в Microsoft Excel: есть несколько похожих функций, про которых фраза "внешность обманчива" работает на 100%. Одна из наиболее многогранных и полезных - функция ИНДЕКС (INDEX). Далеко не все пользователи Excel про нее знают, и еще меньше используют все её возможности. Давайте разберем варианты ее применения, ибо их аж целых пять.
Вариант 1. Извлечение данных из столбца по номеру ячейки
Самый простой случай использования функции ИНДЕКС – это ситуация, когда нам нужно извлечь данные из одномерного диапазона-столбца, если мы знаем порядковый номер ячейки. Синтаксис в этом случае будет:
=ИНДЕКС(Диапазон_столбец; Порядковый_номер_ячейки)
Этот вариант известен большинству продвинутых пользователей Excel. В таком виде функция ИНДЕКС часто используется в связке с функцией ПОИСКПОЗ (MATCH), которая выдает номер искомого значения в диапазоне. Таким образом, эта пара заменяет легендарную ВПР (VLOOKUP):
... но, в отличие от ВПР, могут извлекать значения левее поискового столбца и номер столбца-результата высчитывать не нужно.
Вариант 2. Извлечение данных из двумерного диапазона
Если диапазон двумерный, т.е. состоит из нескольких строк и столбцов, то наша функция будет использоваться немного в другом формате:
=ИНДЕКС(Диапазон; Номер_строки; Номер_столбца)
Т.е. функция извлекает значение из ячейки диапазона с пересечения строки и столбца с заданными номерами.
Легко сообразить, что с помощью такой вариации ИНДЕКС и двух функций ПОИСКПОЗ можно легко реализовать двумерный поиск:
Вариант 3. Несколько таблиц
Если таблица не одна, а их несколько, то функция ИНДЕКС может извлечь данные из нужной строки и столбца именно заданной таблицы. В этом случае используется следующий синтаксис:
=ИНДЕКС((Диапазон1;Диапазон2;Диапазон3); Номер_строки; Номер_столбца; Номер_диапазона)
Обратите особое внимание, что в этом случае первый аргумент – список диапазонов - заключается в скобки, а сами диапазоны перечисляются через точку с запятой.
Вариант 4. Ссылка на столбец / строку
Если во втором варианте использования функции ИНДЕКС номер строки или столбца задать равным нулю (или просто не указать), то функция будет выдавать уже не значение, а ссылку на диапазон-столбец или диапазон-строку соответственно:
Обратите внимание, что поскольку ИНДЕКС выдает в этом варианте не конкретное значение ячейки, а ссылку на диапазон, то для подсчета потребуется заключить ее в дополнительную функцию, например СУММ (SUM), СРЗНАЧ (AVERAGE) и т.п.
Вариант 5. Ссылка на ячейку
Общеизвестно, что стандартная ссылка на любой диапазон ячеек в Excel выглядит как Начало-Двоеточие-Конец, например A2:B5. Хитрость в том, что если взять функцию ИНДЕКС в первом или втором варианте и подставить ее после двоеточия, то наша функция будет выдавать уже не значение, а адрес, и на выходе мы получим полноценную ссылку на диапазон от начальной ячейки до той, которую нашла ИНДЕКС:
Нечто похожее можно реализовать функцией СМЕЩ (OFFSET), но она, в отличие от ИНДЕКС, является волатильной, т.е. пересчитывается каждый раз при изменении любой ячейки листа. ИНДЕКС же работает более тонко и запускает пересчет только при изменении своих аргументов, что ощутимо ускоряет расчет в тяжелых книгах по сравнению со СМЕЩ.
Один из весьма распространенных на практике сценариев применения ИНДЕКС в таком варианте - это сочетание с функцией СЧЁТЗ (COUNTA), чтобы получить автоматически растягивающиеся диапазоны для выпадающих списков, сводных таблиц и т.д.
Ссылки по теме
- Трехмерный поиск данных по нескольким листам (ВПР 3D)
- Поиск и подстановка по нескольким условиям (ВПР по нескольким столбцам)
- Подстановка данных из одной таблицы в другую с помощью функции ВПР (VLOOKUP)
На примере данных "Варианта 5":
Нужно получить массив из чисел 1го, 3го и 4го элемента
Вариант
можно убедится, следующие формулы возвращают только первое значение:
Однако это ограничение можно обойти используя конструкцию:
можно полную формулу, как это должно выглядеть?
На листе "ИНДЕКС 7"
вводим формулу:
Получим результат: 16976
Фактически вычисляется: СУММ({6050;9672;1254})
Нашёл обсуждение фишки и примеры применения, но не нашёл объяснения, почему она работает. Также ставит в тупик вопрос, почему без формулы массива ответ формулы ниже - это ячейка С4:
Имеем в столбце D со 2 строки по 12 наименования товара, в столбце Е так же по строкам даты.
Допустим в ячейку F18 вносим наименование товара и в ячейке с формулой {=MAKC(ЕСЛИ(F18=D2:D12;E2:E12))} получаем максимальную дату для выбранного товара.
Не забываем про сочетание Ctrl+Shift+Enter при вводе формулы
Например как-то так использую, чтобы вытащить из любой плоской таблицы данные по сложному условию (и никакой тебе предварительной сортировки и фильтрации):
Есть вопрос по варианту 5 из статьи. В приведенном примере вычисляется сумма первых трех значений столбца. А если нужно сделать наоборот, т.е. посчитать сумму трех последних значений столбца? Как это можно реализовать с помощью ИНДЕКС и СУММ? Я пробовал написать формулу самостоятельно, но что-то не получается. Если не трудно, то подскажите как это сделать. Заранее благодарен.
Я люблю еще использовать «ИНДЕКС» для вычисления «названий месяца на русском», получается красиво:
=ИНДЕКС({"Январь":"Февраль":"Март":"Апрель":"Май":"Июнь":"Июль":"Август":"Сентябрь":"Октябрь":"Ноябрь":"Декабрь"};МЕСЯЦ(A2))
Например, скачал файл с примером с этой страницы, на листе с 1 примером добавил как указано пример с городами и странами
В чем ошибка?
Может так можно хитрить с чем-нибудь ещё, расскажите, пожалуйста, поподробнее про эту младшую сестру ДВССЫЛ.
Ваш сайт и ваши уроки разделяют людей на несколько категорий.
Работаю и проживаю в Швейцарии. PLEX пугает иностранцев. Они не могут поверить, что все так доступно.
Учителей Эксел в избытке (с академическими знаниями), но вот Педагогов не хватает, которые могут донести до пользователя сложные формулы простым языком.
Вам это удается мастерски.
Je vous remercie pour vos etudes et je vous souhaite tres bonne journee,
вот пример таблицы
Суть задачи:
По столбцу заголовка на листе1 нужно найти совпадения на лист4, лист5 и лист6 и вывести результат.
в таблице разные формулы для проверки их можно удалить. оставить только рабочий результат.
заранее спасибо
=
XLOOKUP(M1;$C$1:$C$100;$D$1;$D$100;"не найден";0;1)
M1 - lookup_value
$C$1:$C$100 - lookup_array
$D$1;$D$100 - return_array
"не найден" - [if_not_found]
0 - [match_mode] (0-exact match)
1 - [search_mode] (1 - Search first to last / -1 -Search last to first)