一段时间以来,我一直在使用 index、match 和 countif 来愉快地列出唯一值,但现在我想从基于两列值的 Excel 工作表中列出唯一对。例如,如果数据是这样的:
输入
> Col. 1 Col. 2
A x
A x
B x
B y
B x
C x
C y
C x
对的唯一列表应该是:
> Col. 1 Col. 2
A x
B x
B y
C x
C y
这似乎是一个普遍的建议:
=INDEX(!D$4:D$5, MATCH(0, COUNTIF($A$57:$A59,!$C$4:$C$5) * COUNTIF($B$57:$B59, !$D$4:$D$5 ), 0)),"")
但不会返回像 C 和 y 对这样的值,在示例中,因为 C 和 y 已经出现 - 在不同的对中。
我试过 concat(在 countif 中不起作用),sumproduct(似乎不喜欢 sumproduct(--($A$57:$A59=!$C$4:$C$5),--($B$57) :$B59 = !$D$4:$D$5)); 和 countifs($A$57:$A59,!$C$4:$C$5),$B$57:$B59,!$D$4:$D$5 )(返回错误)。
PS - 我对 VB 一无所知,出于各种原因需要一种公式方法。
最佳答案
您可以使用 COUNTIFS:
=IFERROR(INDEX($A$2:$B$9,MATCH(0,COUNTIFS($D$1:$D1,$A$2:$A$9,$E$1:$E1,$B$2:$B$9),0),1),"")
对于第一列和
=IFERROR(INDEX($A$2:$B$9,MATCH(0,COUNTIFS($D$1:$D1,$A$2:$A$9,$E$1:$E1,$B$2:$B$9),0),2),"")
对于第二列
使用 CtrlShiftEnter 作为数组公式输入
请注意,如果包含空白单元格,公式将给出一个虚假的额外行 - 这可以修复:
=IFERROR(INDEX($A$2:$B$9,MATCH(1,(COUNTIFS($G$1:$G1,$A$2:$A$9,$H$1:$H1,$B$2:$B$9)=0)*($A$2:$A$9<>"")*($B$2:$B$9<>""),0),1),"")
=IFERROR(INDEX($A$2:$B$9,MATCH(1,(COUNTIFS($G$1:$G1,$A$2:$A$9,$H$1:$H1,$B$2:$B$9)=0)*($A$2:$A$9<>"")*($B$2:$B$9<>""),0),2),"")
关于Excel - 在两列中列出每个来自 excel 中两个源列的唯一对,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53176706/