在 Google 工作表上使用 Arrayformula 查找重复值时遇到问题

Trouble Finding Duplicate Values Using Arrayformula on Google Sheets

我正在尝试设置一个 Google Sheet arrayformula 来查找任何重复项而不识别该值的第一个实例。我有一个 table,其值如下:

一个

1

2

3

4

5

由于数字 2 是重复值,我想用公式来识别它,但我不想识别此列中的第一个值。这个公式让我得到了我正在寻找的结果:=IF(COUNTIF($A:$A2,A2)=1, "Unique", "Duplicate")

一个 B

1 独一无二

2 独一无二

3 独一无二

2 重复

4 独一无二

2 次重复

但是当我尝试将其转换为数组公式以便在添加新行时不必手动向下拖动公式时,我得到了不同的结果。这是我使用的数组公式:=ARRAYFORMULA(IF($A:$A="", "", IF(COUNTIF($A:$A,A2:A)=1, "Unique", "Duplicate")))

A B

1 个唯一

2 次重复

3 个唯一

2 次重复

4 个唯一

2 次重复

问题是第一个值也被识别为重复值。将 =IF(COUNTIF($A:$A2,A2)=1, "Unique", "Duplicate") 转换为数组公式的最佳方法是什么?

你想要这个:

=ArrayFormula(IF(A2:A="",,IF(COUNTIFS(A2:A,A2:A,ROW(A2:A),"<="&ROW(A2:A))=1,"Unique","Duplicate")))

COUNTIF 的问题在于您实际上是在问“这个数字是否 相对于此列中的所有其他数字 ?还是重复的 本专栏的其他地方?”这就是为什么 2 在所有情况下都说“重复”:因为它们中的每一个都在列中的“其他地方”重复。

您真正想问的是“到这一行,这个数字是否已经重复到目前为止?”这需要 COUNTIFS 具有第二个条件,该条件仅检查考虑“最多”(即“<=”)当前行的 ROW() 数字。

这是一篇非常好的查找​​重复条目的文章。但我想补充一点。也就是说,如果你在上面的函数中加入一个TRIM函数,这样会更加准确和完美。因为如果我们在重复单元格的开头或结尾添加空格,那么上面的函数就不会认为它是重复的。 我这样做也是为了监控我的员工工作表。即

ARRAYFORMULA(if(len(TRIM(C9:C)),(if((countif(TRIM(C9:C),TRIM(C9:C)))>1,”duplicate”,)),))