确定范围内的唯一/不同值

时间:2018-06-19 12:30:07

标签: excel vba excel-vba excel-formula excel-2010

我可以在countif的范围内找到特定值的频率,但是我有一个不同的问题。我需要从多个范围中找到唯一/不同的列表,并试图找出哪种工作表功能适合Excel。

例如,我有8个系列的数字(多个范围),并且需要找到唯一的系列,在这些系列中数字不会在其内部重复。

1   5   9
1   2   3
4   5   7
2   5   9
2   3   4
6   8   9
1   8   9
3   4   5

此问题的预期解决方案1是

1   2   3
4   5   7
6   8   9

因为在其他两个系列的预期解决方案1中1,2,34,5,76,8,9在自己内部的任何地方都没有重复,所以我想知道是否可以使用工作表公式来实现我可以开始或者是否需要vba宏。

1,2,3在预期解决方案的以下两个系列中的任何地方都不会重复1 4,5,7在预期解决方案1的系列1和系列3中未重复 6,8,9在预期解决方案1的系列1和2中没有重复

如果您看到以下系列(解决方案2 3和4),它们也是唯一的,但它们仅仅是两个,而我发布的示例预期解决方案1却得到了三个。同样,我需要找到最大值

1,5,9和2,3,4(解决方案2)

4,5,7和6,8,9(解决方案3)

2,3,4和6,8,9(解决方案4)

简而言之,确定不重复序列号的最大序列号。在此示例中,最多有3个此类序列,其余两个序列中不重复编号(解决方案1)。

如何通过公式或宏来识别此信息?

2 个答案:

答案 0 :(得分:1)

这是一种尝试,可能看起来像什么。我认为一些下游代码来处理字典,也许找到具有最大sys.path的字典值将是理想的。假设您在len()列中有逗号分隔的值1,2,3,并且示例数据为A

A1:A8

同样,随着数据的增长,这将是熊。

答案 1 :(得分:1)

好吧,我已经困惑了一段时间,仅凭公式如何做到这一点。只是为了证明OP所讨论的那种规模是可行的,这是一种可能的方法:

=IFERROR(INDEX(INDEX($A$1:$C$8,0,MOD(COLUMN()+2,3)+1),MATCH(0,MMULT(N(ISNUMBER(FIND($A1:INDEX(1:1,INT((COLUMN()-1)/3)*3),$A$1:$A$8&"|"&$B$1:$B$8&"|"&$C$1:$C$8))),TRANSPOSE(COLUMN($A1:INDEX(1:1,INT((COLUMN()-1)/3)*3)))),0)),"")

这个想法是您检查所有行中当前行中的三个数字,然后拉出不包含任何匹配项的第一行。然后,您将公式推过并检查您现在拥有的六个数字,依此类推。最终,公式出现错误。

enter image description here

必须使用 Ctrl Shift Enter

将公式作为数组公式输入