美烦资源网

专注技术文章分享,涵盖编程教程、IT 资源与前沿资讯

VLOOKUP遇到重复值最简单的处理方法!

VLOOKUP函数使用频率非常高,同时我被问的相关问题也多了不少,比如VLOOKUP遇到重复值只返回一个怎么办?类似的问题经常被问,今天我们就聊一聊!


▍需求说明

比如下面这个案例,查询一下吕布的几次测试成绩分别多少分!


▍VLOOKUP探路

你熟练地写下下面的公式,然后下拉,希望能查出全部成绩,但是很遗憾,结果全部是相同的,都是第一次的成绩!

=VLOOKUP(E$2,$B$2:$C$11,2,0)


为啥呢?因为VLOOKUP只能返回首次查询的结果!那要怎么办?

很简单,把他们变成唯一即可!


▍变通处理

添加一个辅助列,把查询内容从上往下编个号,方法非常简单 !

=(B2=$E$2)+A1

如果你看不懂上面辅助列逻辑,也可以使用下面的方式!这样复杂一丢丢,但是更加直观,从上往下统计出现的次数!现在查找就变成了查询1、2、3就行了!

=IF($E$2=B2,COUNTIF($B$2:B2,$E$2),"")


查询列是A列,也就是辅助列,结果列是C列,所以第三参数修改为3!

=VLOOKUP(ROW(A1),$A$2:$C$11,3,0)

就是这么简单,如果你非要使用VLOOKUP!


▍多点套路

其实处理1对多的方法特别多,没有必要非VLOOKUP不可,只是大家比较熟悉VLOOKUP而且,向前看!

你比如FILTER函数就挺香

=FILTER(C2:C11,B2:B11=E2)

什么?你版本低不支持?其实也可以自己用VBA写一个自定义函数

这是我一个我的超级自定义函数之一目前测试阶段!功能非常多!参数说明大概如下!设计元素太多~

,内部测试,有待发布!

当然你还可以使用高级筛选,简单操作一下即可,不过函数有优点就是动态更新,高级筛选每次都要操作!

如果你的表格辅助列不方便使用,版本又比较低,还不给使用VBA,那么,推荐使用远古时期的“万金油”处理了!

=INDEX(C:C,
   SMALL(
     IF($B$2:$B$11=$E$2,ROW($2:$11)),
     ROW(A1)
   )
)

看上去有点长,如果你对背后的原理感兴趣,可以看我之前的详解教程了! ----->点击直达<庖丁解牛-万金油公式>

好了,今天的教程就到这里,希望对VLOOKUP查找重复值有困惑的同学有所帮助吧!

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言