INDEX函数用于返回表或区域中的值或值的引用,它两种形式:数组形式和引用形式。
数组形式
返回表格或数组中的元素值,此元素由行序号和列序号的索引值给定。当函数INDEX的第一个参数为数组常量时,使用数组形式。其语法如下。
INDEX(array,row_num,column_num)
其中参数array为单元格区域或数组常量。如果数组只包含一行或一列,则相对应的参数row_num或column_num为可选参数。如果数组有多行和多列,但只使用row_num或column_num,函数INDEX返回数组中的整行或整列,且返回值也为数组。row_num为数组中某行的行号,函数从该行返回数值;如果省略row_num,则必须有column_num。column_num为数组中某列的列标,函数从该列返回数值;如果省略column_num,则必须有row_num。
【典型案例】返回表格或数组中的元素值。本例的原始数据如图15-13所示。
步骤1:在A5单元格中输入公式“=INDEX(A2:B3,2,2)”,用于返回位于区域中第二行和第二列交叉处的数值(沙和尚)。
图15-13 原始数据
步骤2:在A6单元格中输入公式“=INDEX(A2:B3,2,1)”,用于返回位于区域中第二行和第一列交叉处的数值(唐三藏)。计算结果如图15-14所示。
引用形式
返回指定的行与列交叉处的单元格引用。如果引用由不连续的选定区域组成,可以选择某一选定区域。其语法如下。
INDEX(reference,row_num,column_num,area_num)
图15-14 计算结果
其中参数reference为对一个或多个单元格区域的引用。如果为引用输入一个不连续的区域,必须将其用括号括起来;如果引用中的每个区域只包含一行或一列,则相应的参数row_num或column_num分别为可选项。例如,对于单行的引用,可以使用函数INDEX(reference,column_num)。
参数row_num为引用中某行的行号,函数从该行返回一个引用。参数column_num为引用中某列的列标,函数从该列返回一个引用。area_num选择引用中的一个区域,返回该区域中row_num和column_num的交叉区域。选中或输入的第一个区域序号为1,第二个为2,依此类推。如果省略area_num,则函数INDEX使用区域1。
例如,如果引用描述的单元格为(A1:C4,D1:E4,F1:H4),则area_num 1为区域“A1:C4”,area_num 2为区域“D1:E4”,而area_num 3为区域“F1:H4”。
【典型案例】返回指定的行与列交叉处的单元格引用。本例的原始数据如图15-15所示。
图15-15 原始数据
步骤1:在A12单元格中输入公式“=INDEX(A2:C6,2,3)”,用于返回区域“A2:C6”中第二行和第三列的交叉处,即C3单元格的内容。
步骤2:在A13单元格中输入公式“=INDEX((A1:C6,A7:C10),2,2,2)”,用于返回第二个区域“A7:C10”中第二行和第二列的交叉处,即B8单元格的内容。
步骤3:在A14单元格中输入公式“=SUM(INDEX(A1:C10,0,3,1))”,用于对第一个区域“A1:C10”中的第三列求和,即对“C1:C10”求和。
步骤4:在A15单元格中输入公式“=SUM(B2:INDEX(A2:C6,5,2))”,用于返回以B2单元格开始到“A2:C6”单元格区域中第五行和第二列交叉处结束的单元格区域的和,即“B2:B6”单元格区域的和。计算结果如图15-16所示。
图15-16 计算结果