Excel-基于另一个字段计算范围内的唯一值

Excel-基于另一个字段计算范围内的唯一值,excel,ms-office,Excel,Ms Office,我有一个类似的情况,但最后一个转折让我头痛 这就是我的数据的基本外观: A B C --- --- --- 1 5 2 1 6 2 1 5 2 2 7 1 2 7 1 2 7 1 3 8 1 3 8 1 我正在尝试生成C列中的值。我需要为A列中的每个不同值计算B列中唯一值的数量。A列被排序,以便所有值都在一起 我试过这个: =COUNTIFS($A$2:$A$8,$A2, $B$2:$B$

我有一个类似的情况,但最后一个转折让我头痛

这就是我的数据的基本外观:

A   B   C
--- --- ---
1   5   2   
1   6   2  
1   5   2  
2   7   1  
2   7   1  
2   7   1  
3   8   1  
3   8   1  
我正在尝试生成C列中的值。我需要为A列中的每个不同值计算B列中唯一值的数量。A列被排序,以便所有值都在一起

我试过这个:

=COUNTIFS($A$2:$A$8,$A2, $B$2:$B$1638,"<>"&"")
=COUNTIFS($A$2:$A$8,$A2,$B$2:$B$1638,“&”)
这给了我一个组中值的数量,但不是组中唯一值的数量(因此,在我的示例中,它将是3、3和2)。我还尝试了一个非常酷的技巧,我发现它可以计算整个列中的所有唯一值(因此在我的示例中,它将一直向下为4)。我想不出如何分摊差额


我还试图弄清楚是否可以使用if函数来完成,但我也不知道这一点。有什么帮助吗?

在单元格D2中使用此数组公式:

=SUM(--(FREQUENCY( IF( $A$2:$A$9=A2, MATCH($B$2:$B$9,$B$2:$B$9,0)), ROW( $B$2:$B$9)-ROW( $B$2)+1)>0))
将其放在公式栏中,然后按CTRL+SHIFT+ENTER(而不是仅按ENTER)将其保存为数组公式。Excel,并将这些括号{}放在公式周围

然后把它抄下来。它工作得很好,只是要知道,如果在工作簿中使用数千个数组公式,那么它们的速度可能会非常慢

我在你链接到的“酷把戏”的链接后发现了这个


如果有效,请让我知道,不要忘记将我的答案标记为已接受。祝你好运

更正:使用CTRL+SHIFT+ENTER将其保存为数组公式。我认为这可能是正确的,但它并没有给出我想要的。我在C栏中看到了:2,2,1,1,1,1,1,1,#N/A,而不是预期的:2,2,2,1,1,1,1,我将看看我能从这种方法中学到什么——它可能最终达到我需要的程度。