有条件地格式化列中值的第一个实例
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()
我正在尝试设置列中值的第一个实例的样式。我通过谷歌搜索找到了这个自定义公式:
=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()