Excel 应用INDEX函数计算表或区域中的值或值的引用

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 计算结果

登记现金日记账函数:SUMPRODUCT、INDEX函数

我们先来学习一下登记现金日记账相关函数的语法和功能,这里我们重点讲解SUMPRODUCT函数和INDEX函数。

SUMPRODUCT函数的语法和功能

我们主要从函数的含义、函数的语法格式、函数在日常办公中运用的实例介绍以及函数使用的注意点这4个方面对SUMPRODUCT函数进行讲解。

含义

SUMPRODUCT函数的适用范围在给定的几组数组中,先把数组间对应的元素相乘,然后返回乘积之和,如图3-1所示。

图3-1 SUMPRODUCT函数含义

从字面上可以看出,SUMPRODUCT由两个英文单词组成,sum是和,product是积,所以是乘积之和的意思。

SUMPRODUCT函数的语法格式

SUMPRODUCT(array1,array2,array3,…),array为数组,如图3-2所示。

SUMPRODUCT函数实例——基础用法

当SUMPRODUCT函数的参数中只有一个数组时,即对数组{1;2;3;4;5;6;7}进行求和,1+2+3+4+5+6+7=28,如图3-3所示。

当sumproduct函数中的参数为两个数组时,两个数组的所有元素对应相乘,如图3-4所示。

公式“=sumproduct(A2:A8,B2:B8)”可转化为“=sumproduct(数组1,数组2)”,即“=sumproduct({1;2;3;4;5;6;7},{1;2;3;4;5;6;7})”=1*1+2*2+3*3+4*4+5*5+6*6+7*7=140。

图3-2 SUMPRODUCT函数的语法格式

图3-3 对一个数组求和

图3-4 对两个数组计算

当sumproduct函数中的参数为3个数组时,3个数组的所有元素对应相乘,在E4单元格中输入的公式为“=SUMPRODUCT(A2:A8,B2:B8,C2:C8)”,如图3-5所示。

图3-5 3个数组元素对应相乘

SUMPRODUCT函数实例——多条件求和

我们先来看第一个实例:单条件求和——统计成都发货平台的发货量,如图3-6所示。

图3-6 单条件求和

在E2单元格中输入公式“=SUMPRODUCT((A2:A13=”成都”)*(B2:B13))”。

看到这个公式你可能有疑惑,它跟语法格式好像不一样,其实把它看作只有一个参数,因为当函数中出现由TRUE和FALSE组成的逻辑数组时,公式要写成“=SUMPRODUCT((A2:A13=”成都”)*1,(B2:B13))”格式,乘以1,把它转化成数组才能参与运算,否则就写成最上面的那种形式。

公式分解如下:

“=SUMPRODUCT({数组1}*{数组2})”

“=SUMPRODUCT({TRUE;…..TRUE;…..TRUE}*{11012;…41568;…12506})”

=1*11012+1*41568+1*12506=65086

第二个实例:多条件求和——求发货平台为成都、收货平台为重庆的发货量,如图3-7所示。在E2单元格中输入公式“=SUMPRODUCT((A2:A13=”成都”)*(C2:C13=”重庆”)*(D2:D13))”即可求出结果。

图3-7 多条件求和

SUMPRODUCT函数使用的注意点

  1. SUMPRODUCT函数后面的参数必须是数组,即行和列的维度是一致的。参数维数不一致会返回错误值#VALUE!
  2. SUMPRODUCT函数中以逗号分隔的各个参数必须为数字型数据。
  3. 如果是判断的结果逻辑值,就要乘以1转换为数字。
  4. 如果不用逗号而直接用*号连接,就相当于乘法运算,就不必乘以1。

INDEX函数的语法和功能

和讲解SUMPRODUCT函数一样,我们主要从函数的含义、函数的语法格式、函数在日常办公中运用的实例介绍以及函数使用的注意点这4个方面对INDEX函数进行讲解。

INDEX函数的含义

返回数据表区域的值或对值的引用,如图3-8所示。

图3-8 INDEX函数的含义

Index函数的两种形式:数组和引用。

1)数组形式——返回数组中指定单元格或单元格数组的数值。

2)引用形式——返回引用中指定单元格或单元格区域的引用。

INDEX函数的语法格式

数组形式=INDEX(array,row_num,column_num)=INDEX(数据表区域,行数,列数)

引用形式=index(reference,row_num,column_num,area_num)

=INDEX(一个或多个单元格区域的引用,行数,列数,从第几个选择区域内引用),如图3-9所示。

图3-9 INDEX函数的语法格式

INDEX函数数组形式实例

第一个实例:如图3-10所示,在B8单元格中输入公式“=INDEX(B3:D6,4,3)”,其中,数据表区域(B3:D6),数(4),列数(3),返回数据表区域(B3:D6)第4行第3列的值120。

图3-10 在B8单元格中输入公式

第二个实例:通过INDEX函数和MATCH函数实现单条件匹配查找。

