大家好!今天我们来介绍一下EXCEL中查询函数的一哥,VLOOKUP,帮助大家从此摆脱查询之苦!
VLOOKUP相信大家都认识,当之无愧的Excel流量明星,可是人怕出名猪怕壮,哪个明星不招黑?Excel函数圈的V哥也不例外。
V哥因为所查找的值必须在查找范围的第一列,总是被黑粉指责设计奇葩,难用。
今天,我们就来聊聊到底怎么回事?
前情提要
我们先来看看,网友们吐槽的这个 奇葩设计 到底是什么
作为EXCEL中查询函数的一哥,VLOOKUP可以根据你给的值,查询某一条记录别的列的值,比如我有两张表:
-
一张是考试涂卡机器自动导出的学生考试成绩单
-
一张是学生的姓名、学号等信息
我们现在要做的就是通过学号来查询蓝色成绩单中每一条记录到底是谁的,找出学生的姓名和性别
毫无疑问,我们请出VLOOKUP,让我们来看一下V哥是怎么做的?
V哥可以帮你,在给定范围的的第一列搜索你要寻找的某个值,找到后返回该行的指定列的内容:
参数 | 含义 |
---|---|
lookup_value | 你要查的值,比如你想通过学号查询,就写该学号,如 “0001” |
table_array | 被查询的表格,且你要查询的值必须在表格的第一列,这里我们的表格是B2:C9 |
col_index_num | 待提取值在被查询表格的列数,比如你要获得性别,那就是B2:C9的第2列 |
range_lookup | True or False, 是否使用模糊匹配功能,一般为False |
所以,查找学号为0001的学生性别公式为
=VLOOKUP(E1,B$2:C$9,2,FALSE)
# 注意:搜索范围不能是A2:C9,V哥只会从给定范围的第一列寻找lookup_value
V哥的槽点
V哥只会从给定范围的第一列寻找值,那么被查询的那列就一定要在整个表的最左列,你需要提取的信息就必须出现在这一列的右边,即只能往右边查询。我们例子中的姓名,用上面的方法就匹配不到了
这就引起了很多网友的吐槽了:有毒的设计,确实给日常使用带来诸多不便(可以通过移动表的列排布解决,但有时你的表不适合随意移动,或者,你有很多键要查询,总不能查一次就移动一下表吧)
V哥的这项限制,就像蔡徐坤的球技一样,成为了他唯一的美中不足!
不过,虽然孤立无援的V哥确实没办法往左边提取信息,但今天我们请来了两位魔术师配合V哥,施展乾坤大挪移,想怎么V就怎么V。
乾坤大挪移
乾坤大挪移作为明教的镇教之宝,其核心是利用Excel函数构造出一个新的表格,以供查找。
如果我们可以在不更改原始数据的情况下,构建一个表,第一列放我们的搜索列,第二列放我们的目标列,岂不美哉?像这样:
the_table我们只需要 VLOOKUP("0001", the_table, 2, False)
就可以完成
所以,关键就是怎么构建这个table
这里就隆重介绍,EXCEL函数届的扫地神僧 IF
函数和choose
函数 。
IF
IF函数一般被用来处理单个判断过程,IF(A1 > 0, "+", "-" )
就可以对A1的值做正负的判断。如果符合条件,即A1>0
, 就返回第二个参数"+"
,反之就返回第三个参数"-"
。
这里值得注意的是,A1 > 0
是一个式子,他的值其实运算结果,是True / False
, 或者 1 / 0
, 也就是说:
-
IF(1, "+", "-" )
返回+
-
IF(0, "+", "-" )
返回-
OK,魔术即将开始
IF不仅可以处理一个值的比较,当你传入多个值时,他会返回多个值(有兴趣的同学请搜索数组函数),如:
利用这个功能,聪明的小伙伴是不是有灵感啦。
我们可以使用 IF({0,1},M:M,N:N)
将M和N列反转过来
IF函数先判断第一个值,是0,所以取N,
第二个值是1,所以去M,所以整体返回的就是N:M的内容。
有个这个表,我们就可以很方便的使用V哥来查找啦,而且,我们其实不需要真正在单元格中生成这个表,只要嵌入VLOOKUP函数内就可以啦
=VLOOKUP(E2,IF({0,1},A:A,B:B),2,FALSE)
image.png
CHOOSE
CHOOSE其实和IF的作用是一样的,也是创建这么一个表,只是逻辑不同
顾名思义,CHOOSE就是选择:
choose({2,1,3},"A","B","C") # B,A,C
# 依次选择第2,1, 3个值,也就是B,A,C
choose({2,3},"A","B","C") # B,C
# 依次选择第2, 3个值,也就是B,C
所以,我们也可以使用 CHOOSE({2,1}, A:A, B:B)
来使得B列出现在A列左边。
结语
编的数据也可以用pivot table假装分析一下。
肖恩
20200914
网友评论