一段时间以来,我一直在使用 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 作为数组公式输入

Excel - 在两列中列出每个来自 excel 中两个源列的唯一对-LMLPHP

请注意,如果包含空白单元格,公式将给出一个虚假的额外行 - 这可以修复:
=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/

10-11 09:09