有条件地格式化列中值的第一个实例

Conditionally format first instance of value in column

我正在尝试设置列中值的第一个实例的样式。我通过谷歌搜索找到了这个自定义公式:

=COUNTIF($A1:$A100,$A1)=1

但这会为值的 last 实例设置样式,我不确定为什么。

试试这个公式:

=COUNTIF($A:$A1,$A1)=1

COUNTIF 解决方案:

Max建议的公式=COUNTIF($A:$A1,$A1)=1是解决这个问题的常用方法。它是查找重复项公式的变体:=COUNTIF($A:$A,$A1)>1.

COUNTIF 缺点:

使用 COUNTIF 公式的一个缺点是它依赖于第一个参数 $A:$A1 才能准确地正确计算 conidtional-formatting。该公式在条件格式中的工作方式与您将公式实际放入 B1 并将其复制到整列时的效果相同。 B1 中的第一个副本将显示为原始公式 =COUNTIF($A:$A1,$A1)=1,但 B2 中的副本将显示为 =COUNTIF($A:$A2,$A2)=1.

这可能是一个真正的问题,会导致误报,或者如果您正在进行任何排序、剪切和粘贴、拖放行或单元格等,条件格式可能根本不起作用。

匹配解决方案:

该公式的改进版本如下:

=MATCH($A1,INDIRECT("$A:$A"),0)=ROW()

匹配解决方案的解释:

INDIRECT公式的唯一目的是防止范围自动更新。如果您希望它在复制和粘贴时更新,您可以改为: =MATCH($A1,$A:$A,0)=ROW() 此公式正常工作的关键是 MATCH 公式参数 2 查看整个列,当它找到参数 1 的确切位置,它可以将它与行号进行比较。如果 A 列中有重复项,匹配将仅 return 第一个实例的位置。由于参数 2 是整列,因此它 returns 的答案也是第一个实例的行号。因此,上面公式的第二部分 =ROW() 会将第一个实例的行号与当前单元格的行号进行比较,如果它们相同,则整个公式将 return TRUE

ADAPT MATCH 解决方案以查找重复项(一审后):

MATCH 公式也可用于查找第一个条目之后的所有重复项。 (基本上相反)通过将公式的最后一部分 =ROW() 更改为 <ROW() 所以重复查找公式将是:=MATCH($A1,INDIRECT("$A:$A"),0)<ROW()