一段时间以来,我一直在使用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一无所知,出于各种原因,需要采用公式方法。
答案 0 :(得分:2)
将两列连接起来(在prepend
或append
或 $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
输入为数组公式请注意,如果包含空白单元格,则公式将显示乱码,这是可以解决的:
=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),"")