分享

17一对多查询?VLOOKUP当然也可以!

 asaser 2022-05-13
上期给大家聊了如何使用VLOOKUP进行一对一数据查询与匹配,这期再聊一下一对多查询

所谓一对多查询,顾名思义,就是符合条件的查询结果有多个。

我举个例子。

如下图所示,A:B是数据源。需要在F列查询E列普查员负责的小区代码,如果是负责多个小区,则将不同小区代码按逗号为分隔符合并成一个字符串

图片

这种问题不同的Excel版本可以有不同的解法,但VLOOKUP函数的解法是通用的

步骤1:制作辅助列

C2单元格输入以下公式向下复制填充:

=B2&IFERROR(","& VLOOKUP(A2,A3:C20,3,0),"")

返回结果如下:

图片

解释一下公式的意思。

VLOOKUP(A2,A3:C20,3,0)

VLOOKUP函数采用精确匹配的方式,查找范围是公式所在行的下一行开始到最后一行结束:A3:C20,返回A列数据在C列的对应内容。如果A列数据是唯一值或最后一条记录,VLOOKUP函数将返回错误值。

IFERROR(","& VLOOKUP(A2,A3:C20,3,0),"")

如果返回错误值,则使用IFERROR函数屏蔽为假空,否则返回正常结果。

 =B2&IFERROR(","& VLOOKUP(A2,A3:C20,3,0),"")

最后将B2单元格的小区代码和IFERROR函数返回的结果相连。

由于VLOOKUP具有存在多个匹配结果时,只取首个数据的特点;当公式向下复制填充时,下一层所计算的结果会被上一层公式所获取,最后就达到A列数据第一次出现时,在C列获取多个结果并合并的效果。

这有点儿像多层套娃,底层人民的劳动成果总是被上层人民富豪所掠夺……

步骤2:获取结果

在F2单元格输入以下公式即可获取最终结果:

=VLOOKUP(E2,A:C,3,0)

图片

……

HI,朋友们,是不是对VLOOKUP函数又多了一层认识?

打个响指,如果你所使用的Excel版本是2019/2021或365,也可以不使用辅助列,在F2单元格输入以下公式即可:

=TEXTJOIN(",",1,IF($A$1:$A$20=E2,$B$1:$B$20,""))

……

再打个响指,如果查询的多个结果中包含重复值,需要取重获取唯一值,将辅助列的公式修改为如下即可:

保留唯一值 ▼
=IF(COUNTIFS(A$2:A2,A2,B$2:B2,B2)>1,"",B2)&IFERROR(","&VLOOKUP(A2,A3:C20,3,0),"")

如果不使用辅助列,365版本的Excel可以使用以下公式:

保留唯一值 ▼
=TEXTJOIN(",",1,UNIQUE(FILTER($B$2:$B$20,$A$2:$A$20=E2)))

……

没了,今天给大家分享的内容就这样,有啥问题可以在VIP会员群中提问交流,右下角点个赞,咱们下期再见。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多