INDEX与MATCH函数一对好搭档
素描
前言
EXCEL中INDEX和MATCH函数经常同时出现,对于从区域中查找特定的值非常有用,但公式套公式写起来比较长,看起来比较复杂,其实稍加分析,就会豁然开朗,下面我们就逐一分析分析这两个函数的用法。
1INDEX函数
INDEX(区域,行,列):
意思是从一个区域中查找指定行和列的交叉点的值。类似我们查课程表,周几,第几节课的交叉点就是我们要上的课。
如下图所示:查找B2:K8区域中第2行,第4列的值,公式为
INDEX(B2:K8,2,4)=14
2MATCH函数
MATCH(值,区域,0或1或-1)
意思为查找某个值在区域的位置,精确查找为0,模糊查找为1或-1。(当为1时,区域中的值需按升序排列,当为-1时,区域中的值需按降序排列)
下表中:
求8月1日在日期行中的位置为:MATCH(B8,B1:K1,0)=3,即为第3个。
求采购在系列中的位置为:MATCH(E8,A2:C4,0)=2,即为第2个
3INDEX+MATCH函数联合作战
那么查找8月1日,采购的进度就可以用INDEX函数求出:
INDEX(B2:K4,2,3)=30%,即在B2:K4区域中查找第2行,第3列的值,
但这样写,公式就失去了意义,行和列就变成了常量,当我们改变日期和系列的时候,进度不会自动变化。
也可以按下图所示,先将采购和日期所对应的行和列用MATCH函数公式算出来,再用INDEX函数计算进度的值,这叫分步计算,也叫辅助列计算法。
当你逐渐熟悉上述公式后,就可以将函数嵌套起来,打一个漂亮的组合拳了 :INDEX(B2:K4,MATCH(E8,A2:A4,0),MATCH(B8,B1:K1,0))
看上去很复杂的公式,一分解是否变得简单多了呢。
4INDEX扩展用法
上面讲的INDEX函数都是返回单元格的值,但INDEX还可以作为引用返回地址,如:
SUM(M2:INDEX(M2:Q4,3,4))=SUM(M2:P4)
因为INDEX(M2:Q4,3,4)返回P4的值,在这里将被扩展为P4的引用。当然也可以两个INDEX一起用如:SUM(INDEX():INDEX())
举个例子:
已知各工种的人力记录如下,如何统计某一时间段各工种的人力之和。
虽然时间段不确定,但我们可以根据日期和工种判断区域交叉点的位置,这就足够了,当起始点和结束点的位置确定后,求和就变得简单起来。
M8=SUM(INDEX($M$2:$Q$4,MATCH($L8,$L$2:$L$4,0),MATCH($M$6,$M$1:$Q$1,0)):INDEX($M$2:$Q$4,MATCH($L8,$L$2:$L$4,0),MATCH($N$6,$M$1:$Q$1,0)))
当改变区间日期时,各工种的人力之和会自动改变求和区域:
是不是有点长,先从外往里扒,像扒洋葱一样
第一层SUM(),求和
第二层INDEX():INDEX(),返回一个引用区域
第三层MATCH(),返回起始日期、结束日期和工种所对应的位置
总结
嵌套函数最容易出错的是括号的位置和个数,所以写公式时要先写括号,再写参数,保证每个函数的完整性,否则检查起来非常困难!
END