据说在EXCEL表格里有一个组合函数比VLOOKUP函数还要好用,这个组合就是MATCH+INDEX函数,这个组合结合数据验证功能,实现动态查询数据,效果杠杠的,咱们来演示下吧。
如图所示,左侧假设是一张有很多数据的表格,右侧通过选择地区和编号查看绿格里选择的数据。这里有三个下拉选项,分别是地区、编号以及T1单元格。
先来设置地区的下拉选项。
选中地区单元格,也就是R2单元格,点击菜单栏上“数据-数据验证”,下拉选择“数据验证”。
弹出窗口,在设置标签下方设置验证条件。
点击允许,选择序列,这个选项较少,直接在来源里输入四个选项,并用英逗号间隔。
点击确定,选中R2单元格,就会出现下拉箭头,显示出四个选项。
编号较多,如果直接引用C列的编号,有重复的编号,因此我们这采用最简单的方法来处理。
一键复制C列的所有编号,粘贴到表格旁边的一个工作表内,全选,点击功能区“数据-删除重复值”。
弹出删除结果,删除了重复值,保留了唯一值,现在的编号都不重复。
选中编号单元格,打开数据验证窗口,在来源里选择删除了重复值的编号区域。点击确定后,设置好了编号的下拉列表。
最后一个,就是T1绿色单元格,这个单元格,咱们设置的是左侧表格里的首行标题,打开数据验证窗口,在来源里选择D1:F1,即“颜色、数量、单价”。
现在在T2单元格内输入函数公式“=INDEX(B1:F19,MATCH(R2&S2,B1:B19&C1:C19,0),MATCH(T1,B1:F1,0))”
公式解读:
这个函数公式初看有点长,其实也很简单,就两个函数,INDEX通过MATCH函数确定行列位置,返回数组区域里对应的值。下方我们来看下这两个函数都是啥意思。
函数一、MATCH函数 查找查找值在指定的查找范围内的相对位置。
语法说明:=MATCH(lookup_value, lookup_array, [match_type])
lookup_value:表示你要查找的数值;
lookup_array:表示你要查找的范围;
[match_type]:表示匹配模式,分为三种,大于匹配、精准匹配、小于匹配,咱们这里使用的是0,精准匹配。
函数公式:MATCH(R2&S2,B1:B19&C1:C19,0)
这里的编号不是唯一值,添加地区用连接符&组合成一个唯一值作为查找值,为了和查找值对应,同样在查找区域里将地区和编号区域用连接符组合起来,只有完成匹配也就是0匹配模式,才返回其所在的行位置编号。
函数公式:MATCH(T1,B1:F1,0)
这个就更简单了,就单条件的查找,只不过这个MATCH函数的查找区域是一行,根据T1单元格的值,在B1:F1区域中查找,返回列编号。
函数二、INDEX函数,在给定的单元格区域中,返回指定的行列交叉单元格的内容。
语法结构:=index(引用区域,行数,列数)
第1参数引用区域,是指要查询引用的数据表区域;
第2参数行数,是指要在引用区域中的第几行进行查询;
第3参数列数,指要在引用区域的第几列进行查询。
上方的函数公式“=INDEX(B1:F19,MATCH(R2&S2,B1:B19&C1:C19,0),MATCH(T1,B1:F1,0))”,两个MATCH函数分别返回了要查询数据的行号和列号,在查询区域也就是表B1:F19区域中查询行列交叉单元格内的值。
通过下拉选项的设置,让这三个查询条件变得灵活、动态。
点击地区、编号或是单价,都可以选择其他的选项,从而不用修改公式,直接返回其对应的结果。
怎么样,这组多条件的动态查询函数是不是比起VLOOKUP函数来说还灵活好用呢?