The INDEX function returns a value or the reference to a value from within a table or range.
There are two ways to use the INDEX function:
-
If you want to return the value of a specified cell or array of cells, see Array form.
-
If you want to return a reference to specified cells, see Reference form.
Array form
Description
Returns the value of an element in a table or an array, selected by the row and column number indexes.
Use the array form if the first argument to INDEX is an array constant.
Syntax
INDEX(array, row_num, [column_num])
The array form of the INDEX function has the following arguments:
-
array Required. A range of cells or an array constant.
-
If array contains only one row or column, the corresponding row_num or column_num argument is optional.
-
If array has more than one row and more than one column, and only row_num or column_num is used, INDEX returns an array of the entire row or column in array.
-
-
row_num Required, unless column_num is present. Selects the row in array from which to return a value. If row_num is omitted, column_num is required.
-
column_num Optional. Selects the column in array from which to return a value. If column_num is omitted, row_num is required.
Remarks
-
If both the row_num and column_num arguments are used, INDEX returns the value in the cell at the intersection of row_num and column_num.
-
row_num and column_num must point to a cell within array; otherwise, INDEX returns a #REF! error.
-
If you set row_num or column_num to 0 (zero), INDEX returns the array of values for the entire column or row, respectively. To use values returned as an array, enter the INDEX function as an array formula.
Note: If you have a current version of Microsoft 365, then you can input the formula in the top-left-cell of the output range, then press ENTER to confirm the formula as a dynamic array formula. Otherwise, the formula must be entered as a legacy array formula by first selecting the output range, input the formula in the top-left-cell of the output range, then press CTRL+SHIFT+ENTER to confirm it. Excel inserts curly brackets at the beginning and end of the formula for you. For more information on array formulas, see Guidelines and examples of array formulas.
Examples
Example 1
These examples use the INDEX function to find the value in the intersecting cell where a row and a column meet.
Copy the example data in the following table, and paste it in cell A1 of a new Excel worksheet. For formulas to show results, select them, press F2, and then press Enter.
Data |
Data |
|
---|---|---|
Apples |
Lemons |
|
Bananas |
Pears |
|
Formula |
Description |
Result |
=INDEX(A2:B3,2,2) |
Value at the intersection of the second row and second column in the range A2:B3. |
Pears |
=INDEX(A2:B3,2,1) |
Value at the intersection of the second row and first column in the range A2:B3. |
Bananas |
Example 2
This example uses the INDEX function in an array formula to find the values in two cells specified in a 2×2 array.
Note: If you have a current version of Microsoft 365, then you can input the formula in the top-left-cell of the output range, then press ENTER to confirm the formula as a dynamic array formula. Otherwise, the formula must be entered as a legacy array formula by first selecting two blank cells, input the formula in the top-left-cell of the output range, then press CTRL+SHIFT+ENTER to confirm it. Excel inserts curly brackets at the beginning and end of the formula for you. For more information on array formulas, see Guidelines and examples of array formulas.
Formula |
Description |
Result |
---|---|---|
=INDEX({1,2;3,4},0,2) |
Value found in the first row, second column in the array. The array contains 1 and 2 in the first row and 3 and 4 in the second row. |
2 |
Value found in the second row, second column in the array (same array as above). |
4 |
|
Top of Page
Reference form
Description
Returns the reference of the cell at the intersection of a particular row and column. If the reference is made up of non-adjacent selections, you can pick the selection to look in.
Syntax
INDEX(reference, row_num, [column_num], [area_num])
The reference form of the INDEX function has the following arguments:
-
reference Required. A reference to one or more cell ranges.
-
If you are entering a non-adjacent range for the reference, enclose reference in parentheses.
-
If each area in reference contains only one row or column, the row_num or column_num argument, respectively, is optional. For example, for a single row reference, use INDEX(reference,,column_num).
-
-
row_num Required. The number of the row in reference from which to return a reference.
-
column_num Optional. The number of the column in reference from which to return a reference.
-
area_num Optional. Selects a range in reference from which to return the intersection of row_num and column_num. The first area selected or entered is numbered 1, the second is 2, and so on. If area_num is omitted, INDEX uses area 1. The areas listed here must all be located on one sheet. If you specify areas that are not on the same sheet as each other, it will cause a #VALUE! error. If you need to use ranges that are located on different sheets from each other, it is recommended that you use the array form of the INDEX function, and use another function to calculate the range that makes up the array. For example, you could use the CHOOSE function to calculate which range will be used.
For example, if Reference describes the cells (A1:B4,D1:E4,G1:H4), area_num 1 is the range A1:B4, area_num 2 is the range D1:E4, and area_num 3 is the range G1:H4.
Remarks
-
After reference and area_num have selected a particular range, row_num and column_num select a particular cell: row_num 1 is the first row in the range, column_num 1 is the first column, and so on. The reference returned by INDEX is the intersection of row_num and column_num.
-
If you set row_num or column_num to 0 (zero), INDEX returns the reference for the entire column or row, respectively.
-
row_num, column_num, and area_num must point to a cell within reference; otherwise, INDEX returns a #REF! error. If row_num and column_num are omitted, INDEX returns the area in reference specified by area_num.
-
The result of the INDEX function is a reference and is interpreted as such by other formulas. Depending on the formula, the return value of INDEX may be used as a reference or as a value. For example, the formula CELL(«width»,INDEX(A1:B2,1,2)) is equivalent to CELL(«width»,B1). The CELL function uses the return value of INDEX as a cell reference. On the other hand, a formula such as 2*INDEX(A1:B2,1,2) translates the return value of INDEX into the number in cell B1.
Examples
Copy the example data in the following table, and paste it in cell A1 of a new Excel worksheet. For formulas to show results, select them, press F2, and then press Enter.
Fruit |
Price |
Count |
---|---|---|
Apples |
$0.69 |
40 |
Bananas |
$0.34 |
38 |
Lemons |
$0.55 |
15 |
Oranges |
$0.25 |
25 |
Pears |
$0.59 |
40 |
Almonds |
$2.80 |
10 |
Cashews |
$3.55 |
16 |
Peanuts |
$1.25 |
20 |
Walnuts |
$1.75 |
12 |
Formula |
Description |
Result |
=INDEX(A2:C6, 2, 3) |
The intersection of the second row and third column in the range A2:C6, which is the contents of cell C3. |
38 |
=INDEX((A1:C6, A8:C11), 2, 2, 2) |
The intersection of the second row and second column in the second area of A8:C11, which is the contents of cell B9. |
1.25 |
=SUM(INDEX(A1:C11, 0, 3, 1)) |
The sum of the third column in the first area of the range A1:C11, which is the sum of C1:C11. |
216 |
=SUM(B2:INDEX(A2:C6, 5, 2)) |
The sum of the range starting at B2, and ending at the intersection of the fifth row and the second column of the range A2:A6, which is the sum of B2:B6. |
2.42 |
Top of Page
See Also
VLOOKUP function
MATCH function
INDIRECT function
Guidelines and examples of array formulas
Lookup and reference functions (reference)
Note that if you declare Dim Purchasing_Document, Backup_Purchasing_Document As String
only the last variable is a String
but the first is a Variant
. In VBA you need to specify a type for every variable: Dim Purchasing_Document As String, Backup_Purchasing_Document As String
.
The documentation of the Range.Find method states:
The settings for
LookIn
,LookAt
,SearchOrder
, andMatchByte
are saved each time you use this method. If you do not specify values for these arguments the next time you call the method, the saved values are used.
So if using Find
you should at least specify these 4 parameters or you cannot predict which setting Find
is using for these parameters.
Also LookAt:=xlWhole
is necessary to distinguish between "Purchasing Document"
and "Backup Purchasing Document"
because the first is part of the second.
So at least do the following:
Public Function FindIndexCol(ByVal IndexRow As String, ByVal IndexCol As String) As String
Dim rngIndexCol As Range
Set rngIndexRow = Worksheets("sheet1").Range(IndexRow)
Dim rngIndexCol As Range
Set rngIndexCol = rngIndexRow.Find(What:=IndexCol, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns, MatchByte:=False)
If Not rngIndexCol Is Nothing Then
FindIndexCol = Split(Cells(1, rngIndexCol.Column).Address, "$")(1)
Else
'output some error if nothing was found
MsgBox "Could not find '" & IndexCol & "' in '" & IndexRow & "'.", vbCritical
'or return some error at least
'FindIndexCol = "Column not found"
End If
End Function
Public Sub Test()
Dim Purchasing_Document As String, Backup_Purchasing_Document As String
Purchasing_Document = FindIndexCol("1:1", "Purchasing Document")
Backup_Purchasing_Document = FindIndexCol("1:1", "Backup Purchasing Document")
End Sub
Note that FindIndexCol
only works in sheet1
because of this line
Set rngIndexRow = Worksheets("sheet1").Range(rngIndexRow)
Therefore I suggest to make it more useful by making it more generic
Public Function FindIndexCol(ByVal rngIndexRow As Range, ByVal ColumnName As String) As String
Dim rngIndexCol As Range
Set rngIndexCol = rngIndexRow.Find(What:=ColumnName, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns, MatchByte:=False)
If Not rngIndexCol Is Nothing Then
FindIndexCol = Split(rngIndexRow.Parent.Cells(1, rngIndexCol.Column).Address, "$")(1)
Else
'output some error if nothing was found
MsgBox "Could not find '" & ColumnName & "' in '" & rngIndexRow.Address(External:=True) & "'.", vbCritical
'or return some error at least
'FindIndexCol = "Column not found"
End If
End Function
Public Sub Test()
Dim Purchasing_Document As String, Backup_Purchasing_Document As String
With Worksheets("sheet1")
Purchasing_Document = FindIndexCol(.Rows(1), "Purchasing Document")
Backup_Purchasing_Document = FindIndexCol(.Rows(1), "Backup Purchasing Document")
End With
End Sub
Функция INDEX (ИНДЕКС) в Excel используется для получения данных из таблицы, при условии что вы знаете номер строки и столбца, в котором эти данные находятся.
Например, в таблице ниже, вы можете использовать эту функцию для того, чтобы получить результаты экзамена по Физике у Андрея, зная номер строки и столбца, в которых эти данные находятся.
Содержание
- Что возвращает функция
- Синтаксис
- Аргументы функции
- Дополнительная информация
- Примеры использования функции ИНДЕКС в Excel
- Пример 1. Ищем результаты экзамена по физике для Алексея
- Пример 2. Создаем динамический поиск значений с использованием функций ИНДЕКС и ПОИСКПОЗ
- Пример 3. Создаем динамический поиск значений с использованием функций INDEX (ИНДЕКС) и MATCH (ПОИСКПОЗ) и выпадающего списка
- Пример 4. Использование трехстороннего поиска с помощью INDEX (ИНДЕКС) / MATCH (ПОИСКПОЗ)
Что возвращает функция
Возвращает данные из конкретной строки и столбца табличных данных.
Синтаксис
=INDEX (array, row_num, [col_num]) — английская версия
=INDEX (array, row_num, [col_num], [area_num]) — английская версия
=ИНДЕКС(массив; номер_строки; [номер_столбца]) — русская версия
=ИНДЕКС(ссылка; номер_строки; [номер_столбца]; [номер_области]) — русская версия
Аргументы функции
- array (массив) — диапазон ячеек или массив данных для поиска;
- row_num (номер_строки) — номер строки, в которой находятся искомые данные;
- [col_num] ([номер_столбца]) (необязательный аргумент) — номер колонки, в которой находятся искомые данные. Этот аргумент необязательный. Но если в аргументах функции не указаны критерии для row_num (номер_строки), необходимо указать аргумент col_num (номер_столбца);
- [area_num] ([номер_области]) — (необязательный аргумент) — если аргумент массива состоит из нескольких диапазонов, то это число будет использоваться для выбора всех диапазонов.
Дополнительная информация
- Если номер строки или колонки равен “0”, то функция возвращает данные всей строки или колонки;
- Если функция используется перед ссылкой на ячейку (например, A1), она возвращает ссылку на ячейку вместо значения (см. примеры ниже);
- Чаще всего INDEX (ИНДЕКС) используется совместно с функцией MATCH (ПОИСКПОЗ);
- В отличие от функции VLOOKUP (ВПР), функция INDEX (ИНДЕКС) может возвращать данные как справа от искомого значения, так и слева;
- Функция используется в двух формах — Массива данных и Формы ссылки на данные:
— Форма «Массива» используется когда вы хотите найти значения, основанные на конкретных номерах строк и столбцов таблицы;
— Форма «Ссылок на данные» используется при поиске значений в нескольких таблицах (используете аргумент [area_num] ([номер_области]) для выбора таблицы и только потом сориентируете функцию по номеру строки и столбца.
Примеры использования функции ИНДЕКС в Excel
Пример 1. Ищем результаты экзамена по физике для Алексея
Предположим, у вас есть результаты экзаменов в табличном виде по нескольким студентам:
Для того, чтобы найти результаты экзамена по физике для Андрея нам нужна формула:
=INDEX($B$3:$E$9,3,2) — английская версия
=ИНДЕКС($B$3:$E$9;3;2) — русская версия
В формуле мы определили аргумент диапазона данных, где мы будем искать данные $B$3:$E$9. Затем, указали номер строки “3”, в которой находятся результаты экзамена для Андрея, и номер колонки “2”, где находятся результаты экзамена именно по физике.
Пример 2. Создаем динамический поиск значений с использованием функций ИНДЕКС и ПОИСКПОЗ
Не всегда есть возможность указать номера строки и столбца вручную. У вас может быть огромная таблица данных, отображение данных которой вы можете сделать динамическим, чтобы функция автоматически идентифицировала имя или экзамен, указанные в ячейках, и дала правильный результат.
Пример динамического отображения данных ниже:
Для динамического отображения данных мы используем комбинацию функций INDEX (ИНДЕКС) и MATCH (ПОИСКПОЗ).
Вот такая формула поможет нам добиться результата:
=INDEX($B$3:$E$9,MATCH($G$4,$A$3:$A$9,0),MATCH($H$3,$B$2:$E$2,0)) — английская версия
=ИНДЕКС($B$3:$E$9;ПОИСКПОЗ($G$4;$A$3:$A$9;0);ПОИСКПОЗ($H$3;$B$2:$E$2;0)) — русская версия
В формуле выше, не используя сложного программирования, мы с помощью функции MATCH (ПОИСКПОЗ) сделали отображение данных динамическим.
Динамический отображение строки задается следующей частью формулы —
MATCH($G$4,$A$3:$A$9,0) — английская версия
ПОИСКПОЗ($G$4;$A$3:$A$9;0) — русская версия
Она сканирует имена студентов и определяет значение поиска ($G$4 в нашем случае). Затем она возвращает номер строки для поиска в наборе данных. Например, если значение поиска равно Алексей, функция вернет “1”, если это Максим, оно вернет “4” и так далее.
Динамическое отображение данных столбца задается следующей частью формулы —
MATCH($H$3,$B$2:$E$2,0) — английская версия
ПОИСКПОЗ($H$3;$B$2:$E$2;0) — русская версия
Она сканирует имена объектов и определяет значение поиска ($H$3 в нашем случае). Затем она возвращает номер столбца для поиска в наборе данных. Например, если значение поиска Математика, функция вернет “1”, если это Физика, функция вернет “2” и так далее.
Больше лайфхаков в нашем Telegram Подписаться
Пример 3. Создаем динамический поиск значений с использованием функций INDEX (ИНДЕКС) и MATCH (ПОИСКПОЗ) и выпадающего списка
На примере выше мы вручную вводили имена студентов и названия предметов. Вы можете сэкономить время на вводе данных, используя выпадающие списки. Это актуально, когда количество данных огромное.
Используя выпадающие списки, вам нужно просто выбрать из списка имя студента и функция автоматически найдет и подставит необходимые данные.
Пример ниже:
Используя такой подход, вы можете создать удобный дашборд, например для учителя. Ему не придется заниматься фильтрацией данных или прокруткой листа со студентами, для того чтобы найти результаты экзамена конкретного студента, достаточно просто выбрать имя и результаты динамически отразятся в лаконичной и удобной форме.
Для того, чтобы осуществить динамическую подстановку данных с использованием функций INDEX (ИНДЕКС) и MATCH (ПОИСКПОЗ) и выпадающего списка, мы используем ту же формулу, что в Примере 2:
=INDEX($B$3:$E$9,MATCH($G$4,$A$3:$A$9,0),MATCH($H$3,$B$2:$E$2,0)) — английская версия
=ИНДЕКС($B$3:$E$9;ПОИСКПОЗ($G$4;$A$3:$A$9;0);ПОИСКПОЗ($H$3;$B$2:$E$2;0)) — русская версия
Единственное отличие, от Примера 2, мы на месте ввода имени и предмета создадим выпадающие списки:
- Выбираем ячейку, в которой мы хотим отобразить выпадающий список с именами студентов;
- Кликаем на вкладку “Data” => Data Tools => Data Validation;
- В окне Data Validation на вкладке “Settings” в подразделе Allow выбираем “List”;
- В качестве Source нам нужно выбрать диапазон ячеек, в котором указаны имена студентов;
- Кликаем ОК
Теперь у вас есть выпадающий список с именами студентов в ячейке G5. Таким же образом вы можете создать выпадающий список с предметами.
Пример 4. Использование трехстороннего поиска с помощью INDEX (ИНДЕКС) / MATCH (ПОИСКПОЗ)
Функция INDEX (ИНДЕКС) может быть использована для обработки трехсторонних запросов.
Что такое трехсторонний поиск?
В приведенных выше примерах мы использовали одну таблицу с оценками для студентов по разным предметам. Это пример двунаправленного поиска, поскольку мы используем две переменные для получения оценки (имя студента и предмет).
Теперь предположим, что к концу года студент прошел три уровня экзаменов: «Вступительный», «Полугодовой» и «Итоговый экзамен».
Трехсторонний поиск — это возможность получить отметки студента по заданному предмету с указанным уровнем экзамена.
Вот пример трехстороннего поиска:
В приведенном выше примере, кроме выбора имени студента и названия предмета, вы также можете выбрать уровень экзамена. Основываясь на уровне экзамена, формула возвращает соответствующее значение из одной из трех таблиц.
Для таких расчетов нам поможет формула:
=INDEX(($B$3:$E$7,$B$11:$E$15,$B$19:$E$23),MATCH($G$4,$A$3:$A$7,0),MATCH($H$3,$B$2:$E$2,0),IF($H$2=»Вступительный»,1,IF($H$2=»Полугодовой»,2,3))) — английская версия
=ИНДЕКС(($B$3:$E$7;$B$11:$E$15;$B$19:$E$23);ПОИСКПОЗ($G$4;$A$3:$A$7;0);ПОИСКПОЗ($H$3;$B$2:$E$2;0); ЕСЛИ($H$2=»Вступительный»;1;ЕСЛИ($H$2=»Полугодовой»;2;3))) — русская версия
Давайте разберем эту формулу, чтобы понять, как она работает.
Эта формула принимает четыре аргумента. Функция INDEX (ИНДЕКС) — одна из тех функций в Excel, которая имеет более одного синтаксиса.
=INDEX (array, row_num, [col_num]) — английская версия
=INDEX (array, row_num, [col_num], [area_num]) — английская версия
=ИНДЕКС(массив; номер_строки; [номер_столбца]) — русская версия
=ИНДЕКС(ссылка; номер_строки; [номер_столбца]; [номер_области]) — русская версия
По всем вышеприведенным примерам мы использовали первый синтаксис, но для трехстороннего поиска нам нужно использовать второй синтаксис.
Рассмотрим каждую часть формулы на основе второго синтаксиса.
- array (массив) – ($B$3:$E$7,$B$11:$E$15,$B$19:$E$23):Вместо использования одного массива, в данном случае мы использовали три массива в круглых скобках.
- row_num (номер_строки) – MATCH($G$4,$A$3:$A$7,0): функция MATCH (ПОИСКПОЗ) используется для поиска имени студента для ячейки $G$4 из списка всех студентов.
- col_num (номер_столбца) – MATCH($H$3,$B$2:$E$2,0): функция MATCH (ПОИСКПОЗ) используется для поиска названия предмета для ячейки $H$3 из списка всех предметов.
- [area_num] ([номер_области]) – IF($H$2=”Вступительный”,1,IF($H$2=”Полугодовой”,2,3)): Значение номера области сообщает функции INDEX (ИНДЕКС), какой массив с данными выбрать. В этом примере у нас есть три массива в первом аргументе. Если вы выберете «Вступительный» из раскрывающегося меню, функция IF (ЕСЛИ) вернет значение “1”, а функция INDEX (ИНДЕКС) выберут 1-й массив из трех массивов ($B$3:$E$7).
Уверен, что теперь вы подробно изучили работу функции INDEX (ИНДЕКС) в Excel!
The INDEX function returns the value at a given location in a range or array. INDEX is a powerful and versatile function. You can use INDEX to retrieve individual values, or entire rows and columns. INDEX is frequently used together with the MATCH function. In this scenario, the MATCH function locates and feeds a position to the INDEX function, and INDEX returns the value at that position.
In the most common usage, INDEX takes three arguments: array, row_num, and col_num. Array is the range or array from which to retrieve values. Row_num is the row number from which to retrieve a value, and col_num is the column number at which to retrieve a value. Col_num is optional and not needed when array is one-dimensional.
In the example shown above, the goal is to get the diameter of the planet Jupiter. Because Jupiter is the fifth planet in the list, and Diameter is the third column, the formula in G7 is:
=INDEX(B5:E13,5,3) // diameter of Jupiter
The formula above is of limited value because the row number and column number have been hard-coded. Typically, the MATCH function would be used inside INDEX to provide these numbers. For a detailed explanation with many examples, see: How to use INDEX and MATCH.
Basic usage
INDEX gets a value at a given location in a range of cells based on numeric position. When the range is one-dimensional, you only need to supply a row number. When the range is two-dimensional, you’ll need to supply both the row and column number. For example, to get the third item from the one-dimensional range A1:A5:
=INDEX(A1:A5,3) // returns value in A3
The formulas below show how INDEX can be used to get a value from a two-dimensional range:
=INDEX(A1:B5,2,2) // returns value in B2
=INDEX(A1:B5,3,1) // returns value in A3
INDEX and MATCH
In the examples above, the position is «hardcoded». Typically, the MATCH function is used to find positions for INDEX. For example, in the screen below, the MATCH function is used to locate «Mars» (G6) in row 3 and feed that position to INDEX. The formula in G7 is:
=INDEX(B5:E13,MATCH(G6,B5:B13,0),3)
MATCH provides the row number (4) to INDEX. The column number is still hardcoded as 3.
INDEX and MATCH with horizontal table
In the screen below, the table above has been transposed horizontally. The MATCH function returns the column number (4) and the row number is hardcoded as 2. The formula in C10 is:
=INDEX(C4:K6,2,MATCH(C9,C4:K4,0))
For a detailed explanation with many examples, see: How to use INDEX and MATCH
Entire row / column
INDEX can be used to return entire columns or rows like this:
=INDEX(range,0,n) // entire column
=INDEX(range,n,0) // entire row
where n represents the number of the column or row to return. This example shows a practical application of this idea.
Reference as result
It’s important to note that the INDEX function returns a reference as a result. For example, in the following formula, INDEX returns A2:
=INDEX(A1:A5,2) // returns A2
In a typical formula, you’ll see the value in cell A2 as the result, so it’s not obvious that INDEX is returning a reference. However, this is a useful feature in formulas like this one, which uses INDEX to create a dynamic named range. You can use the CELL function to report the reference returned by INDEX.
Two forms
The INDEX function has two forms: array and reference. Both forms have the same behavior – INDEX returns a reference in an array based on a given row and column location. The difference is that the reference form of INDEX allows more than one array, along with an optional argument to select which array should be used. Most formulas use the array form of INDEX, but both forms are discussed below.
Array form
In the array form of INDEX, the first parameter is an array, which is supplied as a range of cells or an array constant. The syntax for the array form of INDEX is:
INDEX(array,row_num,[col_num])
- If both row_num and col_num are supplied, INDEX returns the value in the cell at the intersection of row_num and col_num.
- If row_num is set to zero, INDEX returns an array of values for an entire column. To use these array values, you can enter the INDEX function as an array formula in horizontal range, or feed the array into another function.
- If col_num is set to zero, INDEX returns an array of values for an entire row. To use these array values, you can enter the INDEX function as an array formula in vertical range, or feed the array into another function.
Reference form
In the reference form of INDEX, the first parameter is a reference to one or more ranges, and a fourth optional argument, area_num, is provided to select the appropriate range. The syntax for the reference form of INDEX is:
INDEX(reference,row_num,[col_num],[area_num])
Just like the array form of INDEX, the reference form of INDEX returns the reference of the cell at the intersection row_num and col_num. The difference is that the reference argument contains more than one range, and area_num selects which range should be used. The area_num is argument is supplied as a number that acts like a numeric index. The first array inside reference is 1, the second array is 2, and so on.
For example, in the formula below, area_num is supplied as 2, which refers to the range A7:C10:
=INDEX((A1:C5,A7:C10),1,3,2)
In the above formula, INDEX will return the value at row 1 and column 3 of A7:C10.
- Multiple ranges in reference are separated by commas and enclosed in parentheses.
- All ranges must on one sheet or INDEX will return a #VALUE error. Use the CHOOSE function as a workaround.
Excel allows us to get the column number from the Excel Table using MATCH function. The MATCH function logic is the same as for the regular cell ranges. The only difference is coming from the lookup array referencing in the Excel Table. This step by step tutorial will assist all levels of Excel users to get Excel Table column index.
Figure 1. How to get column index in Excel table
Syntax of the MATCH Formula
=MATCH(lookup_value, lookup_array, [match_type])
The parameters of the MATCH function are:
- lookup_value – a value which we want to find in the lookup_array
- lookup_array – the array where we want to find a value
- [match_type] – a type of match. We put 0 which is an exact match.
Setting up Our Data to Get Excel Table Column Number
Our first table consists of 4 columns: “Store” (column B), “Payment date” (column C), “Amount” (column D) and “Week Number” (column E). This table is defined as an Excel Table with the name “Table 1”.The second one has 2 columns: “Column name” (Column G) and “Column index” (Column H). The idea is to get column number from the first table based on the column name in Column G.
Figure 2. Table structure for Excel Table column index
MATCH Function to get Column Index from Table 1
We want to get column index from the first table based on the “Column name” in the Column G.
The formula looks like:
=MATCH(G3,Table1[#Headers],0)
The lookup_value in the MATCH function is the cell G3, the first table column name. The lookup_array is the Table 1 header, Table1[#Headers], while the match_type is 2.
To apply the MATCH function to get the Excel table column index we need to follow these steps:
- Select cell H3 and click on it
- Insert the formula:
=MATCH(G3,Table1[#Headers],0)
- Press enter
- Drag the formula down to the other cells in the column by clicking and dragging the little “+” icon at the bottom-right of the cell.
Figure 3. Get column index in Excel Table with MATCH function
MATCH function returns the relative position of the cell G3 (Column name) in the Table 1 header range. Formula result is number 1 since “Store” is the first column in Table 1.
Reference of the lookup_array for the Excel Table is different from the regular cell ranges. This array refers to the header of Table 1. We can add columns and change Table 1 and the lookup_array will automatically recognize range changes.
Most of the time, the problem you will need to solve will be more complex than a simple application of a formula or function. If you want to save hours of research and frustration, try our live Excelchat service! Our Excel Experts are available 24/7 to answer any Excel question you may have. We guarantee a connection within 30 seconds and a customized solution within 20 minutes.
Convert an Excel column number to a column name or letter: C# and VB.NET examples
Posted on Wednesday, November 13th, 2013 at 8:46 am by .
Excel worksheet size has increased dramatically from Excel 2000 to Excel 2007. In fact, the number of rows an Excel 2013 worksheet can support has increased 16 times and the number of columns 64 times more than the number Excel 2000 could handle. Below is a table displaying the number of columns and rows the different versions of Excel can contain:
Microsoft Excel version | Number of worksheet rows | Number of worksheet columns |
Excel 2013 | 1 048 576 | 16 384 |
Excel 2010 | 1 048 576 | 16 384 |
Excel 2007 | 1 048 576 | 16 384 |
Excel 2003 | 65 536 | 256 |
Excel 2000 | 65 536 | 256 |
- Getting the column letter by column number
- Getting the column index by column name
Getting the column letter by column index
There are a lot of examples floating around on the internet on how to convert Excel column numbers to alphabetical characters. There are a few ways to get the column letter, using either vanilla C# or VB.NET, Excel formulas or the Excel object model. Let’s take a look at some of the solutions.
Using C# or VB.NET
C# example:
static string ColumnIndexToColumnLetter(int colIndex) { int div = colIndex; string colLetter = String.Empty; int mod = 0; while (div > 0) { mod = (div - 1) % 26; colLetter = (char)(65 + mod) + colLetter; div = (int)((div - mod) / 26); } return colLetter; }
C# usage:
string columnLetter = ColumnIndexToColumnLetter(100); // returns CV
VB.NET example:
Private Function ColumnIndexToColumnLetter(colIndex As Integer) As String Dim div As Integer = colIndex Dim colLetter As String = String.Empty Dim modnum As Integer = 0 While div > 0 modnum = (div - 1) Mod 26 colLetter = Chr(65 + modnum) & colLetter div = CInt((div - modnum) 26) End While Return colLetter End Function
VB.NET usage:
Dim columnLetter As String = ColumnIndexToColumnLetter(85) ' returns CG
Using an Excel formula to convert a column number to column letter
Of course, if you’re in Excel and need to get the column letter based on a number, you can always use the ADDRESS function. The function is pretty straight forward; it requires a row and column number, and in our case, we need to specify the abs_num parameter, which can be one of four possible options:
abs_num | Returns |
1 or omitted | Absolute |
2 | Absolute row and relative column |
3 | Relative row and absolute column |
4 | Relative |
Consider the following formula:
=ADDRESS(1,5,1)
By changing the abs_num parameter, you’ll see the following result:
abs_num | Formula | Result | Description |
1 or omitted | =ADDRESS(1,5,1) | $E$1 | Absolute |
2 | =ADDRESS(1,5,2) | E$1 | Absolute row and relative column |
3 | =ADDRESS(1,5,3) | $E1 | Relative row and absolute column |
4 | =ADDRESS(1,5,4) | E1 | Relative |
Notice that in all the four cases, we get the column letter, in this case E, back as well as the row number. By setting the abs_num parameter to 4 and replacing the row number, we can effectively return the column letter using the following formula:
=SUBSTITUTE(ADDRESS(1,5,4),”1″,””)
Using the Excel Object Model to convert column numbers to alphabetic format
Of course, you could always use the Excel object model to get the column letter. Much like the ADDRESS function, you use the Address property of the Range object to determine the address of the column and then simply replace the row number as illustrated below:
C# example:
private void columnLetterRibbonButton_OnClick(object sender, IRibbonControl control, bool pressed) { Worksheet sheet = null; Range range = null; string colLetter = string.Empty; try { sheet = (Worksheet)ExcelApp.ActiveSheet; range = sheet.Cells[1, 50] as Excel.Range; colLetter = range.Address[false, false, XlReferenceStyle.xlA1]; colLetter = colLetter.Replace("1", ""); MessageBox.Show(String.Format( "Column letter for column number 50 is : {0}", colLetter)); } finally { if (sheet != null) Marshal.ReleaseComObject(sheet); if (range != null) Marshal.ReleaseComObject(range); }
VB.NET example:
Private Sub GetColumnLetterRibbonButton_OnClick(sender As Object, _ control As IRibbonControl, pressed As Boolean) Handles _ GetColumnLetterRibbonButton.OnClick Dim sheet As Excel.Worksheet = Nothing Dim range As Excel.Range = Nothing Dim colLetter As String = String.Empty Try sheet = DirectCast(ExcelApp.ActiveSheet, Excel.Worksheet) range = TryCast(sheet.Cells(1, 50), Excel.Range) colLetter = range.Address(False, False, Excel.XlReferenceStyle.xlA1) colLetter = colLetter.Replace("1", "") MessageBox.Show(String.Format( _ "Column letter for column number 50 is : {0}", colLetter)) Finally If sheet IsNot Nothing Then Marshal.ReleaseComObject(sheet) End If If range IsNot Nothing Then Marshal.ReleaseComObject(range) End If End Try End Sub
Getting the column index by column letter
What should you do in order to reverse the scenario? How do you get the Excel column letter when all you have is the column index? Let’s take a look at how you can accomplish this using C#, VB.NET, an Excel formula and the Excel object model.
Using C# or VB.NET
C# example:
public static int ColumnLetterToColumnIndex(string columnLetter) { columnLetter = columnLetter.ToUpper(); int sum = 0; for (int i = 0; i < columnLetter.Length; i++) { sum *= 26; sum += (columnLetter[i] - 'A' + 1); } return sum; }
C# usage:
int columnIndex = ColumnLetterToColumnIndex("XFD"); // returns 16384
VB.NET example:
Public Function ColumnLetterToColumnIndex(columnLetter As String) As Integer columnLetter = columnLetter.ToUpper() Dim sum As Integer = 0 For i As Integer = 0 To columnLetter.Length - 1 sum *= 26 Dim charA As Integer = Char.GetNumericValue("A") Dim charColLetter As Integer = Char.GetNumericValue(columnLetter(i)) sum += (charColLetter - charA) + 1 Next Return sum End Function
VB.NET usage:
Dim columnIndex As Integer = ColumnLetterToColumnIndex("ADX") ' returns 703
Using an Excel formula to get the column number
Getting the column index directly in Excel is very easy. Excel has a built-in COLUMN() function. This function accepts a column reference, which is the column address. One catch though, is you have to combine the row number with the column address in order for it to work, e.g.:
=COLUMN(ADX1)
Using the Excel Object Model to convert a column letter to column number
Getting the column index is easily accomplished using the Excel object model. You first need to get a reference to a range object and then get the column number via the Column property of the Range object.
C# example:
private void getColumnIndexRibbonButton_OnClick(object sender, IRibbonControl control, bool pressed) { Worksheet sheet = null; Range range = null; int colIndex = 0; try { sheet = (Worksheet)ExcelApp.ActiveSheet; range = sheet.Range["ADX1"] as Excel.Range; colIndex = range.Column; MessageBox.Show(String.Format( "Column index for column letter ADX is : {0}", colIndex)); } finally { if (sheet != null) Marshal.ReleaseComObject(sheet); if (range != null) Marshal.ReleaseComObject(range); } }
VB.NET example:
Private Sub GetColumnIndexRibbonButton_OnClick(sender As Object, _ control As IRibbonControl, pressed As Boolean) Handles _ GetColumnIndexRibbonButton.OnClick Dim sheet As Excel.Worksheet = Nothing Dim range As Excel.Range = Nothing Dim colIndex As Integer = 0 Try sheet = DirectCast(ExcelApp.ActiveSheet, Excel.Worksheet) range = TryCast(sheet.Range("ADX1"), Excel.Range) colIndex = range.Column MessageBox.Show([String].Format( _ "Column index for column letter ADX is : {0}", colIndex)) Finally If sheet IsNot Nothing Then Marshal.ReleaseComObject(sheet) End If If range IsNot Nothing Then Marshal.ReleaseComObject(range) End If End Try End Sub
Thank you for reading. Until next time, keep coding!
Available downloads:
This sample Excel add-in was developed using Add-in Express for Office and .net:
Sample add-ins and applications (C# and VB.NET)
You may also be interested in:
- Creating COM add-ins for Excel 2013 – 2007. Customizing Excel Ribbon
- Excel add-in development in Visual Studio
METHOD 1. Excel INDEX Function using hardcoded values
EXCEL
Result in cell E14 ($5.40) — returns the value in the forth row and second column relative to the specified range. |
=INDEX((B5:C8,B9:C11),3,2,2) |
Result in cell E15 ($7.40) — returns the value in the third row and second column relative to the second range specified in the formula. |
=INDEX((B5:D8,B9:D11),2,3,2) |
Result in cell E16 ($3.00) — returns the value in the second row and third column relative to the second range specified in the formula. |
=INDEX((B5:C8,B9:C11,Index_Defined_Name),2,3,3) |
Result in cell E17 ($2.10) — returns the value in the second row and third column relative to the range specified by the defined name named Index_Defined_Name which comprises a B5:D11 range. |
METHOD 2. Excel INDEX Function using links
EXCEL
=INDEX(B5:C11,B14,C14) |
Result in cell E14 ($5.40) — returns the value in the forth row and second column relative to the specified range. |
=INDEX((B5:C8,B9:C11),B15,C15,D15) |
Result in cell E15 ($7.40) — returns the value in the third row and second column relative to the second range specified in the formula. |
=INDEX((B5:D8,B9:D11),B16,C16,D16) |
Result in cell E16 ($3.00) — returns the value in the second row and third column relative to the second range specified in the formula. |
=INDEX((B5:C8,B9:C11,Index_Defined_Name),B17,C17,D17) |
Result in cell E17 ($2.10) — returns the value in the second row and third column relative to the range specified by the defined name named Index_Defined_Name which comprises a B5:D11 range. |
METHOD 3. Excel INDEX function using the Excel built-in function library with hardcoded values
EXCEL
Formulas tab > Function Library group > Lookup & Reference > INDEX > populate the input box
=INDEX(B5:C11,4,2) Note: in this example we are populating the Array, Row_num and Column_num INDEX function arguments. |
=INDEX((B5:C8,B9:C11),3,2,2) Note: in this example we are only populating all of the INDEX function arguments. |
METHOD 4. Excel INDEX function using the Excel built-in function library with links
EXCEL
Formulas tab > Function Library group > Lookup & Reference > INDEX > populate the input boxes
=INDEX(B5:C11,B14,C14) Note: in this example we are populating the Array, Row_num and Column_num INDEX function arguments. |
=INDEX((B5:C8,B9:C11),B15,C15,D15) Note: in this example we are only populating all of the INDEX function arguments. |
METHOD 1. Excel INDEX function using VBA with hardcoded values
VBA
Sub Excel_Index_Function_Using_Hardcoded_Values()
Dim ws As Worksheet
Set ws = Worksheets(«INDEX»)
ws.Range(«E14»).Value = Application.WorksheetFunction.Index(Range(«B5:C11»), 4, 2)
ws.Range(«E15»).Value = Application.WorksheetFunction.Index(Range(«B5:C8,B9:C11»), 3, 2, 2)
ws.Range(«E16»).Value = Application.WorksheetFunction.Index(Range(«B5:D8,B9:D11»), 2, 3, 2)
ws.Range(«E17»).Value = Application.WorksheetFunction.Index(Range(«B5:C8,B9:C11,Index_Defined_Name»), 2, 3, 3)
End Sub
OBJECTS
Worksheets: The Worksheets object represents all of the worksheets in a workbook, excluding chart sheets.
Range: The Range object is a representation of a single cell or a range of cells in a worksheet.
PREREQUISITES
Worksheet Name: Have a worksheet named INDEX.
Defined Name: Have a defined name named Index_Defined_Name that comprises a B5:D11 range.
ADJUSTABLE PARAMETERS
Output Range: Select the output range by changing the cell references («E14»), («E15»), («E16») and («E17») in the VBA code to any cell in the worksheet, that doesn’t conflict with the formula.
METHOD 2. Excel INDEX function using VBA with links
VBA
Sub Excel_Index_Function_Using_Links()
Dim ws As Worksheet
Set ws = Worksheets(«INDEX»)
ws.Range(«E14»).Value = Application.WorksheetFunction.Index(Range(«B5:C11»), Range(«B14»), Range(«C14»))
ws.Range(«E15»).Value = Application.WorksheetFunction.Index(Range(«B5:C8,B9:C11»), Range(«B15»), Range(«C15»), Range(«D15»))
ws.Range(«E16»).Value = Application.WorksheetFunction.Index(Range(«B5:D8,B9:D11»), Range(«B16»), Range(«C16»), Range(«D16»))
ws.Range(«E17»).Value = Application.WorksheetFunction.Index(Range(«B5:C8,B9:C11,Index_Defined_Name»), Range(«B17»), Range(«C17»), Range(«D17»))
End Sub
OBJECTS
Worksheets: The Worksheets object represents all of the worksheets in a workbook, excluding chart sheets.
Range: The Range object is a representation of a single cell or a range of cells in a worksheet.
PREREQUISITES
Worksheet Name: Have a worksheet named INDEX.
Defined Name: Have a defined name named Index_Defined_Name that comprises a B5:D11 range.
ADJUSTABLE PARAMETERS
Output Range: Select the output range by changing the cell references («E14»), («E15»), («E16») and («E17») in the VBA code to any cell in the worksheet, that doesn’t conflict with the formula.
Excel INDEX Function (Examples + Video)
When to use Excel INDEX Function
Excel INDEX function can be used when you want to fetch the value from a tabular data and you have the row number and column number of the data point. For example, in the example below, you can use the INDEX function to get the marks of ‘Tom’ in Physics when you know the row number and the column number in the data set.
What it Returns
It returns the value from a table for the specified row number and column number.
Syntax
=INDEX (array, row_num, [col_num])
=INDEX (array, row_num, [col_num], [area_num])
INDEX function has 2 syntax. The first one is used in most cases, however, in case of three-way lookups, the second one is used (covered in Example 5).
Input Arguments
- array – a range of cells or an array constant.
- row_num – the row number from which the value is to be fetched.
- [col_num] – the column number from which the value is to be fetched. Although this is an optional argument, but if row_num is not provided, it needs to be given.
- [area_num] – (Optional) If array argument is made up of multiple ranges, this number would be used to select the reference from all the ranges.
Additional Notes (Boring Stuff.. But Important to Know)
- If the row number or the column number is 0, it returns the values of the entire row or column respectively.
- If INDEX function is used in front of a cell reference (such as A1:) it returns a cell reference instead of a value (see examples below).
- Most widely used along with the MATCH function.
- Unlike VLOOKUP, INDEX function can return a value from the left of the lookup value.
- INDEX function have two forms – Array form and the Reference form
- ‘Array form’ is where you fetch a value based on row and column number from a given table.
- ‘Reference form’ is where there are multiple tables, and you use the area_num argument to select the table and then fetch a value within it using the row and column number (see live example below).
Excel INDEX Function – Examples
Here are six examples of using Excel INDEX Function.
Example 1 – Finding Tom’s Marks in Physics (a two-way lookup)
Suppose you have a dataset as shown below:
To find Tom’s marks in Physics, use the below formula:
=INDEX($B$3:$E$10,3,2)
This INDEX formula specifies the array as $B$3:$E$10 which has the marks for all the subjects. Then it uses the row number (3) and column number (2) to fetch Tom’s marks in Physics.
Example 2 – Making the LOOKUP Value Dynamic using MATCH Function
It may not always be possible to specify the row number and the column number manually. You may have a huge data set, or you may want to make it dynamic so that it automatically identifies the name and/or subject specified in cells and give the correct result.
Something as shown below:
This can be done using a combination of the INDEX and the MATCH function.
Here is the formula that will make the lookup values dynamic:
=INDEX($B$3:$E$10,MATCH($G$5,$A$3:$A$10,0),MATCH($H$4,$B$2:$E$2,0))
In the above formula, instead of hard-coding the row number and the column number, MATCH function is used to make it dynamic.
- Dynamic Row Number is given by the following part of the formula – MATCH($G$5,$A$3:$A$10,0). It scans the name of students and identifies the lookup value ($G$5 in this case). It then returns the row number of the lookup value in the dataset. For example, if the lookup value is Matt, it’ll return 1, if it is Bob, it’ll return 2 and so on.
- Dynamic Column Number is given by the following part of the formula – MATCH($H$4,$B$2:$E$2,0). It scans the subject names and identifies the lookup value ($H$4 in this case). It then returns the column number of the lookup value in the dataset. For example, if the lookup value is Math, it’ll return 1, if it is Physics, it’ll return 2 and so on.
Example 3 – Using Drop Down Lists as Lookup Values
In the above example, we have to manually enter the data. That could be time-consuming and error-prone, especially if you have a huge list of lookup values.
A good idea in such cases is to create a drop down list of the lookup values (in this case, it could be student names and subjects) and then simply choose from the list. Based on the selection, the formula would automatically update the result.
Something as shown below:
This makes a good dashboard component as you can have a huge data set with hundreds of students at the back end, but the end user (let’s say a teacher) can quickly get the marks of a student in a subject by simply making the selections from the drop down.
How to make this:
The formula used in this case is the same used in Example 2.
=INDEX($B$3:$E$10,MATCH($G$5,$A$3:$A$10,0),MATCH($H$4,$B$2:$E$2,0))
The lookup values have been converted into drop-down lists.
Here are the steps to create the Excel drop down list:
- Select the cell in which you want the drop-down list. In this example, in G4, we want the student names.
- Go to Data –> Data Tools –> Data Validation.
- In the Data Validation Dialogue box, within the settings tab, select List from the Allow drop-down.
- In the source, select $A$3:$A$10
- Click OK.
Now you’ll have the drop-down list in cell G5. Similarly, you can create one in H4 for the subjects.
Example 4 – Return Values from an Entire Row/Column
In the above examples, we’ve used Excel INDEX function to do a 2-way lookup and get a single value.
Now, what if you want to get all the marks of a student. This can enable you to find the maximum/minimum score of that student, or the total marks scored in all subjects.
In simple English, you want to first get the entire row of scores for a student (let’s say Bob) and then within those values identify the highest score or the total of all the scores.
Here is the trick.
In Excel INDEX Function, when you enter the column number as 0, it will return the values of that entire row.
So the formula for this would be:
=INDEX($B$3:$E$10,MATCH($G$5,$A$3:$A$10,0),0)
Now this formula. if used as is, would return the #VALUE! error. While it displays the error, in the backend, it returns an array that has all the scores for Tom – {57,77,91,91}.
If you select the formula in the edit mode and press F9, you’ll be able to see the array it returns (as shown below):
Similarly, based on what the lookup value is, when the column number is specified as 0 (or is left blank), it returns all the values in the row for the lookup value
Now to calculate the total score obtained by Tom, we can simply use the above formula within the SUM function.
=SUM(INDEX($B$3:$E$10,MATCH($G$5,$A$3:$A$10,0),0))
On similar lines, to calculate the highest score, we can use MAX/LARGE and to calculate minimum, we can use MIN/SMALL.
Example 5 – Three Way Lookup Using INDEX/MATCH
Excel INDEX function is built to handle three-way lookups.
What is a three-way lookup?
In the above examples, we’ve used one table with scores for students in different subjects. This is an example of a two-way lookup as we use two variables to fetch the score (student’s name and the subject).
Now, suppose in a year, a student has three different levels of exams, Unit Test, Midterm, and Final Examination (that’s what I had when I was a student).
A three-way lookup would be the ability to get a student’s marks for a specified subject from the specified level of exam. This would make it a three-way lookup as there are three variables (student’s name, subject’s name, and the level of examination).
Here is an example of a three-way lookup:
In the example above, apart from selecting the student’s name and subject name, you can also select the level of exam. Based on the level of exam, it returns the matching value from one of the three tables.
Here is the formula used in cell H4:
=INDEX(($B$3:$E$7,$B$11:$E$15,$B$19:$E$23),MATCH($G$4,$A$3:$A$7,0),MATCH($H$3,$B$2:$E$2,0),IF($H$2="Unit Test",1,IF($H$2="Midterm",2,3)))
Let’s break down this formula to understand how it works.
This formula takes four arguments. INDEX is one of those functions in Excel that has more than one syntax.
=INDEX (array, row_num, [col_num])
=INDEX (array, row_num, [col_num], [area_num])
So far in all the example above, we have used the first syntax, but to do a three-way lookup, we need to use the second syntax.
Now let’s see each part of the formula based on the second syntax.
- array – ($B$3:$E$7,$B$11:$E$15,$B$19:$E$23): Instead of using a single array, in this case, we have used three arrays within parenthesis.
- row_num – MATCH($G$4,$A$3:$A$7,0): MATCH function is used to find the position of the student’s name in cell $G$4 in the list of student’s name.
- col_num – MATCH($H$3,$B$2:$E$2,0): MATCH function is used to find the position of the subject name in cell $H$3 in the list of subject’s name.
- [area_num] – IF($H$2=”Unit Test”,1,IF($H$2=”Midterm”,2,3)): The area number value tells the INDEX function which array to select. In this example, we have three arrays in the first argument. If you select Unit Test from the drop-down, the IF function returns 1 and the INDEX functions select 1st array from the three arrays (which is $B$3:$E$7).
Example 6 – Creating a Reference Using the INDEX Function (Dynamic Named Ranges)
This is one wild use of the Excel INDEX function.
Let’s take a simple example.
I have a list of names as shown below:
Now I can use a simple INDEX function to get the last name on the list.
Here is the formula:
=INDEX($A$2:$A$9,COUNTA($A$2:$A$9))
This function simply counts the number of cells that are not empty and returns the last item from this list (it works only when there are no blanks in the list).
Now, what here comes the magic.
If you put the formula in front of a cell reference, the formula would return a cell reference of the matching value (instead of the value itself).
=A2:INDEX($A$2:$A$9,COUNTA($A$2:$A$9))
You would expect the above formula to return =A2:”Josh” (where Josh is the last value in the list). However, it returns =A2:A9 and hence you get an array of names as shown below:
One practical example where this technique can be helpful is in creating dynamic named ranges.
That’s it in this tutorial. I’ve tried to cover major examples of using the Excel INDEX function. If you would like to see more examples added to this list, let me know in the comments section.
Note: I’ve tried my best to proof read this tutorial, but in case you find any errors or spelling mistakes, please let me know 🙂
Excel INDEX Function – Video Tutorial
Related Excel Functions:
- Excel VLOOKUP Function.
- Excel HLOOKUP Function.
- Excel INDIRECT Function.
- Excel MATCH Function.
- Excel OFFSET Function.
You May Also Like the Following Excel Tutorials:
- VLOOKUP Vs. INDEX/MATCH
- Excel Index Match
- Lookup and Return Values in an Entire Row/Column.
What is the INDEX Function in Excel?
The INDEX function in Excel provides the value of a cell within a selected range against a given row and column. For example, the formula = INDEX(“Employee ID”,row_num,[column_num]) will return the Employee ID 27 against the given row number 5 and column number 3.
Using the INDEX function, we can find the value at the intersection of a specific row and column. The INDEX function in Excel is present under the Microsoft Excel Lookup and Reference function.
Key Highlights
- The INDEX function in Excel helps to find the information within a data range, where it looks up values by both columns and rows.
- It looks up the value of a cell at the intersection of a given row and column.
- We use the INDEX function in Excel with the MATCH function more commonly. The combination of the INDEX and MATCH functions is an alternative to the VLOOKUP function, which is more powerful & flexible.
- We can use the INDEX function in Excel to fetch individual values or entire rows and columns.
INDEX Function in Excel Syntax
There are two types of the INDEX function in Excel:
#1 Array Form
We use the Array INDEX form when the cell we refer to is within a single range of the data table, e.g., A3:C7.
To understand better, refer to the below image-
Syntax-
= INDEX (array, row_num, [column_num])
#2 Reference Form
We use this INDEX form when the cell that we are referring to is within multiple cell ranges, e.g., (A7:C1,A12:C14,A16:C19)
Refer to the below image-
Syntax-
=INDEX (reference,row_num,[col_num],[area_num])
Explanation of the Syntax
array:
It is a compulsory or required argument that indicates the range or array of cells we want to look up
Note: If there are multiple cell ranges in the data table, it is called a reference where all the cell ranges(areas) are separated by a comma and with closed brackets
row_num:
It is a compulsory or required argument that indicates the row number against which we want to fetch the value.
Note: Excel considers the row_num argument optional if only one row exists in an array or cell range.
col_num:
It is a compulsory or required argument that indicates the column number against which we want to fetch the value.
Note: Excel considers the col_num argument optional if only one column exists in an array or cell range.
area_num:
It is an optional argument. If the desired value is present in multiple cell ranges in the data table, the area_num indicates the cell range to use.
Note: If there is no value in area_num, then by default, the INDEX Function in Excel considers the first area as the area number.
How to Use the INDEX Function in Excel?
To understand the usage of the INDEX function, consider the below-given examples.
You can download this INDEX Function in Excel Template here – INDEX Function in Excel Template
ARRAY FORM
Example #1:
The table contains the name of Employees of a company, their Employee ID, Gender, and Age. We want to find the Employee ID of Methos using the INDEX function.
Solution:
We will apply the INDEX formula in cell B16 to get the Employee ID of Methos.
Step 1: Click on the Insert Function (fx) option under the Formulas section of the Excel toolbar.
An Insert Function dialog box appears.
Step 2: Type INDEX in the dialog box’s Search for a function option. And double click the INDEX option from the list.
A Select Arguments dialog box shows the two types of INDEX functions: one for array and the other for reference.
Step 3: Select the array formula, as we have only one data range, and click OK.
A Function Arguments dialog box opens with options Array, row_num, and column_num.
Step 4: Enter the cell range (A7:D13) that contains the lookup value in the Array argument
Note: Do not select the column headings
Step 5: Enter the row number(5) that contains the lookup value in the row_num argument.
Step 6: Enter the column number(2) that contains the lookup value in the Col_num argument.
Step 7: Click OK to get the below result
The Index function will return the value of the 5th row and 2nd column, i.e., Employee ID 333.
Example #2
The table below shows the Batch ID of Clothing products manufactured by different industries. We want to find the Batch ID of products manufactured by Entech Co. Ltd.
Solution:
Step 1: Write Entech Co. Ltd. in cell A16
Step 2: Place the cursor in cell B16 and enter the formula,
=INDEX(A7:D13,5,4)
Explanation:
A7:D13: It is the cell range that contains data about Entech Co. Ltd.
5,4: The lookup value- Entech Co. Ltd. is in the 5th row of the selected cell range with Batch ID in the 4th column.
Therefore, we write 5 & 4, respectively, in the formula.
Step 3: Press the Enter key to get the below result
The INDEX function with Array Form gives the Batch ID of 205 for products manufactured by Entech Co. Ltd.
Example #3
The table below shows 4 different caterers with snacks they supplied and invoice numbers for their respective bills. Here, we want to find the invoice number for the bill of the snacks supplied by Hungritos.
Solution:
Step 1: Write Hungritos in cell A13
Step 2: Place the cursor in cell B13 and enter the formula,
=INDEX(A7:D10,1,3)
Explanation:
A7:D10- It is the cell range that contains the data of Hingritos.
Note: We do not select the headings of the table.
1,3- The lookup value- Hingritos is in the 1st row of the selected range with invoice no. in the 3rd column. Therefore, we write 1 & 3, respectively, in the formula.
Step 3: Press the Enter key to get the below result
The INDEX function returns invoice no. 51 for snacks provided by Hungritos.
REFERENCE FORM
Example #1
The table below shows three different tables with Employee Name, Employee ID, Gender, Age, and Department. We want to find the Employee ID of Maria using the INDEX function in Excel.
Solution:
Here, we will use the Reference Form of Excel since there are three different data tables.
Step 1: Write Maria in cell E7
Step 2: Place the cursor in cell F7 and type =INDEX(
When we type the above, it displays two arguments, as shown in the image below
Step 3: Enter the formula,
=INDEX((A7:C13,A16:C18,A22:C23),2,2,2)
- Row_num: It is the row against which we want to fetch the Employee ID of Maria present in table 2; therefore, we enter row number(2), the intersection will occur at the 2nd row of the table
- Col_num: It is the column against which we want to fetch the value, i.e., 2, the intersection will occur at the 2nd column of the 2nd table
- Area_num: It indicates the area(table) which contains the details of Maria, i.e., table 2. Thus, we enter the Area_num as number 2 here.
Step 4: Press the Enter key to get the below output
The INDEX function in Excel returns Employee ID of Maria as 627.
Example #2
The table below shows sports items sold by a store with their prices. We want to find the number of Volleyballs sold by the store given the row number and column number.
Solution:
Step 1: Write the desired row and column numbers in cells E7 and F7, respectively.
Step 2: Place the cursor in cell G7 and enter the formula,
=INDEX((A7:C10,A12:C14,A16:C19),2,3,3)
The table above has three different areas- area 1, area 2, and area 3. Our desired item, a Volleyball, is in the third area. Therefore, we write the number 3 at the end.
Step 3: Press the Enter key to give the below result.
Things to Remember
- The INDEX function in Excel returns #VALUE! Error if row_num/ column_num is not mentioned in the formula or given as 0.
- The INDEX function returns #VALUE! error if the values for row_num, col_num, or area_num are non-numeric.
- The INDEX function in Excel returns #REF! Error if the value entered for row_num exceeds the number of rows present in the data table
- The INDEX function returns #REF! Error if the value entered for column_num exceeds the number of columns present in the data table
- The INDEX function in Excel returns #REF! Error if we provide a value for area_num greater than the number of areas in the cell range.
- If we give (refer) the area_num in the INDEX Formula from another sheet, the Index Function in Excel returns #VALUE! Error. It should represent the table present in the same sheet.
Frequently Asked Questions (FAQs)
Q1) What is the use of INDEX ()?
Answer: With the INDEX (), we can find the index position of an element or character in an item string. It gives the lowest possible index of the specified element in the list. If the provided item is not in the list, the INDEX function in Excel returns a ValueError.
Q2) What is the INDEX formula?
Answer: The INDEX formula for the Array form is
=INDEX(array, row_num, [col_num]).
The INDEX formula for Reference form is =INDEX(reference,row_num,[column_num],[area_num]).
The array argument specifies the cell range we want to look up. If there are multiple cell ranges in the data table, we separate them using a comma and close them with brackets; row_num indicates the row number against which we want to fetch the value; col_num indicates the column number against which we want to fetch the value; area_num indicates the range to use if there are multiple areas(tables).
Q3) What is the purpose of the INDEX and MATCH functions?
The INDEX function provides the value of a parameter based on the row and column numbers. The MATCH function gives the position of a cell in a column or a row. Combining the INDEX and MATCH functions provides a cell value based on horizontal and vertical criteria.
Recommended Articles
The article is a guide to the INDEX Function in Excel. Here we discuss how to use the INDEX Function in Excel, with practical examples and a downloadable excel template. Enhance your knowledge with these useful functions in excel
- Excel INDEX Function
- INDEX MATCH Function in Excel
- Time Function in Excel
- VBA Color Index