一文搞懂VLOOKUP、INDEX、MATCH函数

最近,在学习数据分析方向的东西,众所周知,Excel是数据分析所不可或缺的工具,由于过往并没有对Excel进行过深入研究,因此当首次接触到Excel中的函数时,不可避免地被其中一些函数的逻辑绕得有些晕,故在经过自己练习理清后,考虑到自己看不进生硬教程的尿性,决定将自己的理解用更加生动风趣的方式记录下来。

 

(本文中所用到的资料均来自b站UP主戴戴戴师兄

函数说明

以下语法均来自Microsoft Excel 2022。

VLOOKUP

应用场景

当要通过某一内容去查找与之匹配的另一内容时,会使用到VLOOKUP函数,这么说可能有些难以理解,接下来,我们来举个例子。

当你手上有这样一张表时,你想要通过其门店ID去获取到相应的门店名称,此时就可以用上VLOOKUP函数了。

那么,究竟要怎样才能实现想要的结果呢?下面,我们先来掰扯掰扯VLOOKUP的语法结构。

语法结构

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

参数说明

  • lookup_value:要查找的内容。
  • table_array:要查找的位置。
  • col_index_num:包含要返回的值的范围内的列号。
  • [range_lookup]:返回近似或精确匹配,可选择的两个值为:1/TRUE(近似匹配),0/FALSE(精确匹配)。

当然,这些东西在Excel的帮助中就能找到了,要是就这么列在这里,或许要不了两天,就连我自己都会忘记到底应该填些什么东西吧?所以,为了帮助理解,我将结合上面的例子来对各参数进行解释。

函数使用

首先,我们的目的是根据已有数据将下面这张表格填满。

当然,你也可以不动脑子地逐条到原数据表里去查找,然后复制粘贴,那么此教程或许对你就派不上用场了,点击网页右上角的小×可以助力你快速离开此页面(bushi)。

但是,当所要查找的项越来越多时,这个笨法子显然就不够用了。

那么,问题来了,要怎样才能快速精确地获取到我们想要的信息呢?

相信用过Excel的人都知道,Excel有个相当方便的拖动功能,只需要将鼠标挪到表格右下角,待鼠标变为黑色十字时,即可将此表格的样式复刻到后续列表中。

此处之所以说是复刻,是因为Excel的拖动不但可以完成复杂的迭代功能,也可以去选择简单的复制功能,拖动功能的具体细节在此就不过多赘述,下面,我们回到问题本身上来。

可以看到,在原表中,门店ID和门店名称是一一对应的关系,如果可以到原表的门店ID中去找到我们所要查找的门店ID,然后再自动返回其相应的门店名称,不就能实现我们所要的效果了吗?

VLOOKUP函数,所做的就是这么一回事儿,由此也不难理解各个参数的具体指向了。

  • lookup_value:在这里我们要找的是含空白单元格的表格中的门店ID,即空白单元格左边的那个单元格里的内容。
  • table_array:这个参数则要填写你查找的范围,比如这个案例中,就是原表数据,你可以只框选我标红的这两列,当然也可以直接将整个原表框起来,但需要注意的是,你选择的查找范围必须包含门店ID和门店名称这两列,即,如果这两列中间还有其他列,那么你需要将他们全部包含在内,且table_array的选择将影响到第三个参数的填写。
  • col_index_num:根据你上一个参数所选择的范围,去数门店名称所处的列数,即,如果你选择了标红的这两列,那么门店名称是第二列,填2就可以了,如果你选择的是整个列表,那么门店名称是第五列(图上并没有截全,门店名称的的列号是E,在原表中并非第三列),这里就要填5了。
  • [range_lookup]:关于这个地方,无脑填0即可,因为Excel的近似匹配,它或许跟你所想象的近似匹配不太一样(如实在好奇,可以自行举例实验或者到文末连接中观看戴师兄的举例)。

那么,到此,我们就已经完成了四个参数的选取了,综合以上信息,第一个空白处要填写的内容就已经可以明确了:

=VLOOKUP(B96,'拌客源数据1-8月'!D:E,2,0)

INDEX 与 MATCH

应用场景

经过对VLOOKUP函数的讲解,相信看到这样一张表格后,大家已经知道该如何去填写门店ID列的空白了吧?

那么恭喜你,已经成功闯过了VLOOKUP这道关卡,但是,在真正的实际应用场景中,我们所需要的表格显然并不可能这么简单,当上述表格变成了下面这样,又该如何去填写呢?

或许有人会说,可以对每一列去做VLOOKUP(因为原表中的内容并没有规矩到可以让我们任意摆布,因此通过一列的填写去拖动实现整个表格并不现实,所以这里说是对每一列做VLOOKUP),你当然可以这么做,但是,有没有更加简单的方式,可以像我们之前所做的那样,只填写一格内容,然后通过拖动就填充满整个列表呢?

既然这一板块是在讲INDEX函数与MATCH函数,那么显而易见的,这两位正是应对这个场合的Mr.Right了!

至于为什么是两个函数结合起来,我打个比方,你应该就能明白了。

当你在寻找某样东西的时候,总共有几个步骤?

答:两步。

1、知道东西的位置在哪。

2、到那个位置上去取。

而INDEX函数与MATCH函数则在这个过程中分别扮演者取物与定位的作用。

但是,即便知道了他们各自的作用,要如何使用他们去达到我们的目的呢?那就要劳烦诸位继续听我絮絮叨叨了。

语法结构

-- INDEX 
=INDEX(array, row_num, [column_num]) 

-- MATCH 
= MATCH(lookup_value, lookup_array, [match_type])

参数说明

INDEX函数

  • array:单元格区域或数组常量。
  • row_num:选择数组中的某行,函数从该行返回数值。
  • [column_num]:选择数组中的某列,函数从该列返回数值。

MATCH函数

  • lookup_value:要在lookup_array中匹配的值。
  • lookup_array:要搜索的单元格区域(某一列或某一行)。
  • [match_lookup]:返回近似或精确匹配,可选择的两个值为:1/TRUE(近似匹配),0/FALSE(精确匹配)。

同样,这些东西也几乎是从Excel的帮助中扒拉过来的,只能说,解释了,但没完全解释,所以,接下来,我将同样使用一个案列来解释这两个函数的使用方法。

函数使用

到这里,相信你已经知道了INDEX函数与MATCH函数分别担任着取物和定位的作用了(如果不知道,请拉回到应用场景的部分再次阅读),那么对于已经掌握了这两个函数本质的你来说,接下来的说明,就不过是水到渠成,信手拈来了。

定位(MATCH)

首先,在Excel中单元格是通过行号和列号来定位的,这一点想必大家都知道。

那么恭喜你,你已经成功掌握MATCH函数了!

为什么这么说?

答案很简单,MATCH函数中我们所陌生的参数只有两个,一个是lookup_value,另一个是lookup_array,而lookup_value就是你正在寻找的那个东西,至于lookup_array,是你所记得的上次见过它的地方,第三个参数与VLOOKUP函数中的[range_lookup]类似,想必此刻已经是你的老朋友了吧,在此就不再过多论述了。

既然已经明确了要找什么,也知道了它的所处范围,那么只需要将这些都填入到MATCH函数中,它就会自动去为你定位了,因此,MATCH函数最终会给出一个具体的数值,而这个数值则是你所寻找的东西在那一行或那一列中顺位数下来的位置。

取物(INDEX)

当你掌握了东西的具体位置后,接下来要做的,就是到它所在的位置去取到它了,而这个过程,即便我不说,诸位都应该无比地清晰了吧。

因此,对于INDEX函数,你只需要告诉他要到哪个范围(array)里的哪个坐标(row_num, [column_num])下去找,它就能很快找到你所需要的东西了!是不是很简单?

案例说明

自此,我们已经可以确定两个函数中的参数具体要填些什么了,下面将以门店ID为例,对每个参数进行说明:

MATCH:

  • lookup_value:对于门店ID下的某一空白单元格,它所要寻找的是它左边单元格中的内容,因此,这里选择它左边那格即可。
  • lookup_array:由于MATCH返回的值是相对于你所设定的范围而定的,为了方便后续INDEX函数的取物,这里推荐直接选取整个原表即可,当然,你也可以相应地去尝试设置不同的范围,不过要记得,一定要包含你所寻找的东西在内呀,毕竟,你也不想提前遇到“我记得上次明明放在客厅了啊,怎么会在餐厅里呢”这样的年纪大了才会出现的记忆混乱吧?
  • [match_lookup]:这里的填写同[range_lookup],就不在赘述了。

INDEX:

  • array:为了方便以后及拖动功能的使用,这里推荐直接选取整个原表,当然,你也可以在包含你所需要的信息和你已有的物件范围内去进行查找,不过相应的,需要更改后面两个参数的值。
  • row_num:我们实际上想要取得的物件其实是门店ID,但我们现在手上只有平台门店名称的位置,那么要如何去定位到门店ID的行和列呢?聪明如你想必已经猜到了,由于MATCH一次只会返回一个值,而平台门店名称所在行,正对应着其相应的门店ID所在行,因此,这个参数需要通过MATCH函数去定位平台门店名称去获取。
  • [column_num]:至于门店ID所在列,不正好就是门店ID这个字段在整个表头中所在的列吗?同样,通过MATCH函数,我们可以精确地获取到这个参数所需要填写的值

到此,我们就已经完成了两个函数各自参数的选取了,综合以上信息,第一个空白处要填写的内容也就可以明确了:

=INDEX('拌客源数据1-8月'!$A:$X,MATCH($B112,'拌客源数据1-8月'!$I:$I,0),MATCH(D$111,'拌客源数据1-8月'!$1:$1,0))

补充

  • 由于MATCH函数一次只能寻找一个物体,因此,在选择第一个参数时,只能选中某一个单元格,即便是合并单元格的内容,它也是无法识别的,这一点需要特别注意。
  • 关于最终填写内容中的'$'符号说明:

考虑到后续将对单元格进行拖动,为了某些固定的范围不在拖动中被改变,可以用F4对其需要保持不变的行列进行锁定,这里就不具体阐述锁定的用法了,感兴趣的可以到参考教程中观看戴师兄的说明。

参考教程

【全网最良心的【数据分析自学课程】它来了!必备的Excel/SQL/Tableau/Python/数据黑话/产品|竞品|市场分析报告制作、数据分析启蒙免费课程教程】

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值