Vba 使用条件格式突出显示彼此不相邻的重复项(较大的数据集)

Vba 使用条件格式突出显示彼此不相邻的重复项(较大的数据集),vba,excel,duplicates,conditional-formatting,Vba,Excel,Duplicates,Conditional Formatting,我们在Excel中有一个按一定顺序排列的产品编号列表。出于我不想深入讨论的原因,我们需要强调的是,当存在不相邻的重复项时。目前,我正在以条件格式使用此公式来完成这项工作 =和(COUNTIF($A$2:$A$82,$A2)>1,$A1$A2,$A2$A3) 这通常效果很好,除了下面的例子中有成对的重复项外,我们希望突出显示FO-1694,因为它们不是彼此相邻的。但我们不希望突出显示NIS0257,因为它们是 目前 理想情况下,这就是我们想要看到的 期望 我最初在1月30日()问了同样的问题,

我们在Excel中有一个按一定顺序排列的产品编号列表。出于我不想深入讨论的原因,我们需要强调的是,当存在不相邻的重复项时。目前,我正在以条件格式使用此公式来完成这项工作

=和(COUNTIF($A$2:$A$82,$A2)>1,$A1$A2,$A2$A3)

这通常效果很好,除了下面的例子中有成对的重复项外,我们希望突出显示FO-1694,因为它们不是彼此相邻的。但我们不希望突出显示NIS0257,因为它们是

目前

理想情况下,这就是我们想要看到的

期望

我最初在1月30日()问了同样的问题,我收到了一份似乎是关于条件格式公式的工作报告

=NOT(AND(A2=OFFSET(A2,COUNTIF($A2:$A$82,A2)-1,0),A2=OFFSET(A2,-(COUNTIF($A$2:$A2,A2)-1),0)))
虽然这个最初的答案似乎适用于一小部分数据(),但它在像我将要处理的那些大得多的数据集上并不起作用(下面的图片是关于大数据集的问题)。我已经根据需要调整了公式以适应更大的范围,因此您在更大的数据集图片和文件中看到的条件格式公式是

=NOT(AND(A2=OFFSET(A2,COUNTIF($A2:$A$5422,A2)-1,0),A2=OFFSET(A2,-(COUNTIF($A$2:$A2,A2)-1),0)))
箭头指向的单元格应高亮显示

对于最后一张图片,即使是范围的末尾,单元格仍然应该高亮显示,因为它们是空白的,我需要该范围内的所有空白单元格也高亮显示


使用此选项,可以从我的dropbox帐户下载包含较大数据集的完整文件。

我应该想到这些问题:

=NOT(AND(IFERROR(COUNTIF(OFFSET(A1,0,0,-COUNTIF($A$1:$A1,A2)),A2),0)=IFERROR(COUNTIF($A$1:$A1,A2),0),IFERROR(COUNTIF(OFFSET(A3,0,0,COUNTIF($A3:$A$5422,A2)),A2),0)=IFERROR(COUNTIF($A3:$A$5422,A2),0),A2<>""))
=NOT(AND(IFERROR(COUNTIF(OFFSET(A1,0,0,-COUNTIF($A1:$A1,A2)),A2),0)=IFERROR(COUNTIF($A1:$A1,A2),0),IFERROR(COUNTIF(OFFSET(A3,0,0,COUNTIF($a5422,A2)),A2),0)=IFERROR(COUNTIF($A3:$a5422,A2),0),A2“”)

应该这样做。

我应该想到这些问题:

=NOT(AND(IFERROR(COUNTIF(OFFSET(A1,0,0,-COUNTIF($A$1:$A1,A2)),A2),0)=IFERROR(COUNTIF($A$1:$A1,A2),0),IFERROR(COUNTIF(OFFSET(A3,0,0,COUNTIF($A3:$A$5422,A2)),A2),0)=IFERROR(COUNTIF($A3:$A$5422,A2),0),A2<>""))
=NOT(AND(IFERROR(COUNTIF(OFFSET(A1,0,0,-COUNTIF($A1:$A1,A2)),A2),0)=IFERROR(COUNTIF($A1:$A1,A2),0),IFERROR(COUNTIF(OFFSET(A3,0,0,COUNTIF($a5422,A2)),A2),0)=IFERROR(COUNTIF($A3:$a5422,A2),0),A2“”)

应该这样做。

我不确定这是否适合你

=IF(COUNTIF($A$1:$A$8,A2)>2,1,IF(AND(COUNTIF($A$1:$A$8,A2)=2,A1<>A2,A3<>A2),1,0))
=IF(COUNTIF($A$1:$A$8,A2)>2,1,IF(和(COUNTIF($A$1:$A$8,A2)=2,A1A2,A3A2),1,0))
我已经用测试数据对它进行了测试,似乎很有效。您需要检查第一行,因为您无法检查上一个单元格,所以A1A2部分

1是我测试中的真实条件,因此需要调整条件格式。
享受吧。

我不确定这是否适合你

=IF(COUNTIF($A$1:$A$8,A2)>2,1,IF(AND(COUNTIF($A$1:$A$8,A2)=2,A1<>A2,A3<>A2),1,0))
=IF(COUNTIF($A$1:$A$8,A2)>2,1,IF(和(COUNTIF($A$1:$A$8,A2)=2,A1A2,A3A2),1,0))
我已经用测试数据对它进行了测试,似乎很有效。您需要检查第一行,因为您无法检查上一个单元格,所以A1A2部分

1是我测试中的真实条件,因此需要调整条件格式。
享受。

我认为您需要使用数组来获取它出现的行,比如如果(a1:a10=a1,行(a1:a10)),那么如果下一个最小和下一个最大的实例不是当前的行+/-1,那么格式是,如果数组中的行是2,3,5,7,那么如果我们在第5行,数组中的+/-将是第3行和第5行,我会继续播放…我想你需要使用数组来获取它出现的行,比如如果(a1:a10=a1,行(a1:a10)),那么如果下一个最小和下一个最大的实例不是当前的行+/-1,那么格式是,如果数组中的行是2,3,5,7,那么如果我们在第5行,数组中的+/-将是第3行和第5行,我会继续玩……你有没有听过一个瘦高的书呆子说“我爱你”?我爱你。再次感谢你的帮助。我只是玩了一下新的公式,看起来所有的情况都是一样的!修改后的代码只剩下一个小问题,那就是如果填充了范围的最后一个单元格并且不是重复的,它仍然会突出显示该值。请参见photo@CaffeineCoder,了解您的第一次放大
$A$5422
始终比数据集大一行,因此在本例中
$A$5423
。至于第二个,我不明白。我删除了A18中的值,仍然得到A17的公式返回真值。一个简单的解决方案,谢谢!至于第二个问题,我在发布后意识到它是空的,是由于一个完全无关的问题(重叠的条件格式公式,已被删除),所以我删除了该注释。再次感谢!你有没有听过一个瘦高的书呆子说“我爱你”?我爱你。再次感谢你的帮助。我只是玩了一下新的公式,看起来所有的情况都是一样的!修改后的代码只剩下一个小问题,那就是如果填充了范围的最后一个单元格并且不是重复的,它仍然会突出显示该值。请参见photo@CaffeineCoder,了解您的第一次放大
$A$5422
始终比数据集大一行,因此在本例中
$A$5423
。至于第二个,我不明白。我删除了A18中的值,仍然得到A17的公式返回真值。一个简单的解决方案,谢谢!至于第二个问题,我在发布后意识到它是空的,是由于一个完全无关的问题(重叠的条件格式公式,已被删除),所以我删除了该注释。再次感谢!