达永编程网

程序员技术分享与交流平台

INDEX+MATCH组合函数,搭配数据验证功能,轻松实现动态查询

据说在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函数来说还灵活好用呢?

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言