仅使用一个单元格公式计算一行中的重复项(也没有条件格式)

Count duplicates in a row using only one cell formula (no conditional formatting either)

我有一行数据,比方说 (a, b, c, d, e, a, c) 我想计算重复项的数量 - 在本例中为 2(2 个 a,2 个 c) 但是,我不想使用 COUNTIF(RNG,A1)>1 并拖出列表的整个长度。 我想在该行中搜索该范围内的所有值并计算是否找到匹配项。

使用 Excel 365 和 A1G1 中的数据,选择一个单元格并输入:

=SUMPRODUCT(--(COUNTIF(A1:G1,UNIQUE(TRANSPOSE(A1:G1)))>1))

(这实际上是您问题中指出的方法,但是隐藏了所有辅助数组)

备注:

这个:

UNIQUE(TRANSPOSE(A1:G1))

会生成一个数组,如:
a
b
c
d
e

还有这个:

COUNTIF(A1:G1,UNIQUE(TRANSPOSE(A1:G1)))

会产生:
2
1
2
1
1

SUMPRODUCT()统计上面有多少个是大的。

如果您没有Excel 365,那么:

=SUMPRODUCT((1/COUNTIF(A1:G1,A1:G1)<1)*(1/COUNTIF(A1:G1,A1:G1)))

为了完整起见,这里是频率版本(针对 Excel 的早期版本):

=SUMPRODUCT(--(FREQUENCY(MATCH(A1:H1,A1:H1,0),MATCH(A1:H1,A1:H1,0))>1))

计算频率>1的不同字母的数量,即(a,c)=>2

题目还有一种解释,就是'how many duplicates exist in total?'(即a一个,c两个,共三个):

=COUNTA(A1:H1)-SUMPRODUCT(--(FREQUENCY(MATCH(A1:H1,A1:H1,0),MATCH(A1:H1,A1:H1,0))>0))

计算字母总数 (8) 减去唯一字母数 (5) (a,c,c) => 3