【例】如下图所示,要求在单元格D10设置公式,根据姓名和月份查找对应的销售量。
公式1
=INDEX(C3:H7,MATCH(B10,B3:B7,0),MATCH(C10,C2:H2,0))
注:这是最常用的双向查找套路,利用Macth分别查找姓名所在行数和月份所在列数,然后用index(表格,行数,列数)提取对应的数值
公式2
=OFFSET($B$2,MATCH(B10,B3:B7,0),MATCH(C10,C2:H2,0))
注:同公式1用match查找行、列数,但最后是用offset(目标单元格,偏移行数,偏移列数)提取对应的值。
公式3
=VLOOKUP(B10,$B$3:$H$7,MATCH(C10,$C$2:$H$2,0) 1,0)
注:用match函数查找3月(C10数据)所在列数,作为Vlookup(目标,表格,列数,0)函数的第3个参数。
公式4
=INDIRECT(ADDRESS(MATCH(B10,B1:B7,0),MATCH(C10,A2:H2,0),,,"sheet1"))
注:用match函数根据给出的姓名和月份查找行、列数,然后用address(行数,列数,绝对引用方式,是否为r1c1,表格名)组合成引用地址,然后用indirect(单元格地址)函数提取值。
公式5
=HLOOKUP(C10,C2:H7,MATCH(B10,B2:B7,0),0)
注:用match函数查找姓名(B10数据)所在行数,作为Hlookup(目标,表格,行数,0)函数的第3个参数。
公式6
=SUMPRODUCT(($B$3:$B$7=B10)*($C$2:$H$2=C10)*$C$3:$H$7)
注:利用=号对比把符合条件的变成True,不符合条件的变为false,再用(行数据)*(列数据)转换成N行N列的数组并把不符合条件的全部变成0,而符合条件的会变成1,然后再*值区域把1转换成符合条件的数值,最后用sumprouct提取值。
公式7
=SUM((B3:B7=B10)*(C2:H2=C10)*(C3:H7)) 数组公式
注:原理同公式6,只是这里用了sum函数提取唯一符合条件(大于0)的值。因为sum函数不能直接进行数组运算,所以本公式为数组公式,要用ctrl shift enter完成输入。
公式8
=MAX((B3:B7=B10)*(C2:H2=C10)*(C3:H7)) 数组公式
注:原理同公式7,因为是数组中除了符合条件的值外,其余的全是0,所以这里也可以用max求最大值的方式提取数值。本公式同样也是数组公式,输入方法同7.
兰色说: 双向查找会一种公式就行了,干嘛要学这么多个烧脑的公式?兰色想说,这就是你和excel高手的区别。解题思路很重要,遇到问题时你总是找不到解决办法,而高手由于经常进行一题多解的思维锻炼,所以遇到难题马上就会闪现出很多解法。