Excel 逆向查询的 6 种方法

VLOOKUP 是大家最常用的查询函数,一般也是带领大家进入 Excel 函数大门的“启蒙老师”。不过它并不是万能的,有些时候它也有做不到的事情。咱们先回顾一下 VLOOKUP 的语法。

反人类版的语法:

VLOOKUP (lookup_value, table_array, col_index_num, [range_lookup])

地球人能看懂的语法:

VLOOKUP (第 1 参数,第 2 参数,第 3 参数,[可有可无的第 4 参数])

语法解析:

第 1 参数:找什么(查找值)

第 2 参数:哪里找(查找区域)

第 3 参数:第几列(返回值在查找区域的第几列)

第 4 参数:精确还是模糊(0 或 1,默认为 1)

在使用 VLOOKUP 的时候,对于第 2 个参数(即查找值与返回值所在的单元格区域),查找值所在列必须在返回值所在列之前,不然函数无法工作。

如下图所示,如果需要查询键盘对应的存货编码,则需要将 A、B 两列进行对换,即存货名称这一列必须在存货编码这一列的前面!那么,图中的情况下,该怎么查询呢?每次都要将两列数据进行互换吗?

屏幕快照 2018-10-05 10.26.45

当然不是!我们有 6 种解决方法!

1. VLOOKUP + IF

=VLOOKUP(E3,IF({1,0},B2:B10,A2:A10),2,0)

屏幕快照 2018-10-05 11.04.11

另外 3 个参数不难理解,核心在于用 IF 函数数组公式构造的第 2 参数。简单的说,就是利用 IF 函数,值为 1 即 TRUE 的时候返回 B 列单元格,值为 0 即 FALSE 的时候返回 A 列单元格, 重新构造查找区域,也就是 B 列存货名称在前、A 列存货编码在后的新单元格区域。这个时候, VLOOKUP 函数就可以正常查找了。

以后将会开篇详细说明 IF 和 {1,0} 的使用方法哦,敬请期待。

2. VLOOKUP + CHOOSE

=VLOOKUP(E3,CHOOSE({1,2},B2:B10,A2:A10),2,0)

image-20181005112323775

这里就是将 IF 函数替换为 CHOOSE 函数,效果是一样的,也就不再特别说明了。注意哦,这里不是 {1,0} 而是 {1,2}

3. LOOKUP

=LOOKUP(1,0/(E3=B2:B10),A2:A10)

image-20181005112844924

这里就先不作解释了,不然篇幅太长,以后开篇单独介绍 LOOKUP 函数的用法。这里童鞋们只要将里面的单元格替换,就能变成自己的公式啦。

4. INDEX + MATCH

=INDEX(A2:A10,MATCH(E3,B2:B10,0))

image-20181005113916431

简单说明一下,MATCH 函数也是查找函数,但是它返回的不是单元格的值,而是行号或者列号。比如 MATCH(“显卡”,B2:B10,0),返回的是 7 这个数值,也就是说 显卡B2:B10 的第 7 行这个位置。而 INDEX 函数的作用是,返回 A2:A10 这个区域第几行的内容,例如 INDEX(A2:A10,7) ,就会返回 A2:A10 这个区域的第 7 行内容,也就是 B0007 这个值。

通过将这两个函数组合,MATCH 函数返回行号作为INDEX 的第 2 参数,INDEX 函数返回单元格区域对应行号的值,两个函数完美搭配,实现反向查询!

5. OFFSET + MATCH

=OFFSET(A1,MATCH(E3,B2:B10,0),)

image-20181005115321574

OFFSET 函数是将基点单元格进行移动的函数,可以返回移动后单元格的值。它有 3 个必填参数:

  1. 基点单元格
  2. 移动的行数:向移动为正数,向移动为负数
  3. 移动的列数:向移动为正数,向移动为负数

注意到上面公式里最后一个 吗,因为这里用不到第 3 参数,但是它又是必填的,所以这里只能填写一个逗号作为代替。

拿查找 鼠标 为例,它在 B2:B10 的第 4 个位置,利用 MATCH 函数即可返回这个值。然后利用 OFFSET 的位移功能,将 A1 向下移动 4 个单元格即 A5 ,是不是返回鼠标对应的存货编码了呢。

6. INDIRECT + MATCH

=INDIRECT("A"&MATCH(E3,B2:B10,0)+1)

image-20181005120309952

INDIRECT 函数的作用是将文本转换为真正可以使用的公式。比如在单元格里输入 "=A8",回车之后你只能看到 =A8 这几个字符,而不是 A8 这个单元格的内容 B0007

但是INDIRECT 函数就可以做到。

咱们又换一个查询内容,这次就用 手机 吧。通过 MATCH 函数返回手机在 B2:B10 的第 2 个位置,也就是 B3 单元格,行号是 3,所以这里需要 +1。对应的存货编码也是在第 3 行,所以咱们只要构造出 A3 就可以得到手机对应的存货编码了。这个时候,把这些字符往 INDIRECT 函数里面丢进去就行啦,最后类似于 INDERECT("A"&2+1) 这样的存在。回车之后是不是返回正确的值了呢?大家可以验证一下。


上面这 6 种方法童鞋们是不是的掌握了呢。如果有不理解的地方可以在留言里咨询哦,也可以前往各大搜索引擎搜索哈。以后我也会开篇讲解各个函数,大家继续关注哦。

还有示例文件这里下载哦,大家练练手吧~

https://pan.baidu.com/s/10Vda3ZCpLpy5bF4lybnZxw

— THE END —

关注微信公众号Excel全攻略(微信号:ExcelSkills),发现更多精彩内容……

WECHAT_QR

你可能感兴趣的:(Excel 逆向查询的 6 种方法)