Excel-在两列中列出Excel中两个源列中的每个唯一对

时间:2018-11-06 17:08:27

标签: excel excel-formula

一段时间以来,我一直在使用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一无所知,出于各种原因,需要采用公式方法。

2 个答案:

答案 0 :(得分:2)

将两列连接起来(在prependappend $data = 13; $age = 11; $cod = 45; $text = "My data is %s, My age is %s, My cod is %s"; $new_message = sprintf($text, $data, $age, $cod); #之间有一个明显的分隔符,以帮助以后拆分),进行处理(如单列),然后将“文本转换为列”分成两部分。

答案 1 :(得分:2)

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

第二列

使用 Ctrl Shift Enter

输入为数组公式

enter image description here

请注意,如果包含空白单元格,则公式将显示乱码,这是可以解决的:

=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),"")