索引匹配具有多个条件的唯一值?

Posted

技术标签:

【中文标题】索引匹配具有多个条件的唯一值?【英文标题】:Index match unique values with multiple criteria? 【发布时间】:2016-07-19 19:49:06 【问题描述】:

我在一张纸上有以下用户列表,以及他们的年龄和运动兴趣:

A       18        Football
B       19        Rugby
C       18        Football
D       50        Dance
D       21        Rugby
A       25        Football

然后我在工作表 2 上有一个索引匹配数组公式,它正在查找我的用户列表并将它们输出到工作表 1。

公式:

 =IFERROR(INDEX('Activity Data'!$A$2:$A$5000, MATCH(0, COUNTIF($B$36:B36,'Activity Data'!$A$2:$A$5000), 0)),"")

这给了我一个独特的用户列表,如下所示:

A
B
C
D

但是,我只想查找那些年满 18 岁且对足球感兴趣的用户。

如何向该公式添加多个匹配条件以获得所需的结果?

提前致谢

【问题讨论】:

考虑一个过滤器? 【参考方案1】:

如果您确实想坚持使用公式,则可以在不满足条件时强制使用“1”,如下所示:-

=IFERROR(INDEX('Activity Data'!$A$2:$A$10, MATCH(0, SIGN(COUNTIF($C$36:C36,'Activity Data'!$A$2:$A$10)+('Activity Data'!$C$2:$C$10<>"Football")+('Activity Data'!$B$2:$B$10<>18)), 0)),"")

(我只在 10 行上测试它,但应该适用于任何范围)

实际上实现 SIGN 是不必要的,因为任何不等于 0 的东西都不会被匹配,所以:-

=IFERROR(INDEX('Activity Data'!$A$2:$A$10, MATCH(0, COUNTIF($C$36:C36,'Activity Data'!$A$2:$A$10)+('Activity Data'!$C$2:$C$10<>"Football")+('Activity Data'!$B$2:$B$10<>18), 0)),"")

但你可能更喜欢颠倒逻辑并以更正常的方式解决它:-

=IFERROR(INDEX('Activity Data'!$A$2:$A$10, MATCH(1, (COUNTIF($C$36:C36,'Activity Data'!$A$2:$A$10)=0)*('Activity Data'!$C$2:$C$10="Football")*('Activity Data'!$B$2:$B$10=18), 0)),"")

这些是数组公式,必须使用 CtrlShiftEnter

输入

【讨论】:

以上是关于索引匹配具有多个条件的唯一值?的主要内容,如果未能解决你的问题,请参考以下文章

具有匹配索引列的多个表的数据框连接值列

与通配符和多个条件的索引匹配

具有多个条件的布尔索引[重复]

索引常识

唯一索引小结

MySQL处理重复键错误插入具有多个唯一索引的表;不是多列唯一索引