如图3-11所示,利用INDEX进行匹配查找,当数据很多时,我们不可能通过点数来确定INDEX函数中的行数和列数,而是要通过MATCH函数来确定行数和列数。

在B9单元格中输入以下公式:

=INDEX($F$2:$I$6,MATCH(A9,$F$2:$F$6,0),MATCH($B$8,$F$2:$I$2,0))

这里使用绝对引用要注意,B8代表6月份不变要使用绝对引用。

图3-11 单条件匹配查找

INDEX函数引用形式实例

第一个实例:如图3-12所示,在B8单元格中输入公式“=INDEX((B3:D6,G3:I6),4,3)”,其中,一个或多个单元格区域的引用(两个区域B3:D6,G3:I6),行数(4),列数(3),从第几个选择区域内引用(省略,默认第一个区域B3:D6),所以返回120。

图3-12 从第一个区域内引用

第二个实例:如图3-13所示,在B8单元格中输入公式“=INDEX((B3:D6,G3:I6),4,3,2)”,其中,一个或多个单元格区域的引用(两个区域B3:D6,G3:I6),行数(4),列数(3),从第几个选择区域内引用(第二个区域G3:I6),所以返回500。

INDEX函数使用的注意点

Row_num和Column_num必须指向数组中的某个单元格,否则,INDEX函数出错,返回#REF!错误值。

图3-13 从第二个区域内引用

Excel 计算60分到90分之间的人数:INDEX函数

如果需要计算某个得分区间内的人员个数,也可以使用INDEX函数实现。本例以计算外语成绩60分到90分之间的学生人数为例,计算时还需要使用FREQUENCY函数,该函数的语法为:=FREQUENCY(data_array, bins_array),各参数的含义介绍如下。

※ data_array:一个值数组或对一组数值的引用,要为它计算频率。如果data_array中不包含任何数值,函数FREQUENCY将返回一个零数组。

※ bins_array:一个区间数组或对区间的引用,该区间用于对data_array中的数值进行分组。如果bins_array中不包含任何数值,函数FREQUENCY返回的值与data_array中的元素个数相等。

小提示 使用FREQUENCY函数时,返回的数组中的元素个数比bins_array中的元素个数多1个。多出来的元素表示最高区间之上的数值个数。例如为3个单元格中输入的3个数值区间计数,需要在四个单元格中输入函数获得计算结果。多出来的单元格将返回data_array中第3个区间值以上的数值个数。

01 打开工作表,在其中输入学生的各科成绩。

02 选中需要显示结果的单元格,输入公式:=INDEX(FREQUENCY(C2:C7,{60,90}),2),然后按下“Enter”键,即可得到此工作表中外语成绩在60到90分之间的人数结果。

alt

小提示 本例首先利用FREQUENCY函数计算60分以下的人数、60分到90分之间的人数和90分以上的人数,组成一个纵向的一维数组,然后利用INDEX函数从内存数组中提取第2行的数据,即得分在60分到90分之间的人数。

Excel 在一个未排序的区域中查找值:INDEX、MATCH函数

如果需要在一个未排序的区域中查找值,可通过INDEX和MATCH函数实现。

INDEX函数的含义前面已经介绍了,这里将不再介绍。MATCH函数的语法为:=MATCH(lookup_value, lookup_array,[match_type]),各参数的含义介绍如下。

※ lookup_value:需要在lookup_array中查找的值。该参数可以为值(数字、文本或逻辑值)或对数字、文本或逻辑值的单元格引用。

※ lookup_array:要搜索的单元格区域。

※ match_type:指定Excel如何在lookup_array中查找lookup_value的值,该参数的值为-1、0或1。如果省略此参数,则默认值为1。

注意 match_type参数为1或省略,MATCH函数会查找小于或等于lookup_value的最大值;match_type参数为0,MATCH,函数会查找等于lookup_value的第一个值;match_type参数为-1,MATCH,函数会查找大于或等于lookup_value的最小值。

下面以在比赛成绩表中根据姓名查询成绩为例,介绍在未排序的单元格区域中查找某个值的具体操作。

01 打开成绩表,输入姓名和比赛成绩等相关数据。

02 选中“B9”单元格,在其中输入查询条件,即需查询成绩的选手姓名。

03 在单元格中输入公式:=INDEX(A2:B7,MATCH(B9, A2:A7,0),2),然后按下“Enter”键确认,即可得到该选手的比赛成绩。

alt

Excel实战:实现学生成绩查询

打开“学生成绩查询.xlsx”工作簿,某大学语言测试成绩表如图16-67所示。现在需要实现只输入学生姓名,就能够查询某一学生的成绩或其他信息。

下面介绍如何使用查找与引用函数中的INDEX函数和MATCH函数来实现这种查询功能。

图16-67 学生成绩表

