![我需要一个公式或 VBA 来突出显示 3 列中除每个数字的第一个实例之外的所有重复数字](https://linux22.com/image/1592075/%E6%88%91%E9%9C%80%E8%A6%81%E4%B8%80%E4%B8%AA%E5%85%AC%E5%BC%8F%E6%88%96%20VBA%20%E6%9D%A5%E7%AA%81%E5%87%BA%E6%98%BE%E7%A4%BA%203%20%E5%88%97%E4%B8%AD%E9%99%A4%E6%AF%8F%E4%B8%AA%E6%95%B0%E5%AD%97%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%AE%9E%E4%BE%8B%E4%B9%8B%E5%A4%96%E7%9A%84%E6%89%80%E6%9C%89%E9%87%8D%E5%A4%8D%E6%95%B0%E5%AD%97.png)
答案1
突出显示列中第一个出现该数字后的重复数字(E、S 和 T)
我假设这意味着突出显示所有出现多次的值除了第一次出现,每列单独计数。这意味着对于您的帖子包含的屏幕截图,不会突出显示任何值(因为虽然有多个相同值的实例,但重复项不在同一列中)。
添加条件格式以匹配公式,然后输入:
=(ROW() - MATCH(INDIRECT(ADDRESS(ROW(), COLUMN())), search_range, 0)) > 1
其中search_range
必须替换相关范围。这意味着您将需要此 CF 的三个实例,一个用于 E 列(例如:search_range
subs to $E$2:$E$8
),一个用于 S 列,一个用于 T 列。根据需要调整范围。1
公式末尾的数字也需要设置为数据在相应列中从哪个行开始 - 我将在此末尾详细介绍这一点。
该公式的作用如下:
- 查找当前行号
- 查找当前行的值
- 如果行号减去匹配的行等于或小于 1,则表示我们匹配了“我们自己”——这意味着当前值是其自身的第一个实例,应该不是被强调
- 如果行号减去匹配的行大于 1,则我们匹配了列表中更高的数字 - 这意味着当前值不是其自身的第一个实例,应该突出显示
这是可能的,因为MATCH
函数在第一的结果。
还有一点需要注意,从 返回的结果MATCH
只限于您在其中搜索的矩阵,因此如果您的search_range
为A10:A20
,则位于中的值A10
将MATCH
返回为1
(因为它是指定范围内的第一行)。这意味着,如果您替换的范围search_range
从第 2 行或更低行开始,则您必须修改1
此公式末尾的。您在此处输入的数字应与您的数据开始的行号相同。
它看起来是这样的: