引用函数index的用法2——引用用法
上次说了index函数的数组用法,今天说说它的引用用法。所谓引用用法,就是它返回的值既可以是值也可以是引用。
-01-
函数说明
返回指定的行与列交叉处的单元格引用。如果引用由不连续的选定区域组成,可以选择某一选定区域。函数写法如下图第2种,有4个参数。
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。此处列出的区域必须全部位于一张工作表。如果指定的区域不位于同一个工作表,将导致 #VALUE! 错误。如果需要使用的范围彼此位于不同工作表,建议使用函数INDEX的数组形式,并使用其他函数来计算构成数组的范围。例如,可以使用CHOOSE函数计算将使用的范围。
例如,如果引用描述的单元格为 (A1:B4,D1:E4,G1:H4),则 Area_num 1 为区域 A1:B4,Area_num 2 为区域 D1:E4,而 Area_num 3 为区域 G1:H4。
注意:
Reference 和 Area_num 选择了特定的区域后,Row_num 和 Column_num 将进一步选择特定的单元格:Row_num 1 为区域的首行,Column_num 1 为首列,以此类推。函数 INDEX 返回的引用即为 Row_num 和 Column_num 的交叉区域。
如果将 Row_num 或 Column_num 设置为 0,函数 INDEX 分别返回对整列或整行的引用。
Row_num、Column_num 和 Area_num 必须指向 reference 中的单元格;否则,INDEX 返回 错误值 #REF!。如果省略 Row_num 和 Column_num,函数 INDEX 返回由 Area_num 所指定的引用中的区域。
-02-
示例解释
在E1单元格中输入公式=INDEX(A2:C10,2,3)。意思是在A2:C10这个区域中,返回第2行第3列交叉处的单元格的值。
在E1单元格中输入公式=INDEX((A1:C5,A7:C9),2,3,2)。意思是在第2个区域A7:C9中,返回第2行第3列交叉处的单元格的值。
在E1单元格中输入公式=INDEX((A2:C4,A7:C9),,3,2)。意思是在第2个区域A7:C9中,返回第3列的所有单元格的值。
在E1单元格中输入公式=SUM(INDEX(A2:C4,3,2):C4),结果为20.5。你想知道公式中INDEX(A2:C4,3,2):C4这部分是什么意思。对了,这就是它引用的用法。通常的理解是在A2:C4这个区域中返回第3行第2列交叉处的值5.5。而在此处的意思是返回5.5所在单元格的地址B4。INDEX(A2:C4,3,2):C4这部分就相当于B4:C4。
在E1单元格中输入公式=INDEX(A2:C4,3,2)+2,结果为7.5。此时,INDEX(A2:C4,3,2)返回的就是单元格的值。
由此看出,index返回值到底是单元格内容还是单元格引用,是由公式的需要决定的,就像上面的列子。那你会问返回单元格区域引用有什么用呢?它的好处就在于返回的引用可以作为其他函数的参数,因为有些函数的参数只支持区域引用,而不支持数组。比如下面的应用。
-03-
具体应用
1.求每个部门每个月的总销量。
上次我们用的是index数组用法,这次用引用用法。就是index返回值是一个区域引用。C29单元格公式为=SUMIF(B20:B27,A29,INDEX(C20:H27,,MATCH(B29,C19:H19,)))。index返回的是对应月份列的单元格区域引用,作为sumif函数的第3参数。sumif函数的第1和第3参数不支持数组。
总结,虽然index函数有2种写法,但我认为只要第一参数不是数组,这2种写法并没有太大的差别,都会根据公式的需要,返回值或区域引用。
index这个查找引用函数,你学会了吗?