乐于分享
好东西不私藏

EXCEL学习之路:XLOOKUP函数公式详解(下)

EXCEL学习之路:XLOOKUP函数公式详解(下)

    咱们继续学习XLOOKUP后面三个参数。

    第4个参数:未找到时提示

    含义:指定找不到有效的匹配项时返回的值; 如果找不到有效的匹配项,同时该参数缺失,则返回错误值#N/A。

    这个参数是可选参数,可写可不写。

    翻译过来,就是如果写这个参数,找不到对应数据时则显示你写的内容,例如这个参数,写"无",那么当查找不到数据时,单元格则显示"无"这个字,这个参数值一定要加英文双引号

    如果不写该参数,省略这一步,就直接写上英文逗号,那么当找不到对应数据时,单元格则默认显示#N/A,如下图所示,找不到E6糖果对应的数据,于是直接报错#N/A。

   
    若是我们填写这个参数,写"无",再来看一下公式结果,如下图,可以看出,糖果对应的F6单元格直接显示为"无"。

    第5个参数:匹配类型

    含义:指定匹配类型,默认值为0。

   这个参数也是可选参数,表示匹配类型,共有以下4种。

    0‌:精确匹配(默认)。

 ‌  -1‌:精确匹配,未找到返回下一个较小项。

‌    1‌:精确匹配,未找到返回下一个较大项。

 ‌   2‌:通配符匹配 。

    当第5参数,我们选0时,代表数据要一模一样才返回,找不到就报错#N/A,如下图。

    这个公式里的第4个参数,这里选择不填,不填的话,就照上面说过的,直接写上英文逗号。

    当我们选‌-1时,代表优先精确匹配,但找不到对应的数据时,就会自动选一个比它小的最近值,这里说的,是查找值(A列文本)的最近值,而不是数字(B列查找数据)的最近值。

    按照Excel汉语拼音首字母规则,A < B < C < D …… < Z,即A最小,Z最大。

    查找值 饼干(B)  <  果冻(G)  <  可乐(K)  <  面包(M)  <  牛奶(N)  <  奶糖(N)  <  薯片(S)  <糖果(T) <虾条(X)

    而我们需要查找的糖果(T),比它小的最近值是薯片(S),所以F6单元格的值取的是薯片的值,即500,如下图。

    当我们选‌1时,代表优先精确匹配,但找不到对应的数据时,就会自动选一个比它大的最近值。按照刚刚说的原理,我们很快能算出,比糖果(T)大的最近值是虾条(X),所以F6单元格的值取的是虾条的值,即200,如下图。

    当然,如果查找值本身就是数值时,就自动选一个比它小的最近值和比它大的最近值,这里就没有所谓的拼音规则了。例如下图,需要查找E2到E4对应的提成(为了大家容易分辨,我便把销量改成个位数了~)。

    当我们选-1时,优先精确匹配,因为E2在B2到B9的查找区域里,于是精确匹配了,结果是400。之所以是400,而不是400和900,是因为XLOOKUP默认行为是返回第一个匹配项,找到就停,不会继续查找后续匹配项。所以按XLOOKUP按行从上到下依次搜索的规律,F2的提成是400。

    但找不到匹配项时,就会自动选一个比它小的最近值,比如E3和E4,并不在B2到B9的查找区域里,所以找不到匹配项,比E3的6小的最近值是5,于是F3的提成是5的提成1000。而比E4的4小的最近值是3,于是F4的提成是3的提成800。

    为了加深理解,大家可以试着回想一下,当参数选1时,为什么会出现以下提成?

    当我们选‌2,通配符匹配时,代表可以用*或者?等单个字符做模糊查找。
    这是XLOOKUP的模糊查找功能,把第1参数查找值,写成带*或者?的模糊写法。

    *代表任意多个字符。
    可以代替0个、1个、多个文字/字母/数字。
    例如下图:
    奶*,等于所有以“奶”为开头的内容,通过A2到A9区域查找到奶糖,所以F8单元格的销量就是奶糖的销量700。
    *奶,等于所有以“奶”为结尾的内容,通过A2到A9区域查找到牛奶,所以F9单元格的销量就是牛奶的销量300。
    *奶*,等于所有包含“奶”两个字的内容,不管“奶”前面和后面是什么,通过A2到A9区域查找到牛奶和奶糖,但前面说过,因为XLOOKUP默认行为是无论有没有使用通配符,都默认返回第一个匹配项,所以F10单元格的销量,只会出现第一个结果即牛奶300。
    ?代表单个字符
    只能代替1个文字/字母/数字。
    如下图所示,F10之所以报错,是因为?代表一个字符,而?奶?总长度为3个字符,A2到A9区域里中间带奶字的3个字符,一个都没有,找不到匹配项,便返回#N/A错误。

    当我们试着把A8的奶糖改为好奶糖,再来看看结果。

    我们发现,F8居然变成了#N/A错误值,为什么呢?因为?既然是一个字符,那么奶?就等于是两个字符,A8原先是奶糖,即两个字符,现在变成了好奶糖,即三个字符,奶?找不到匹配项,只能报错。

而E10本身?奶?,总共三个字符,A8的好奶糖也是三个字符,便匹配上了。

    第6个参数:搜索模式

    含义:指定搜索方向,默认值为1。

    这个参数也是可选参数,表示搜索模式,共有以下4种。

    1‌:从第一项开始搜索(默认)。

‌   -1‌:从最后一项开始反向搜索。

‌    2‌:升序二进制搜索。

 ‌  -2‌:降序二进制搜索 。‌‌

    参数值1,就是正向搜索模式,也是默认模式,从查找区域的第一行或第一列开始,依次向下或向右搜索,找到第一个匹配的结果后,立刻停止查找并返回结果。因为是默认模式,所以即便不写此参数,也自动生效。

    如E2查找值在B2到B9查找区域内,找到第一个匹配的结果400后就停止了并返回结果400。

    而E3和E4查找值不在B2到B9查找区域内,找不到匹配项,因此报错#N/A。

    参数值-1,就是反向搜索模式,从查找区域的最后一行或最后一列开始,依次向上/向左搜索,找到第一个匹配的结果后,立刻停止查找并返回结果。

    比如G2查找值在B2到B9查找区域内,从下往上找到第一个匹配的结果900后就停止了并返回结果900。

    参数值‌2,二进制搜索,升序专用

    基于二分法的高效搜索算法,它会先定位查找区域的中间值,通过和查找值对比,快速缩小搜索范围,但前提条件是,查找区域必须是升序排列,否则会返回错误结果。

     参数值-‌2,二进制搜索,降序专用

    和上面的逻辑完全一样,唯一的区别是,查找区域必须是降序排列,否则会返回错误结果。

    除了排序的要求,还要注意,二进制与通配符不兼容,当第5参数设置为2(即通配符匹配)时,第6参数不能用二进制的2和-2搜索,只能用1或者-1,否则公式会报错。

    鉴于这两个参数值2和-2在日常办公中,用得非常少,这里就不展开介绍了。

    介绍完了XLOOKUP的这6大参数,虽然参数看起来很多,实际很好记,很好用。      若是简单查询,前3个参数够用了,后面3个参数可以直接全部省略。遇到复杂要求时,再加上后面3个参数,就能满足要求,相较于需要嵌套公式的VLOOKUP,实在很灵活,很强大,其实用习惯了的话,大家可能更喜欢XLOOKUP哦~