XLOOKUP函数,是新版Excel中的函数,用于根据指定的查找值在给定的数据范围或数组中搜索,并返回与该查找值相对应的结果。
其功能之强大,先来看看它的语法结构:
XLOOKUP(lookup_value,lookup_array,return_array,[if_not_found],[match_mode],search_mode])
白话翻译:
XLOOKUP(查找值, 查找数组, 返回数组, [未找到时的返回值], [匹配模式], [搜索模式])
这个函数的前三个参数,是必填参数,后面三个参数是选填参数,可以实现单条件的查找,反向查找,模糊查找,横向查找,区间查找,多列数据查找,交叉查找等各种复杂的查找需求。
今天我们来看一个特殊的需求,查找数组是两个单独的表格,这里为了好观看数据,我将2个表格放到了同一个表格里面。
如图所示,表格1里有部分产品数据,表格2里有部分产品数据,而查询表格里的产品编号是不分表格的,只要产品编号对应上,就显示出对应的数量。
先查询产品编号A01005的数量,这个是表格1里的产品编号,故我们用XLOOKUP函数先来查询表格1里面的数据,就非常容易书写函数公式:
=XLOOKUP(G3,$A$3:$A$8,$B$3:$B$8)
这里只使用到了XLOOKUP函数的三个参数。
G3:查找值
$A$3:$A$8:查找数组,也就是第一个表格里的产品编号,数据区域固定,习惯性添加绝对引用符号。
$B$3:$B$8:返回结果,也就是第一个表格里产品编号对应的数量,也就是我们想要获取的数量。
上面这个函数公式只能查询第一个表格的数据,如果我们把产品编号换成第二个表格里的编号,公式就会报错,那如何才能在两个表格里同时查找呢?
这个公式的第四个参数是“未找到时的返回值”,那么我们是不是可以这样来思考,如果在第一个表格里没有找到数据,就返回第二个表格里对应的数量呢?如何获取第二个表格里的数量,就还是使用XLOOKUP函数。
有了思路后,我们就修改公式:=XLOOKUP(G3,$A$3:$A$8,$B$3:$B$8,XLOOKUP(G3,$D$3:$D$8,$E$3:$E$8))
也就是第四个参数同样使用XLOOKUP函数,在第二个表格里再次查找一遍。
看起来公式较长,嵌套了一个XLOOKUP函数,其实只要理解了每一个参数的意思,是不是就特别容易理解了。
新手不太熟悉公式里的每个参数的,建议点击菜单栏下方的“FX”图标,打开参数面板,查看每一个参数的说明以及后面显示的值,以此来慢慢理解。
上面的查询表格里的产品编号是人工输入的,那我们做成下拉选项的样式,直接点击单元格,下拉选择产品编号,这样来切换查询数据,是不是更高级,更方便呢?
如何在表格里设置下拉选项?
这里的下拉选项是产品编号,数据可能较多,故我们可以找一个空白列,复制两个表格里的产品编号到一列,显示工作中有可能会有重复的编号,选中单列,点击菜单栏上“数据-删除重复值”,让产品编号保留唯一值。
选中整理好的产品编号列,点击菜单栏上“公式-定义名称”,弹出新建名称窗口,在名称输入框里自己定义个名称,如:编号。
选中查询表格下方的产品编号单元格,点击菜单栏上“数据-数据验证-数据验证”。
弹出窗口,点击验证条件,设置允许为序列,来源输入“=编号”,也就是前面我们整理的产品编号选项列。(这里如果不去定义名称,也可以直接点击右侧的箭头,选择整理好的产品编号列区域)
点击确定,单元格右侧出现下拉箭头符号,点击就显示出了所有的产品编号,我们就能下拉选择编号进行查询了。
现在不管你是输入A开头的编号,还是B开头的编号,H3里都会显示出对应的数量了。
怎么样?XLOOKUP嵌套XLOOKUP同时查询两个表格里的数据,并且组合数据验证实现动态查询,看起来是不是高大尚许多呢?