Оглавление
В этом учебном пособии вы найдете ряд примеров формул, которые демонстрируют наиболее эффективное использование ИНДЕКСА в Excel.
Из всех функций Excel, чьи возможности часто недооцениваются и не используются в полной мере, INDEX, безусловно, входит в первую десятку. Между тем, эта функция умная, гибкая и универсальная.
Итак, что представляет собой функция ИНДЕКС в Excel? По сути, формула ИНДЕКС возвращает ссылку на ячейку из заданного массива или диапазона. Другими словами, вы используете ИНДЕКС, когда знаете (или можете рассчитать) положение элемента в диапазоне и хотите получить фактическое значение этого элемента.
Это может показаться немного банальным, но как только вы осознаете реальный потенциал функции INDEX, она может внести кардинальные изменения в то, как вы рассчитываете, анализируете и представляете данные в своих рабочих листах.
Функция Excel ИНДЕКС - синтаксис и основные способы использования
В Excel существует две версии функции ИНДЕКС - форма массива и форма ссылки. Обе формы можно использовать во всех версиях Microsoft Excel 365 - 2003.
Форма массива INDEX
Форма массива INDEX возвращает значение определенного элемента в диапазоне или массиве на основе номеров строк и столбцов, которые вы указали.
INDEX(array, row_num, [column_num])- массив - это диапазон ячеек, именованный диапазон или таблица.
- row_num - номер строки в массиве, из которой нужно вернуть значение. Если row_num опущен, требуется column_num.
- номер_столбца - номер столбца, из которого возвращается значение. Если номер_столбца опущен, требуется номер_строки.
Например, формула =INDEX(A1:D6, 4, 3)
возвращает значение на пересечении 4-й строки и 3-го столбца в диапазоне A1:D6, которое является значением в ячейке C4.
Чтобы получить представление о том, как формула INDEX работает на реальных данных, пожалуйста, посмотрите следующий пример:
Вместо того чтобы вводить в формулу номера строк и столбцов, можно указать ссылки на ячейки, чтобы получить более универсальную формулу: =INDEX($B$2:$D$6, G2, G1)
Таким образом, эта формула INDEX возвращает количество товаров, находящихся точно на пересечении номера товара, указанного в ячейке G2 (row_num), и номера недели, введенного в ячейку G1 (column_num).
Совет. Использование абсолютных ссылок ($B$2:$D$6) вместо относительных (B2:D6) в аргументе массива облегчает копирование формулы в другие ячейки. В качестве альтернативы можно преобразовать диапазон в таблицу ( Ctrl + T ) и ссылаться на него по имени таблицы.
Форма массива INDEX - что нужно помнить
- Если аргумент массива состоит только из одной строки или столбца, вы можете указать или не указать соответствующий аргумент row_num или column_num.
- Если аргумент array включает более одной строки, а row_num опущен или установлен в 0, функция INDEX возвращает массив всего столбца. Аналогично, если array включает более одного столбца, а аргумент column_num опущен или установлен в 0, формула INDEX возвращает всю строку. Вот пример формулы, демонстрирующий такое поведение.
- Аргументы row_num и column_num должны ссылаться на ячейку в массиве; в противном случае формула INDEX вернет ошибку #REF!
Справочный бланк ИНДЕКС
Ссылочная форма функции Excel ИНДЕКС возвращает ссылку на ячейку на пересечении указанной строки и столбца.
INDEX(reference, row_num, [column_num], [area_num] )- ссылка - это один или несколько диапазонов.
Если вы вводите более одного диапазона, разделите диапазоны запятыми и заключите аргумент ссылки в круглые скобки, например (A1:B5, D1:F5).
Если каждый диапазон в ссылке содержит только одну строку или столбец, то соответствующий аргумент row_num или column_num является необязательным.
- row_num - номер строки в диапазоне, из которого нужно вернуть ссылку на ячейку, это аналогично форме массива.
- номер_столбца - номер столбца, из которого нужно вернуть ссылку на ячейку, также работает аналогично форме массива.
- номер_района - необязательный параметр, указывающий, какой диапазон из аргумента ссылки следует использовать. Если он опущен, формула INDEX вернет результат для первого диапазона, указанного в ссылке.
Например, формула =INDEX((A2:D3, A5:D7), 3, 4, 2)
возвращает значение ячейки D7, которая находится на пересечении 3-й строки и 4-го столбца во второй области (A5:D7).
Бланк справки ИНДЕКС - что нужно помнить
- Если аргумент row_num или column_num установлен в ноль (0), формула INDEX возвращает ссылку для всего столбца или строки, соответственно.
- Если строки_num и столбцы_num опущены, функция INDEX возвращает область, указанную в аргументе area_num.
- Все аргументы _num (row_num, column_num и area_num) должны ссылаться на ячейку внутри ссылки; в противном случае формула INDEX вернет ошибку #REF!
Обе формулы INDEX, которые мы рассмотрели до сих пор, очень просты и лишь иллюстрируют концепцию. Ваши реальные формулы, скорее всего, будут намного сложнее, поэтому давайте рассмотрим несколько наиболее эффективных вариантов использования INDEX в Excel.
Как использовать функцию ИНДЕКС в Excel - примеры формул
Возможно, практическое применение INDEX в Excel само по себе невелико, но в сочетании с другими функциями, такими как MATCH или COUNTA, он может создавать очень мощные формулы.
Исходные данные
Во всех наших формулах INDEX (кроме последней) мы будем использовать приведенные ниже данные. Для удобства они организованы в таблице с именем SourceData .
Использование таблиц или именованных диапазонов может сделать формулы немного длиннее, но это также делает их значительно более гибкими и лучше читаемыми. Чтобы настроить любую формулу INDEX для ваших рабочих листов, вам нужно изменить только одно имя, и это полностью компенсирует большую длину формулы.
Конечно, ничто не мешает вам использовать обычные диапазоны, если вы этого хотите. В этом случае вы просто заменяете имя таблицы SourceData с соответствующей ссылкой на диапазон.
1. получение N-го элемента из списка
Это основное использование функции INDEX и простейшая формула. Чтобы получить определенный элемент из списка, достаточно написать =INDEX(range, n)
где ассортимент это диапазон ячеек или именованный диапазон, и n это позиция элемента, который вы хотите получить.
При работе с таблицами Excel можно выделить столбец с помощью мыши, и Excel подтянет имя столбца вместе с именем таблицы в формулу:
Чтобы получить значение ячейки на пересечении заданных строки и столбца, вы используете тот же подход с той лишь разницей, что указываете оба значения - номер строки и номер столбца. На самом деле, вы уже видели такую формулу в действии, когда мы обсуждали форму массива INDEX.
И вот еще один пример. В нашей таблице-образце, чтобы найти 2-ю по величине планету в Солнечной системе, вы сортируете таблицу по значению Диаметр столбец, и используйте следующую формулу INDEX:
=INDEX(SourceData, 2, 3)
Массив
это имя таблицы или ссылка на диапазон, SourceData в данном примере.Row_num
равно 2, потому что вы ищете второй элемент в списке, который находится во 2-омColumn_num
равно 3, потому что Диаметр является 3-й колонкой в таблице.
Если вы хотите вернуть название планеты, а не диаметр, измените column_num на 1. И, естественно, вы можете использовать ссылку на ячейку в аргументах row_num и/или column_num, чтобы сделать вашу формулу более универсальной, как показано на скриншоте ниже:
2. получение всех значений в строке или столбце
Помимо извлечения одной ячейки, функция INDEX может возвращать массив значений из массива весь ряд или колонка Чтобы получить все значения из определенного столбца, нужно опустить аргумент row_num или установить его в 0. Аналогично, чтобы получить всю строку, нужно передать пустое значение или 0 в column_num.
Такие формулы INDEX вряд ли можно использовать самостоятельно, потому что Excel не может вместить массив значений, возвращаемых формулой, в одну ячейку, и вы получите ошибку #VALUE! Однако если вы используете INDEX в сочетании с другими функциями, такими как SUM или AVERAGE, вы получите потрясающие результаты.
Например, вы можете использовать следующую формулу для расчета средней температуры планеты в Солнечной системе:
=AVERAGE(INDEX(SourceData, , 4))
В приведенной выше формуле аргумент column_num равен 4, потому что Температура в 4-м столбце нашей таблицы. Параметр row_num опущен.
Аналогичным образом можно найти минимальную и максимальную температуру:
=MAX(INDEX(SourceData, , 4))
=MIN(INDEX(SourceData, , 4))
И вычислите общую массу планеты (Масса - 2-й столбец в таблице):
=SUM(INDEX(SourceData, , 2))
С практической точки зрения, функция INDEX в приведенной выше формуле является лишней. Вы можете просто написать =AVERAGE(range)
или =SUM(диапазон)
и получить те же результаты.
При работе с реальными данными эта функция может оказаться полезной в составе более сложных формул, которые вы используете для анализа данных.
3. использование INDEX с другими функциями (SUM, AVERAGE, MAX, MIN)
Из предыдущих примеров у вас может сложиться впечатление, что формула INDEX возвращает значения, но на самом деле она возвращает величину ссылка в ячейку, содержащую значение. И этот пример демонстрирует истинную природу функции Excel ИНДЕКС.
Поскольку результатом формулы INDEX является ссылка, мы можем использовать ее в других функциях, чтобы сделать динамический диапазон Звучит запутанно? Следующая формула все прояснит.
Предположим, у вас есть формула = СРЕДНЕЕ(A1:A10)
которая возвращает среднее значение значений в ячейках A1:A10. Вместо того, чтобы записывать диапазон непосредственно в формуле, вы можете заменить A1 или A10, или оба, функциями INDEX, как показано ниже:
= СРЕДНЕЕ(A1 : INDEX(A1:A20,10))
Обе приведенные выше формулы дадут одинаковый результат, поскольку функция INDEX также возвращает ссылку на ячейку A10 (row_num установлен в 10, col_num опущен). Разница в том, что диапазон в формуле AVERAGE / INDEX динамический, и как только вы измените аргумент row_num в INDEX, диапазон, обрабатываемый функцией AVERAGE, изменится, и формула вернет другой результат.
На первый взгляд, маршрут формулы INDEX кажется слишком сложным, однако он имеет практическое применение, как показано в следующих примерах.
Пример 1. Вычислить среднее значение для N лучших элементов в списке
Допустим, вы хотите узнать средний диаметр N самых больших планет в нашей системе. Итак, вы сортируете таблицу по следующим параметрам Диаметр столбец от наибольшего к наименьшему и используйте следующую формулу Среднее / Индекс:
=AVERAGE(C5 : INDEX(SourceData[Diameter], B1))
Пример 2. Сумма элементов между указанными двумя элементами
Если вы хотите определить верхнюю и нижнюю границы в вашей формуле, вам просто нужно использовать две функции INDEX, чтобы вернуть первый и последний элемент, который вы хотите.
Например, следующая формула возвращает сумму значений в поле Диаметр столбец между двумя элементами, указанными в ячейках B1 и B2:
=SUM(INDEX(SourceData[Diameter],B1) : INDEX(SourceData[Diameter], B2))
4. формула INDEX для создания динамических диапазонов и выпадающих списков
Как это часто бывает, когда вы начинаете организовывать данные в рабочем листе, вы можете не знать, сколько записей у вас в итоге получится. Это не относится к нашей таблице планет, которая кажется полной, но кто знает...
В любом случае, если у вас есть изменяющееся количество элементов в данном столбце, скажем, от A1 до A n Например, если у вас сейчас 10 элементов, именованный диапазон будет A1:A10. Если вы добавите новую запись, именованный диапазон автоматически расширится до A1:A11, а если вы передумаете и удалите новые данные, именованный диапазон автоматически расширится до A1:A11,диапазон автоматически возвращается к A1:A10.
Главное преимущество этого подхода заключается в том, что вам не придется постоянно обновлять все формулы в рабочей книге, чтобы убедиться, что они ссылаются на правильные диапазоны.
Одним из способов определения динамического диапазона является использование функции Excel OFFSET:
=OFFSET(Sheet_Name!$A$1, 0, 0, COUNTA(Sheet_Name!$A:$A), 1)
Другим возможным решением является использование ИНДЕКСА Excel вместе с COUNTA:
=Sheet_Name!$A$1:INDEX(Sheet_Name!$A:$A, COUNTA(Sheet_Name!$A:$A))
В обеих формулах A1 - это ячейка, содержащая первый элемент списка, и динамический диапазон, создаваемый обеими формулами, будет идентичным.
Разница заключается в подходах. В то время как функция OFFSET перемещается от начальной точки на определенное количество строк и/или столбцов, INDEX находит ячейку на пересечении определенной строки и столбца. Функция COUNTA, используемая в обеих формулах, получает количество непустых ячеек в интересующем столбце.
В данном примере в столбце A есть 9 незаполненных ячеек, поэтому COUNTA возвращает 9. Следовательно, INDEX возвращает $A$9, которая является последней использованной ячейкой в столбце A (обычно INDEX возвращает значение, но в этой формуле оператор ссылки (:) заставляет его возвращать ссылку). И поскольку $A$1 является нашей отправной точкой, конечным результатом формулы является диапазон $A$1:$A$9.
Следующий снимок экрана демонстрирует, как можно использовать такую формулу Index для создания динамического выпадающего списка.
Совет. Самый простой способ создать динамически обновляемый выпадающий список - сделать именованный список на основе таблицы. В этом случае вам не понадобятся сложные формулы, поскольку таблицы Excel сами по себе являются динамическими диапазонами.
Вы также можете использовать функцию ИНДЕКС для создания зависимых раскрывающихся списков, и в следующем учебном пособии объясняются шаги: Создание каскадного раскрывающегося списка в Excel.
5. Мощные Vlookups с INDEX / MATCH
Выполнение вертикального поиска - вот где функция ИНДЕКС действительно сияет. Если вы когда-нибудь пробовали использовать функцию Excel VLOOKUP, вы хорошо знаете о ее многочисленных ограничениях, таких как невозможность извлечь значения из столбцов слева от столбца поиска или ограничение в 255 символов для значения поиска.
Связь INDEX / MATCH превосходит VLOOKUP по многим параметрам:
- Никаких проблем с левыми vlookups.
- Нет ограничений на размер значения поиска.
- Сортировка не требуется (VLOOKUP с приблизительным совпадением требует сортировки столбца поиска в порядке возрастания).
- Вы можете свободно вставлять и удалять столбцы в таблице без обновления всех связанных с ними формул.
- И последнее, но не менее важное: INDEX / MATCH не замедляет работу Excel, как это делают многочисленные Vlookups.
Вы используете INDEX / MATCH следующим образом:
=INDEX ( столбец, чтобы вернуть значение из , (MATCH ( значение поиска , столбец для поиска , 0))Например, если мы перевернем нашу исходную таблицу так, чтобы Название планеты становится крайним правым столбцом, формула INDEX / MATCH все равно без проблем находит совпадающее значение из левого столбца.
Дополнительные советы и пример формулы можно найти в учебнике Excel INDEX / MATCH.
6. формула Excel INDEX для получения 1 диапазона из списка диапазонов
Еще одно умное и мощное использование функции ИНДЕКС в Excel - это возможность получить один диапазон из списка диапазонов.
Предположим, у вас есть несколько списков с разным количеством элементов в каждом. Верите вы мне или нет, но вы можете вычислить среднее значение или сумму значений в любом выбранном диапазоне с помощью одной формулы.
Во-первых, вы создаете именованный диапазон для каждого списка; пусть это будет ПланетыD и MoonsD в данном примере:
Я надеюсь, что приведенное выше изображение объясняет причину названий диапазонов : ) BTW, the Луны Таблица далеко не полная, в нашей Солнечной системе известно 176 естественных лун, только у Юпитера в настоящее время их 63, и еще столько же. Для этого примера я выбрал случайно 11, ну... может быть, не совсем случайно - лун с самыми красивыми названиями : )
Прошу прощения за отступление, вернемся к нашей формуле ИНДЕКС. Предположим, что ПланетыD это ваш диапазон 1 и MoonsD это диапазон 2, а ячейка B1 - это ячейка, в которую вы поместили номер диапазона, вы можете использовать следующую формулу Index для вычисления среднего значения значений в выбранном именованном диапазоне:
=AVERAGE(INDEX((PlanetsD, MoonsD), , , B1))
Обратите внимание, что сейчас мы используем справочную форму функции INDEX, и число в последнем аргументе (area_num) указывает формуле, какой диапазон выбрать.
На скриншоте ниже, area_num (ячейка B1) имеет значение 2, поэтому формула вычисляет средний диаметр Луны потому что диапазон MoonsD занимает 2-е место в аргументе ссылки.
Если вы работаете с несколькими списками и не хотите запоминать соответствующие номера, вы можете использовать вложенную функцию IF, чтобы сделать это за вас:
=AVERAGE(INDEX((PlanetsD, MoonsD), , , IF(B1="планеты", 1, IF(B1="луны", 2))))
В функции ЕСЛИ вы используете несколько простых и легко запоминающихся имен списка, которые вы хотите, чтобы пользователи вводили в ячейку B1 вместо чисел. Пожалуйста, имейте в виду, чтобы формула работала правильно, текст в B1 должен быть точно таким же (без учета регистра), как в параметрах ЕСЛИ, иначе ваша формула Index выдаст ошибку #VALUE.
Чтобы сделать формулу еще более удобной для пользователя, вы можете использовать проверку данных для создания выпадающего списка с предопределенными именами, чтобы предотвратить орфографические ошибки и опечатки:
Наконец, чтобы сделать вашу формулу INDEX абсолютно совершенной, вы можете заключить ее в функцию IFERROR, которая предложит пользователю выбрать элемент из выпадающего списка, если выбор еще не был сделан:
=IFERROR(AVERAGE(INDEX((PlanetsD, MoonsD), , , IF(B1="планета", 1, IF(B1="луна", 2)))), "Пожалуйста, выберите список!")
Вот так можно использовать формулы INDEX в Excel. Надеюсь, эти примеры показали вам, как использовать потенциал функции INDEX в ваших рабочих листах. Спасибо за чтение!