STEP01:选中H3单元格,在编辑栏中输入公式“=INDEX(E:E,MATCH($G$3,$A:$A,0))”,输入完成后按“Enter”键返回计算结果,如图16-68所示。该公式使用INDEX函数返回成绩表中$G$3所在行对应E列的值,使用MATCH函数查找成绩表中A列与单元格$G$3相同的值。

STEP02:选中G3单元格,在单元格中输入一个学生的姓名,这里输入“田珊”,然后按“Enter”键返回,可以看到在H3单元格中显示出其成绩,如图16-69所示。

图16-68 输入成绩公式

图16-69 输入学生姓名查询成绩

STEP03:选中H5单元格,在编辑栏中输入公式“=INDEX(E:E,MATCH($G$5,$B:$B,0))”,输入完成后按“Enter”键返回计算结果,如图16-70所示。该公式使用INDEX函数返回成绩表中$G$5所在行对应E列的值,使用MATCH函数查找成绩表中A列与单元格$G$5相同的值。

STEP04:选中G5单元格,在单元格中输入一个学生的准考证号码,这里输入“1525509012510716”,然后按“Enter”键返回,可以看到在H5单元格中显示出其成绩,如图16-71所示。

图16-70 在H5单元格中输入公式

图16-71 使用准考证号码查询学生成绩

Excel 返回区域值或值引用:INDEX函数

INDEX函数用于返回表或区域中的值或值的引用,它两种形式:数组形式和引用形式。

数组形式

返回表格或数组中的元素值,此元素由行序号和列序号的索引值给定。当函数INDEX的第1个参数为数组常量时,使用数组形式。其语法如下:


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参数。下面通过实例详细讲解该函数的使用方法与技巧。

打开“INDEX.xlsx”工作簿,切换至“Sheet1”工作表,本例中的原始数据如图16-46所示。要求根据工作表中的数据内容,返回表格或数组中的元素值。具体操作步骤如下。

STEP01:选中A5单元格,在编辑栏中输入公式“=INDEX(A2:B3,2,2)”,用于返回位于区域中第2行和第2列交叉处的数值(沙和尚),输入完成后按“Enter”键返回计算结果,如图16-47所示。

图16-46 原始数据

图16-47 A5单元格返回结果

STEP02:选中A6单元格,在编辑栏中输入公式“=INDEX(A2:B3,2,1)”,用于返回位于区域中第2行和第1列交叉处的数值(唐三藏),输入完成后按“Enter”键返回计算结果,如图16-48所示。

引用形式

返回指定的行与列交叉处的单元格引用。如果引用由不连续的选定区域组成,可以选择某一选定区域。其语法如下:


INDEX(reference,row_num,column_num,area_num)

其中,reference参数为对一个或多个单元格区域的引用。如果为引用输入一个不连续的区域,必须将其用括号括起来。如果引用中的每个区域只包含一行或一列,则相应的参数row_num参数或column_num参数分别为可选项。例如,对于单行的引用,可以使用函数INDEX(reference,,column_num)。

row_num参数为引用中某行的行号,函数从该行返回一个引用。column_num参数为引用中某列的列标,函数从该列返回一个引用。area_num参数为选择引用中的一个区域,返回该区域中row_num参数和column_num参数的交叉区域。选中或输入的第1个区域序号为1,第2个为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。下面通过实例详细讲解该函数的使用方法与技巧。

打开“INDEX函数.xlsx”工作簿,切换至“Sheet2”工作表,本例中的原始数据如图16-49所示。要求根据工作表中的数据内容,返回指定的行与列交叉处的单元格引用。具体操作步骤如下。

图16-48 A6单元格返回结果

图16-49 原始数据

STEP01:选中A12单元格,在编辑栏中输入公式“=INDEX(A2:C6,2,3)”,用于返回区域A2:C6中第2行和第3列的交叉处,即C3单元格的内容,输入完成后按“Enter”键返回计算结果,如图16-50所示。

STEP02:选中A13单元格,在编辑栏中输入公式“=INDEX((A1:C6,A7:C10),2,2,2)”,用于返回第2个区域A8:C11中第2行和第2列的交叉处,即B8单元格的内容,输入完成后按“Enter”键返回计算结果,如图16-51所示。

图16-50 A12单元格返回结果

图16-51 A13单元格返回结果

STEP03:选中A14单元格,在编辑栏中输入公式“=SUM(INDEX(A1:C10,0,3,1))”,用于对第1个区域A1:C10中的第3列求和,即对C1:C10求和,输入完成后按“Enter”键返回计算结果,如图16-52所示。

STEP04:选中A15单元格,在编辑栏中输入公式“=SUM(B2:INDEX(A2:C6,5,2))”,用于返回以B2单元格开始到A2:C6单元格区域中第5行和第2列交叉处结束的单元格区域的和,即B2:B6单元格区域的和,输入完成后按“Enter”键返回计算结果,如图16-53所示。

图16-52 A14单元格返回结果

图16-53 A15单元格返回结果