excel学习库

excel表格_excel函数公式大全_execl从入门到精通

EXCEL一对多匹配问题「透彻理解」

一对多的匹配excel题

图一源数据列表图二题目要求

拿到满足两个条件的所有匹配值

这里看到有两个问题是需要我们解决的:

1.需要拿到B列第二个“-”后面的内容。

2.需要拿到满足两个条件的所有匹配值。

解决问题1

由2个“-”分开成3个数直接采用分列

利用wps里面的数据栏-分列/智能分列功能,拿到3列数据,解决问题1。

图三(Sheet1 (2))

解决问题2

这里一般来说解决一对多匹配有两种思路:

1.利用两个条件合并成为一个唯一的索引值,然后采用vlookup进行匹配。

2.利用数组形式进行解决。

一般能够采用第1种方式那么优先采用,但是这里发现此时并不唯一例如满足LR以及CCC两个条件的就已经有了3组值,那么这里考虑数组的方法来解决。

源数据里面取出与结果所在的整列数据,然后在从里面进行筛选,满足条件的就取出来。

需要取出结果所在的整列数据,我们想到index函数

可以这样理解这个函数,例如INDEX(B3:D6,4,3),意思就是在B3:D6这个区间内取出位于第4行第3列的那个值。

INDEX函数一般在一个数组里面取出一个值,当第一个区间只有1列时,可以省略掉第3个参数(列参数),直接用行参数就可以取到这个值。

最终如何将满足条件的值留下,不满足的值进行剔除掉呢?

这里要提到另一个函数SMALL函数,返回第k个最小的值。

可以这样理解这个函数,例如SMALL(A1:A4,3),这个就是在A1:A4区间内返回第3个最小的值,如果A1=1,A2=2,A3=3,A4=4,那么这个时候会返回3。

如果选中结果所在列后,满足两个条件对应的值的行数全部都很小,不满足条件的值行数都很大(大到不可能取到就OK)那么我们就可以解决这个问题。

解题思路已出来,接下来开始写函数

先看结果,再来一步步解释

1.首先

=INDEX('Sheet1 (2)'!$D:$D,待完善)

2.其次

SMALL的参数范围到时候有效值会特别小,无效值会特别大,那我们需要从第一个最小的值开始取

=INDEX(SMALL(待完善,ROW('Sheet1 (2)'!$A1)))

3.再者

IF('Sheet1(2)'!$B$2:$B$29=$A$8,IF('Sheet1(2)'!$I$2:$I$29=B$1,ROW($2:$29),2^100),2^100)

4.最后

函数就变为

=IFERROR(INDEX(SMALL(IF('Sheet1(2)'!$B$2:$B$29=$A$8,IF('Sheet1(2)'!$I$2:$I$29=B$1,ROW($2:$29),2^100),2^100),ROW('Sheet1 (2)'!$A1))),"")

注意数组函数使用Ctrl+Shift+Enter

有其他想法欢迎大家一起交流哦。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接