有这样一个例子,也是多次给学生讲解过的:要求从左侧的数据表中,查找指定地区、指定产品的数据。

不是说这个题目有多难,有多大实际意义,但这个题目对于训练自己的逻辑思维,是非常有用的。
从本质上来说,这个问题是两个条件的数据查找问题。看起来复杂,实则很简单,关键是,你从什么角度来解决这个问题。
思路1
如果把地区作为条件(它在左边一列),把产品作为从左往右的位置,那么就可以使用VLOOKUP函数来查找了,而产品的位置则可以使用MATCH来确定:
=VLOOKUP(J3,B3:F9,MATCH(J4,B2:F2,0),0)
公式解释:
查找条件:J3
查找区域:B3:F9
取数列位置:MATCH(J4,B2:F2,0)
思路2
如果把产品作为条件(它在上面一行),把地区作为从上往下的位置,那么就可以使用HLOOKUP函数来查找了,而地区的位置可以使用MATCH来确定:
=HLOOKUP(J4,C2:F9,MATCH(J3,B2:B9,0),0)
公式解释:
查找条件:J4
查找区域:C2:F9
取数行位置:MATCH(J3,B2:B9,0)
思路3
如果把地区和产品作为两个独立的行、列条件,那么就可以使用INDEX函数来查找,而它们的行、列位置,可以使用MATCH来确定:
=INDEX(C3:F9,MATCH(J3,B3:B9,0),MATCH(J4,C2:F2,0))
公式解释:
查找区域:C3:F9
取数行位置:MATCH(J3,B3:B9,0)
取数列位置:MATCH(J4,C2:F2,0)
思路4
如果希望通过行、列偏移的方法查找数据,就可以使用OFFSET函数来查找,而行、列偏移数,也是使用MATCH来确定:
=OFFSET(B2,MATCH(J3,B3:B9,0),MATCH(J4,C2:F2,0))
公式解释:
基准单元格:B2
往下偏移行数:MATCH(J3,B3:B9,0)
往右偏移列数:MATCH(J4,C2:F2,0)
思路5
如果希望通过工作表的行、列坐标的方法查找数据,可以使用INDIRECT函数,但仍需要使用MATCH来确定行列坐标:
=INDIRECT("R"&MATCH(J3,B:B,0)&"C"&MATCH(J4,2:2,0),0)
公式解释:
使用R1C1的引用方式来引用单元格
数据所在工作表的行号:MATCH(J3,B:B,0)
数据所在工作表的列号:MATCH(J4,2:2,0)
思路6
本案例中,查找数据是数字,因此还可以使用SUMPRODUCT函数做多条件求和,两个条件都满足的数据只有一个:
=SUMPRODUCT((B3:B9=J3)*(C2:F2=J4)*C3:F9)
公式解释:
判断地区的条件:(B3:B9=J3)
判断产品的条件:(C2:F2=J4)
求和区域:C3:F9
也可以使用SUM函数做公式,只不过是数组公式:
=SUM((B3:B9=J3)*(C2:F2=J4)*C3:F9)
思路7
由于本案例的查找数据是数字,也可以使用SUMIF函数做单条件求和,不过需要使用OFFSET函数偏移来引用求和区域了,此时,有两个角度的求和:
(1)以地区列作为判断条件,以产品列作为求和区域
=SUMIF(B3:B9,J3,OFFSET(B3,,MATCH(J4,C2:F2,0),7,1))
(2)以产品行作为判断条件,以地区行作为求和区域
=SUMIF(C2:F2,J4,OFFSET(C2,MATCH(J3,B3:B9,0),,1,4))
当然,也可以使用INDIRECT函数来引用求和区域:
=SUMIF(B:B,J3,INDIRECT("C"&MATCH(J4,2:2,0),0))
=SUMIF(2:2,J4,INDIRECT("R"&MATCH(J3,B:B,0),0))
------------
总结:
本案例很简单,但求解方法很多,解决问题的思路不同,所用的函数也不同,因为做出来的公式也不同。
培养自己的逻辑思路,是学习和应用Excel函数的核心,而不是照搬套用别人的公式,更不是背函数语法。
---------------
函数公式精选文章
数据分析近期文章

