我问答网
有问必答

Excel技巧:为什么我果断弃坑VLOOKUP,狂推INDEX-MATCH?

VLOOKUP的三大死穴,你肯定遇到过

VLOOKUP的三大死穴,你肯定遇到过
VLOOKUP的三大死穴,你肯定遇到过

说实话,我第一次用VLOOKUP的时候,简直惊为天人——一个公式就能把两张表的数据匹配起来,还能自动查找,太好用了!但没过多久,我就开始骂人了。真的。

因为VLOOKUP这个函数,脾气太大了。它只能向右看。对,你没听错——它是个“右撇子”。你要查找的返回值,必须在你查找列的右边。一旦数据源列在左边?完蛋。直接甩脸子给你看#N/A。我第一次遇到这个情况的时候,对着屏幕愣了半天,以为自己公式写错了。结果不是公式错,是这函数天生设计有缺陷。😤

还有,如果你的数据表插入了新列,VLOOKUP就彻底懵了。因为它的第三个参数col_index_num是个硬编码的数字。比如你写=VLOOKUP(A2,$D$2:$F$100,3,0),那个“3”就死死地指向第三列。一旦有人在D和F之间插了一列,原来的第三列变成了第四列?对不起,你的公式集体阵亡。你又要一个个手动改回来。我有一次处理月度报表,表格格式变了一点点,几十个VLOOKUP全趴窝。我那个火大啊——直接对着电脑骂了句脏话。然后就开始研究替代方案。💢

第三,VLOOKUP的近似匹配陷阱。很多人以为最后一个参数填1或者忽略就是模糊查找,其实那个默认是近似匹配,要求数据源按升序排列。一旦没排序,它可能返回一个完全错误的值而不报错!这种悄无声息的错误最可怕。我就吃过亏,给老板的报表里有个数字莫名其妙,后来才发现是VLOOKUP排序没弄好。

INDEX-MATCH:弹性组合拳,治好了我的数据焦虑

这时候,INDEX-MATCH进入了我的视线。第一次看那个写法:=INDEX(return_range, MATCH(lookup_value, lookup_range, 0)),觉得这什么鬼,绕来绕去的。但是用了一次之后——哎哟,真香!😋 它没有VLOOKUP那些臭毛病。

INDEX-MATCH最大的优点:它不关心左边右边。你可以从最左边查到最右边,也可以从右边查到左边,甚至是上下倒腾都行。这就是自由啊!而且它不怕插入列。因为MATCH是直接定位列的相对位置,不是靠数字序号。你表结构怎么变,只要字段名在那里,它都能匹配到。这一点,救了我无数次的命。

还有一个隐藏的杀手锏:处理大数据的时候,INDEX-MATCH的速度比VLOOKUP快。特别是你用了整列引用的时候。VLOOKUP会扫描你引用范围内所有行,而MATCH配合INDEX只会精准扫描查找列和返回列。如果你有上万行数据,这个速度差异,肉眼可见。我实测过一个几万多行的表,VLOOKUP卡到我想砸电脑,换成INDEX-MATCH,秒出结果。那种爽感,就像从绿皮火车换到高铁。🚄

VLOOKUP与INDEX-MATCH计算速度对比测试截图
VLOOKUP与INDEX-MATCH计算速度对比测试截图

当然,有人会说,现在有XLOOKUP了啊。是,XLOOKUP更高级,但是不是所有公司都升级了Office 365。我至今还在用Excel 2019,好多同事还是2016版。所以INDEX-MATCH依然是通用性最强的方案。💡

别怕!5分钟上手INDEX-MATCH,附带实战演示

好了,光说优点不教方法就是耍流氓。下面,我手把手带你写一遍INDEX-MATCH。真的,没那么复杂。

假设你有两个表:表一是员工信息,有“员工ID”(A列)和“姓名”(B列)。表二是销售记录,有“员工ID”(D列)和“销售金额”(E列)。你要在表二里匹配出员工的姓名。

传统的VLOOKUP写法(假设员工ID在D2):=VLOOKUP(D2,$A$2:$B$100,2,0)。这个没问题。但如果你改成INDEX-MATCH:=INDEX($B$2:$B$100, MATCH(D2, $A$2:$A$100, 0))

解释一下:MATCH(D2, $A$2:$A$100, 0) —— 这个会返回D2在A列的第几个位置。比如D2的ID在A列的第五行,那MATCH就返回5。然后INDEX($B$2:$B$100, 5) —— 就是从B列里面取第5行的数据。就这么简单。像个组合积木。🧩

Excel中INDEX-MATCH函数嵌套参数拆解图示
Excel中INDEX-MATCH函数嵌套参数拆解图示

你可以把它想象成点餐。INDEX是菜单,告诉你整个返回区域;MATCH是服务员,帮你找到你要的菜在第几页。你告诉服务员你要什么(查找值),他告诉你号数,然后INDEX给你上菜。这个比喻有点逗,但很形象对吧。😄

有个小技巧:MATCH的最后一个参数0代表精确匹配,千万别忘了。忘了就变成近似匹配,数据会错得离谱。我刚开始就老忘,结果一堆错误,还以为是函数不好用。

再给个高级用法:多条件匹配。比如你要同时匹配“员工ID”和“月份”来找出销售额。用VLOOKUP你可能会用辅助列,但用INDEX-MATCH可以直接套数组公式(Ctrl+Shift+Enter):{=INDEX(销售额区域, MATCH(1, (区域1=条件1)*(区域2=条件2), 0))}。这个太强了,我第一次成功的时候,激动得差点拍桌子。👏

好了,不说了。我只是一想到以前被VLOOKUP虐的日子,就觉得应该把INDEX-MATCH这个宝贝分享给更多人。如果你还在忍受VLOOKUP的暴政,赶紧试试吧。真的,你会回来感谢我的。✅

去打开你的Excel,操练起来。扔掉那个向右看的VLOOKUP,拥抱自由吧!

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:Excel技巧:为什么我果断弃坑VLOOKUP,狂推INDEX-MATCH?
文章链接:https://www.wowenda.cn/a/52425.html