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 两列进行对换,即存货名称这一列必须在存货编码这一列的前面!那么,图中的情况下,该怎么查询呢?每次都要将两列数据进行互换吗?
当然不是!我们有 6 种解决方法!
1. VLOOKUP + IF
=VLOOKUP(E3,IF({1,0},B2:B10,A2:A10),2,0)
另外 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)
这里就是将 IF 函数替换为 CHOOSE 函数,效果是一样的,也就不再特别说明了。注意哦,这里不是 {1,0}
而是 {1,2}
。
3. LOOKUP
=LOOKUP(1,0/(E3=B2:B10),A2:A10)
这里就先不作解释了,不然篇幅太长,以后开篇单独介绍 LOOKUP 函数的用法。这里童鞋们只要将里面的单元格替换,就能变成自己的公式啦。
4. INDEX + MATCH
=INDEX(A2:A10,MATCH(E3,B2:B10,0))
简单说明一下,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),)
OFFSET
函数是将基点单元格进行移动的函数,可以返回移动后单元格的值。它有 3 个必填参数:
- 基点单元格
- 移动的行数:向下移动为正数,向上移动为负数
- 移动的列数:向右移动为正数,向左移动为负数
注意到上面公式里最后一个,
吗,因为这里用不到第 3 参数,但是它又是必填的,所以这里只能填写一个逗号作为代替。
拿查找 鼠标
为例,它在 B2:B10
的第 4
个位置,利用 MATCH
函数即可返回这个值。然后利用 OFFSET 的位移功能,将 A1
向下移动 4 个单元格即 A5
,是不是返回鼠标对应的存货编码了呢。
6. INDIRECT + MATCH
=INDIRECT("A"&MATCH(E3,B2:B10,0)+1)
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),发现更多精彩内容……