如下图所示,需要根据H2单元格中的月份,以及H4单元格的城市名,在左侧数据表中来查询同时符合两个条件的数据。
数据查询,自然离不开VLOOKUP,在I3单元格输入以下公式:
=VLOOKUP(H2,A:F,MATCH(H4,A1:F1,0),0)
公式中的“H2”,是VLOOKUP要查询的关键字,“A:F”是要查询的数据区域,至于要在数据区域中返回第几列的内容,这里咱们使用MATCH函数来帮个忙。
MATCH(H4,A1:F1,0) 这部分的作用,是查询H4的城市名在A1:F1中所处的位置,结果返回一个数字。
VLOOKUP以MATCH函数的结果来返回对应列的内容,正所谓指哪儿打哪儿。
VLOOKUP函数的查询方向是从左到右,咱们也可以换成HLOOKUP,来从上到下查询:
=HLOOKUP(H4,1:7,MATCH(H2,A1:A7,0),0)
公式中的“H4”,是HLOOKUP要查询的关键字,“1:7”,表示第一行至第7行的整行引用,是要查询的数据区域,要在数据区域中返回第几行的内容呢?这里也是使用MATCH函数的结果作为参照。
MATCH(H2,A1:A7,0) 这部分,就是根据H2单元格中的月份,从A1:H7单元格区域中返回所处的位置。
注意,使用MATCH函数的结果作为VLOOKUP以及HLOOKUP函数的参数时,要特别注意MATCH函数本身查询区域的起始位置,必须要和V、H两位大哥的查询区域的起始位置相同。
就像本例中,VLOOKUP的查询区域是从A列开始,那MATCH函数的查询区域A1:F1,也是从A列开始。HLOOKUP函数的查询区域是从第一行开始,那MATCH函数的查询区域A1:A7,也是从第一行开始的。
下面这个公式,使用了两个MATCH函数:
=INDEX(A1:F7,MATCH(H2,A:A,0),MATCH(H4,1:1,0))
INDEX函数第一参数使用多行多列的A1:F7区域,然后再使用MATCH函数,分别以H2中月份的位置和H4中城市的位置,来作为INDEX函数的行列参数,月份在哪一行,INDEX函数就以此来确定要返回数据的行。城市在哪一列,INDEX函数就以此来确定要返回数据的列。
同样,使用INDEX与MATCH函数配合使用时,要注意MATCH函数本身查询区域的起始位置要和INDEX第一参数所选的行列起始位置相同。
因为查询后要返回的内容是数值,这里咱们也可以使用多条件求和的方法来处理:
=SUMPRODUCT((A2:A7=H2)*(B1:F1=H4)*B2:F7)
既然是多条件求和,还可以使用SUMIF来处理:
=SUMIF(A:A,H2,OFFSET(A:A,0,MATCH(H4,B1:F1,0)))
公式中的OFFSET(A:A,0,MATCH(H4,B1:F1,0)部分,以A列为参照基点,向下偏移0行,向右偏移列数由MATCH函数来指定,要查询的城市在哪一列,就返回哪一列的引用。得到引用作为SUMIF函数的求和区域。
如果你使用的是Office 2019或者最新版的WPS表格,还可以使用XLOOKUP函数来完成:
=XLOOKUP(H2,A2:A7,XLOOKUP(H4,B1:F1,B2:F7),0)
使用Office 2021的小伙伴,还可以用FILTER函数结合INDEX函数:
=INDEX(FILTER(A1:F7,A1:A7=H2),MATCH(H4,A1:F1,0))
练手文件:
https://pan.baidu.com/s/13l0d819agKIhh_IdanIQjg
提取码: 599g
图文制作:祝洪忠
1、点击或搜索微信公众号【 Excel之家ExcelHome】到公众号首页。
2、点击右上角【···】,在下拉菜单中点击【设为星标】。
设置星标后,小伙伴们就不用担心错过咱们的推送了!