在 Excel 中,Index函数用于返回行与列交叉处的单元格引用或单元格的数值;返回的单元格引用可以是一个单元格,也可以是一行或一列。Index函数有两种形式,一种为数组形式,另一种为引用形式;其中数组形式只有三个参数,引用形式有四个参数;数组形式引用区域只能为一个,引用形式的引用区域可以为多个不连续的区域。以下就是 Excel Index函数数组与引用形式的使用方法,共列举了七个实例,含引用多个不连续区域实例,实例操作所用版本均为 Excel 2016。
一、Index函数“数组形式”的用法及实例
(一)Array为数组常量的实例
1、选中 A1 单元格,把公式 =INDEX({1,3;2,4},0,1) 复制到 A1,按回车,返回 1;双击 A1,把公式的第三个参数 Column_Num 改为 2,按回车,返回 3;再次双击 A1 单元格,把公式的第二个参数 Row_Num 改为 2、第三个参数 Column_Num 改为 0,按回车,返回 2;再双击 A1 单元格,把 Column_Num 改为 1,按回车,返回 2;操作过程步骤,如图1所示:

2、说明:
A、公式中的 {1,3;2,4} 是一个两行两列的数组,当 Row_Num 为 0、Column_Num 为 1 时,返回第一行与第一列交叉的元素,该元素正是 1,当 Row_Num 为 0 时,默认为第一行。
B、把公式的 Column_Num 改为 2 后,公式变为 =INDEX({1,3;2,4},0,2),即可返回第一行与第二列交叉的元素,因此返回 3。
C、把公式的 Row_Num 改为 2、Column_Num 改为 0,公式变为 =INDEX({1,3;2,4},2,0),由于 Column_Num 为 0 也默认为第一列,所以返回第二行与第一列对应的元素,因此返回 2。
(二)Array为引用单元格
1、把公式 =INDEX(A2:B5,3,2) 复制到 G2 单元格,按回车,返回 “白T恤”,正是选定区域第三行与第二列交叉处的单元格值,操作过程步骤,如图2所示:

2、提示:公式 =INDEX(A2:B5,3,2) 中的 3 和 2 是指选定区域的第三行与第二列,选择区域是从第二行开始(从 A2)可知,因此公式中的 3 是从第二行开始算起的第三行,即实际表格的第四行;列亦是如此,由于选定区域是从 A 列开始,因此公式中的 2 就是 B 列。
(三)返回错误的实例
1、把公式 =INDEX(A2:B5,3,3) 复制到 G2 单元格,如图3所示:

2、按回车,返回 #REF! 错误,如图4所示:

3、公式 =INDEX(A2:B5,3,3) 选定区域为 A2:B5,只有两列,Column_Num 设置为 3,已经超出选定范围,因此返回引用错误。
二、Index函数“引用形式”的使用方法及实例
(一)引用一个连续区域的实例
1、选中 G2 单元格,把公式 =INDEX(A2:D5,4,3) 复制到 G2,按回车,返回 “雪纺”,即选定区域第 4 行第 3 列交叉的单元格内容,操作过程步骤,如图5所示:

2、由于选定区域只有一个,所以 Area_Num 可以省略;这种引用形式与数组引用形式一样。
(二)引用多个不连续的区域实例
1、把公式 =INDEX((A2:C5,E3:F7),3,3,1) 复制到 G2 单元格,按回车,返回“雪纺”,操作过程步骤,如图6所示:
图62、公式说明:
A、公式 =INDEX((A2:C5,E3:F7),3,3,1) 引用了两个不连续的区域,分别为 A2:C5 和 E3:F7,这两个区域之间用逗号隔开;又因为选择区域的参数为 1,因此选择第一个区域 A2:C5,又 Row_Num 和 Column_Num 都为 3,所以返回第一个区域第 3 行与第 3 列交叉处单元格的值。如果要返回第二个区域的值,需要把公式改为:=INDEX((A2:C5,E3:F7),3,1,2),如图7所示:

B、按回车,返回 80,如图8所示:

C、在把 Area_Num 改为 2 的同时,为什么要把 Column_Num 改为 1,因为第二个区域 E3:F7 只有两列,原公式 =INDEX((A2:C5,E3:F7),3,3,1) 中的 3 超出了第二个区域的列,不改为小于等于 2 的列数,会返回错误。
(三)返回对单元格的引用和引用单元格值的实例
1、返回对单元格的引用
A、把公式 =COLUMN(INDEX(A2:B4,1,1)) 复制到 G2 单元格,按回车,返回 1;选中 G2,按住 Alt,按一次 M,按一次 V,打开“公式求值”窗口,单击一次“求值”,则公式变为 =COLUMN($A$2),说明 Index函数返回的是对单元格的引用;操作过程步骤,如图9所示:

B、Column函数用于返回对列的引用,表达式为 Column(Reference)。
2、返回引用单元格值的实例
把公式 =5*INDEX(E2:F4,1,2) 复制到 G2 单元格,按回车,返回 1280;选中 G2,按住 Alt,按一次 M,按一次 V,打开“公式求值”窗口,单击一次“求值”,则公式变为 =5*256,说明 Index函数返回的是引用单元格的值;操作过程步骤,如图10所示:

(四)Index函数与Sum函数组合返回整列的实例
1、把公式 =SUM(INDEX(E1:F12, 0, 2, 1)) 复制到 G2 单元格,按回车,返回 6604,操作过程步骤,如图11所示:

2、公式 INDEX(E1:F12, 0, 2, 1) 返回的 F 列,即 F1:F12,然后用 Sum 对 F 列求和。
三、Index函数的语法
(一)数组形式
1、表达式:INDEX(Array, Row_Num, [Column_Num])
中文表达式:INDEX(数组, 第几行, [第几列])
2、说明:
A、如果 Row_Num 为 0,将返回整列;如果 Column_Num 为 0,将返回整行。
B、如果同时使用 Row_Num 和 Column_Num,将返回 Row_Num 和 Column_Num 交叉处的单元格的值。如果 Row_Num 和 Column_Num 交叉处的单元格超出指定的数组范围,将返回引用错误(即 #REF! 错误)。
(二)引用形式
1、表达式:INDEX(Reference, Row_Num, [Column_Num], [Area_Num])
中文表达式:INDEX(对单元格的引用, 第几行 [第几列], [第几个区域])
2、说明:
A、Index 引用形式返回由指定行和列交叉处的单元格引用,如果引用由不连续的单元格组成,将返回由 Area_Num 指定的区域。
B、如果 Reference 为一个不连续的区域,必须把它们用括号括起来;例如:(A1:B5,B8:C11)。
C、如果 Reference 为一行或一列,则 Row_Num 或 Column_Num 都为可选项;例如:对于第一行的引用,公式可这样写:=INDEX(A1:B1,,2)。
D、当引用多个区域时,例如 (A1:B5,B8:C11),Area_Num 设置为 1,表示选用 A1:B5;Area_Num 设置为 2,表示选用 B8:C11。
E、Index函数的引用形式既可返回对单元格的引用又可返回引用单元格的值,这视具体情况而定,具体见下文的实例。
F、Index函数数组形式的“说明”( A、B 两点)同样适用于引用形式。另外,如果省略 Row_Num 和 Column_Num,Index 将返回由 Area_Num 所指定的区域。