Excel VBA - 如何在一个工作簿中的多个工作表中自动检查和选择多个列表中的重复项?

问题描述 投票:1回答:1

如何自动检查同一工作簿中多个工作表中的多个列表中的重复项?

我已经设法通过为我需要的每个比较使用宏来半自动工作。这意味着用于在以下各项之间查找重复值的宏

Worksheets("All").Range("Annie") and Worksheets("Annie").Range("A:A")
Worksheets("All").Range("Benny") and Worksheets("Benny").Range("A:A")

等等等等。

Here is a screenshot that shows where I'm at, and hopefully visualizes what I am trying to do

(安妮曾去过瑞典和肯尼亚 - 因此这些国家的宏观标记为红色)(本尼去过俄罗斯和西班牙)(等等)

只制作一个代码会更有效率,这对于Worksheets("All").中具有值的所有列都是如此。我需要能够拥有至少50个带有名称的列(Annie,Benny,Charlie,Danny,Emma,Fabian等)等等..)

这可能吗?

这是我的代码,到目前为止(对于“Benny”):

Sub findDuplicatesBenny()

Dim rng1, rng2, cell1, cell2 As Range

Set rng1 = Worksheets("All").Range("Benny")

Set rng2 = Worksheets("Benny").Range("A:A")

For Each cell1 In rng1
If IsEmpty(cell1.Value) Then Exit For

For Each cell2 In rng2
If IsEmpty(cell2.Value) Then Exit For
If cell1.Value = cell2.Value Then

cell1.Interior.ColorIndex = 22
cell1.Interior.Pattern = xlSolid
End If

Next cell2
Next cell1

End Sub

任何帮助都感激不尽!

excel vba duplicates
1个回答
0
投票

要使用条件格式执行此操作,您可以使用INDIRECT和第1行中的名称(Annie,Benny等)来创建对每个名称的相应工作表的引用。然后使用COUNTIF,您可以计算重复数。

  1. 在“条件格式”下,单击“使用公式”以确定要格式化的单元格。
  2. 输入以下公式:=COUNTIF(INDIRECT("'"&A$1&"'!A:A"),A1)

enter image description here

  1. 单击“格式”以应用所需的颜色。
  2. 在“规则管理器”窗口中,根据需要更改“适用于”范围引用。

enter image description here


编辑:

只是为了更彻底地解释......这个公式的两个主要部分:

  1. COUNTIF:用于计算符合条件的单元格数。暂时忽略INDIRECT,并使用单元格A2的例子,上面的公式相当于=COUNTIF(Annie!A:A,A2),它查看A表上的Annie列并计算Sweden的所有实例。这将返回1

enter image description here

如果你要拖下那个公式,在A3它将返回1Kenya,在A40为美国等等。

在另一栏中,你可以创建一个类似的引用COUNTIFBenny,结果相似 - 0代表瑞典,一直到1为俄罗斯和西班牙。

enter image description here


  1. INDIRECT:返回由文本字符串指定的引用。上面的公式使用INDIRECT来制作表格和范围参考(Annie!A:ABenny!A:A等)动态。

首先解释一下文本字符串:"'"&A$1&"'!A:A"。这导致'Annie'!A:A'Benny'!A:A等:

enter image description here

INDIRECT中使用这些文本引用成为范围引用。通过将INDIRECT包裹在COUNTIF中,该公式有效地相当于上面的=COUNTIF(Annie!A:A,A2) - 我们刚刚使Annie!A:A动态。请注意,我在'之前和之后包含单引号'Annie'!A:A。如果工作表名称中有空格,则需要这样做,例如如果名字是Annie Marie


对于条件格式 - 如果公式输入计算为TRUE,则应用格式。我正在使用一个轻微的技巧,条件格式的0相当于FALSE和1或更多是TRUE。因此格式化将应用于COUNTIF返回1或更多的任何单元格。这就是重复标记/填充的方式。

© www.soinside.com 2019 - 2024. All rights reserved.