WPS 官微发布公告,说是自即日起 WPS 开始正式支持 XLOOKUP 函数。很多人就奇怪了,作为一款办公软件,增加个函数不是太正常了?这有啥可激动的?其实能让 WPS“激动”自然是有些道理,理由就是这个 XLOOKUP 实在太强了!

示例 1. 反向查找

目的:通过“姓名”反查“工号”

公式:=XLOOKUP (G6,B:B,A:A)

日常工作中我们经常会遇到用姓名查工号的情况,由于原始数据中,“工号”字段通常是位于“姓名”之前,因此直接使用 VLOOKUP 肯定无法得到结果。通常的办法,是借助 IF 函数建立一个虚拟数组“IF ({1,0},B:B,A:A)”,将“工号”与“姓名”临时对调一下,以满足 VLOOKUP 的操作需求。不过它的问题就是,对于新手童鞋来说,这个数组太难理解了。

如果换作 XLOOKUP 呢?很简单,直接输入“=XLOOKUP (G6,B:B,A:A)”就行。整个语法基本参照了 VLOOKUP 的习惯,先确定好要查找的内容(G6),然后告诉表格去哪里查找(B:B),最后返回对应列的结果就可以了(A:A)。相比之下,XLOOKUP 的逻辑是不是就清晰多了!

示例 2. 出错处理

目的:当查询无结果时,显示“查无此人”

公式:=XLOOKUP (G6,B:B,A:A,"查无此人")

为了防止 LOOKUP、VLOOKUP 等函数意外出错,我们通常会在函数外围包裹一层 IFERROR,用于手工控制出错信息的显示。不过这种做法一来会让公式变长,二来也不怎么高效。而 XLOOKUP 的处理方法绝对是简单粗暴,直接将出错信息标在了函数里。高效的同时,也让公式更加简练,就像下面这样:“=XLOOKUP (G6,B:B,A:A,"查无此人")”。

示例 3. 批量化查询

目的:通过“工号“查询该员工所有信息

公式:=XLOOKUP (G8,A:A,B:E)

编写搜索器时,会在原始数据中批量查询所需的内容。通常有两种解决方法,一是借助 VLOOKUP 手工确定要查询的列,二是通过 COLUMN 函数配合 VLOOKUP 做一个半自动查询器。

那么 XLOOKUP 有没有更简单的办法呢?答案是有的,方法就是直接填写“=XLOOKUP (G8,A:A,B:E)”。语法上依旧沿用了 VLOOKUP 的逻辑,先是确定好要查找的内容(G8),然后告诉表格去哪里查找(A:A),接下来返回 B:E 列里的对应信息即可。由于函数的“溢出效应”,相邻几个单元格(性别、职务、部门)也会自动填好结果,连拖拽这一步都省去了。

示例 4. 多条件查询

目的:通过“姓名”和“性别”两组条件查询员工信息

公式:=XLOOKUP (G7&H7,B:B&C:C,D:D)

现实中重名的情况并不少见,当一个条件无法确定一个人时,就要加载第二组条件。比如本例中,小编就使用了“姓名”+“性别”的双重条件验证。对于此类需求,传统的 VLOOKUP 需要借助 IF 函数生成一个虚拟数组。而在 XLOOKUP 之下,上述公式可以直接简化为“=XLOOKUP (G7&H7,B:B&C:C,D:D)”。

示例 5. 模糊查询

目的:根据分值为每个人标注等级。

公式:=XLOOKUP (D2,$H$2:$H$5,$I$2:$I$5,,-1)

熟悉 VLOOKUP 的小伙伴,大多知道这个函数最后有一个“精确匹配 FALSE”和“近似匹配 TRUE”的小参数。其中的“近似匹配”,就是我们常说的模糊查找。通常来讲,模糊查找主要用作区域数值的界定,比如 90-100 分为“优秀”、70-89 分为“良好”,类似这样的分数段筛选,就很适合使用模糊查找。不过它有一个前提,那就是数值源必须提前使用升序排列,否则无法得到准确结果。

而使用 XLOOKUP 就不用这么麻烦了,它的第五个参数(输入公式时会有提示)直接提供了“0”、“-1”、“1”、“2”四种不同匹配条件。以本例使用的“-1”为例,它的含义就是当搜索结果达不到目标值 499 时,会自动向下查找(小于 499)。正是借助这样一个选项,我们就轻松配置出了一个业绩等级设定表。

示例 6. 横向查找

目的:输入产品名称查询该产品的销量、销售额、利润、利润率

公式:=XLOOKUP (B7,B1:E1,B2:E2)

在 Excel 中,除了纵向搜索的 VLOOKUP 外,还有一个支持横向搜索的 HLOOKUP。这两组函数虽然作用不一,但语法却基本相同。区别是一个在列中查找,一个在行中查找。而我们的 XLOOKUP 其实也集合了纵向和横向两种查询机制,除了上面讲到的纵向查询外,你还可以通过变换查找区域来实现横向搜索。具体效果,如上图所示。

示例 7. 搜索最后记录

目的:快速查询某商品的最新入库价格

公式:=XLOOKUP (F4,B:B,C:C,,,-1)

很多出入库表格,都需要查找最后一次出入记录。这个看似简单的要求,实现起来却不容易。通常我们都是使用 LOOKUP 建立一个虚拟数组,然后再对其进行查找。但正如前面所言,这一类东东一来不适合新手理解,二来过多的数组函数对于系统性能也是拖累。特别在一些大型表格中,频繁地使用数组函数,会让表格变得异常缓慢。

而 XLOOKUP 的加入,让这个问题变得简单多了。它的解决方法很简单,直接用一个参数来搞定。依旧以上文为例,如果想查询某商品的最近一次入库价格,只要在它的第 6 参数位中,输入参数值“-1”。而返回的结果,正是该商品的最后一次入库价。

写在最后

怎么样?看完上面这些案例,是不是有种豁然开朗的感觉?其实在日常使用中,XLOOKUP 还有逻辑清晰、语句简练等优势。

举个最简单例子,以往在使用 VLOOKUP 时,查找范围后面的列数常常要我们手工去数,而 XLOOKUP 由于直接使用了列标作为返回列,因此也就省掉了这个步骤。

同时由于 XLOOKUP 还是一个全能型选手,特别对于新手来说更加友好,再不用劳神记忆各种复杂的函数和数组,一个 XLOOKUP 统统就搞定了!

推荐内容