Vlookup函数只能查出第一个匹配的单元格,下方有多个符合值查不到怎么办,求大佬帮忙解决? 您所在的位置:网站首页 怎么用两列数据匹配值 Vlookup函数只能查出第一个匹配的单元格,下方有多个符合值查不到怎么办,求大佬帮忙解决?

Vlookup函数只能查出第一个匹配的单元格,下方有多个符合值查不到怎么办,求大佬帮忙解决?

2023-04-18 04:35| 来源: 网络整理| 查看: 265

谢邀,辅助列+IF{1,0}数组公式可以解决,有多个符合值就代表着有“一对多”的关系,最终的展现要不然就是一个对象的多个符合值横着排,要不就是纵向排,而纵向排筛选或者排序就可以了,所以这里只说横向一一排开。

匹配出“一对多”的数据对应值,横向一一排开

例如原始数据左侧的两列,每个歌手分别对应着多首歌曲,只用最基础的VLOOKUP只能匹配第一个,现在需要以歌手为匹配对象,一次性匹配每个歌手所对应的每首歌曲。

思路为:一个歌手分别对应了多首歌曲,意味着“这个歌手在该列出现了多少次就等于他有多少首歌,也代表需要匹配的次数”,所以我们先统计出每个歌手的名字分别出现了多少次并记录下来。再使用VLOOKUP多条件查找,利用“歌手”列和“重复次数”列,两个条件去查找对应的歌曲名称。

第1步:

输入=COUNTIF(A$2:A2,A2),并向下自动填充,输入右引用符号“$”符号的目的是,让下拉自动填充的时候,统计重复次数的范围,自动选择第一行到当前行,这样统计出来的重复次数就是“当前该歌手名字的重复次数”,也就是当前该歌手的名字出现了第几次了。

(王菲-传奇的对应行,王菲出现了第4次)

第2步:

在如图的I2单元格输入=IFERROR(VLOOKUP($H2&COLUMN(A$1),IF({1,0},$A$2:$A$20&$C$2:$C$20,$B$2:$B$20),2,0),"")

按Ctrl+Shift+Enter键转换为数组公式计算结果,并向右向下填充,即可完成。

原理如下:

公式的主要部分为=VLOOKUP($H2&COLUMN(A$1),IF({1,0},$A$2:$A$20&$C$2:$C$20,$B$2:$B$20),2,0)

VLOOKUP的查找对象是两个条件:第一个条件是歌手名称,即是单元格H2,按下两次F4向右不改变引用关系;第二个条件是重复次数,公式为COULUMN(A$1)——统计单元格对应的列数,这个是什么意思呢:周杰伦重复的第几次就代表了第几首歌,也就代表着“向右拉到第几列”,所以索性使用COULUMN(A$1),按一下F4向右改变引用关系,取A1单元格的列数为1,向右拉就代表了“周杰伦重复第二次”、“周杰伦重复第三次”的查找条件。

看,查找对象其实是“周杰伦1”也就意思周杰伦的第一首歌。

好了,VLOOKUP的第二组成部分是查找范围,这里的公式是IF({1,0},$A$2:$A$20&$C$2:$C$20,$B$2:$B$20),这下看着复杂了,其实这是EXCEL里经典的IF{1,0}数组公式,意思是,把A列歌手和C列重复次数列连接起来,当成一列,与歌曲名称B列是对应关系列。

这里有必要插入一下IF{1,0}的意思

前面的{1,0}是IF公式利用水平数组分别做逻辑判断,1代表TURE,0代表FALSE,具几个例子:

=IF(1,哈哈,呵呵),返回为“哈哈”

=IF(0,哈哈,呵呵),返回为“呵呵”

=IF({1,0},哈哈,呵呵),返回为水平数组“{哈哈,呵呵}”

就是先判断数组里的第一个数字1结果为哈哈,第二个数字0结果为呵呵,输出的结果仍为数组{哈哈,呵呵}。

=IF({1,0},A2:A20,B2:B20),结果就是返回A列和B列两列数组,具体值为

{A2,B2;

A3,B3;

A4,B4;

A5,B5;

……}

那么这里

IF({1,0},$A$2:$A$20&$C$2:$C$20,$B$2:$B$20),结果还是返回两列数组:

{A2&C2,B2;

A3&C3,B3;

A4&C4,B4;

A5&C5,B5;

……}

那对应查找对象A2&C2是不是就像常规的VLOOKUP一样了?只不过把两列数据当成一列了。

最后一个IFERROR只是美化公式,当单元格向右拉拉到错了就显示为空。

=IFERROR(VLOOKUP($H2&COLUMN(A$1),IF({1,0},$A$2:$A$20&$C$2:$C$20,$B$2:$B$20),2,0),"")

记得按下Ctrl+Shift+Enter键。

嗯,结束了。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有