【问题标题】:Excel - list in two columns each unique-pair from two source columns in excelExcel - 在两列中列出每个唯一对来自 excel 中的两个源列
【发布时间】:2018-11-06 17:08:26
【问题描述】:

一段时间以来,我一直在使用 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)); 和计数($A$57:$A59,!$C$4:$C$5),$B$57:$B59,!$D$4: $D$5)(返回错误)。

PS - 我对VB一无所知,由于各种原因需要公式方法。

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    你可以使用 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),"")
    

    【讨论】:

    • 谢谢,不胜感激。而且,同样。
    • 非常感谢。多年来,虚假的额外行一直是我的问题!为了理解这个额外的逻辑,您能否澄清一下 - 您已将匹配值切换为 1,以便为数组中不计算预先存在的对的第一行以及何时返回索引行 #位于两个源列中。如果什么也没找到,countifs(...)=0 是否返回 1?
    • 是的,正是如此。
    【解决方案2】:

    连接两列(在#|£¬ 之间使用不同的分隔符,以便稍后拆分),处理(对于单个列),然后文本到要拆分成两列的列。

    【讨论】:

    • 谢谢,至少在这种情况下,我不能这样做,因为实际的文本值非常复杂,不适合被拆分。也许通过按照您对countifs的建议进行连接,然后对原始内容进行索引可能会起作用,但我发现这种方法的复杂性飙升 - 至少在我的情况下。
    猜你喜欢
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    相关资源
    最近更新 更多