【发布时间】:2016-05-11 15:21:16
【问题描述】:
我们在 Excel 中有一个按特定顺序排列的产品编号列表。由于我不会进入的原因,我们需要突出显示何时存在不相邻的重复项。目前,我正在以条件格式使用此公式来完成这项工作。
=AND(COUNTIF($A$2:$A$82,$A2)>1,$A1<>$A2,$A2<>$A3)这通常效果很好,除非在下面的示例中存在成对的重复项,我们希望 FO-1694 被突出显示,因为它们并不都彼此相邻。但我们不希望 NIS0257 被突出显示,因为它们是。
目前
理想情况下,这就是我们想要看到的......
预期
我最初在 1 月 30 日 (link) 提出了同样的问题,我收到了似乎可以使用条件格式公式的 solution
=NOT(AND(A2=OFFSET(A2,COUNTIF($A2:$A$82,A2)-1,0),A2=OFFSET(A2,-(COUNTIF($A$2:$A2,A2)-1),0)))
虽然这个原始答案似乎适用于一小部分数据 (example),但它不能在更大的数据集上按需要运行,比如我将要处理的数据集(下图是与更大的数据集)。我已经根据需要调整了公式以适应更大的范围,因此您在更大的数据集图片和文件中看到的条件格式公式是
=NOT(AND(A2=OFFSET(A2,COUNTIF($A2:$A$5422,A2)-1,0),A2=OFFSET(A2,-(COUNTIF($A$2:$A2,A2)-1),0)))
箭头指向的单元格应突出显示
对于最后一张图片,即使它是范围的末尾,单元格仍应突出显示,因为它们是空白的,我也需要突出显示范围内的所有空白单元格。
可以使用此link 从我的 Dropbox 帐户下载包含更大数据集的完整文件。
【问题讨论】:
-
我认为你需要使用一个数组来获取它出现的行,比如 if(a1:a10=a1,row(a1:a10)) 然后如果下一个最小的和下一个最大的实例不是当前行 +/-1 然后格式化,所以如果数组获得 2,3,5,7 作为行,那么如果我们在第 5 行,则数组中的 +/- 将是第 3 行和5,我继续玩……
标签: vba excel duplicates conditional-formatting