如何用vba高亮重复值?

在处理大数据时,重复值始终是一个问题。大多数时候,我使用删除重复项选项来删除所有这些值。而且,我确信你也会做同样的事情。

但删除这些重复值或简单地计算它们并不能解决问题。重要的是在删除之前检查所有重复值。

对,是真的。突出显示所有这些值后,您可以检查然后删除它们。今天在这篇文章中,我想与您分享 4 个不同的 VBA 代码来突出显示重复值。

问题是这些代码可以以不同的方式突出显示单元格。您只需将它们复制并粘贴到 VBA 编辑器中即可使用。

1.每一行

此 VBA 代码检查一行中的所有单元格并突出显示一行中重复的所有单元格。简单来说,如果一行的值两次为“522”,则该行将被视为重复。但如果另一个 522 在另一行中,它将被认为是唯一的。

使用VBA代码突出显示每行的重复值
 Sub DuplicateValuesFromRow() 'Declare All Variables. Dim myCell As Range Dim myRow As Integer Dim myRange As Range Dim myCol As Integer Dim i As Integer 'Count Number of Rows and Columns myRow = Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Count myCol = Range(Cells(1, 1), Cells(1, 1).End(xlToRight)).Count 'Loop Each Row To Check Duplicate Values and Highlight cells. For i = 2 To myRow Set myRange = Range(Cells(i, 2), Cells(i, myCol)) For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next Next End Sub

如果你仔细查看这个宏,你会发现我们使用了一个循环来检查每一行是否有重复值,并用颜色突出显示它们。

要点

  1. 您的数据不得包含空白行或空白列,否则它会忽略该单元格。
  2. 数据的起始单元格应该是单元格“A1”。而如果要调整起点,则需要调整代码。
  3. 数据表的第一行和第一列必须是标题。

2. 在每一列中

此 VBA 代码检查列中的所有单元格,并突出显示每列中重复的所有单元格。简单来说,如果某列两次出现“231”值,则该列将被视为重复。但如果另一个“231”在另一列中,它将被认为是唯一的。

使用VBA代码突出显示每列的重复值
 Sub DuplicateValuesFromColumns() 'Declare All Variables Dim myCell As Range Dim myRow As Integer Dim myRange As Range Dim myCol As Integer Dim i As Integer 'Count number of rows & column myRow = Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Count myCol = Range(Cells(1, 1), Cells(1, 1).End(xlToRight)).Count 'Loop each column to check duplicate values & highlight them. For i = 2 To myRow Set myRange = Range(Cells(2, i), Cells(myRow, i)) For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next Next End Sub

3.在选择上

假设您只想突出显示所选内容中具有重复值的单元格,此代码可以帮助您。要使用此代码,只需选择一个单元格范围并运行此代码即可。它会检查每个单元格的选择内容,如果单元格具有重复值,则将其突出显示为红色。

使用 VBA 代码突出显示选择中的重复值
 Sub DuplicateValuesFromSelection() Dim myRange As Range Dim i As Integer Dim j As Integer Dim myCell As Range Set myRange = Selection For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next End Sub

4. 整数数据

如果您有大量数据集,则可以使用此宏代码来验证数据的完整性并突出显示重复值。此代码逐一遍历每个单元格,并将红色应用于所有重复的单元格。

 Sub DuplicateValuesFromTable() Dim myRange As Range Dim i As Integer Dim j As Integer Dim myCell As Range Set myRange = Range(“Table1”) For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next End Sub

重要提示:在上面的代码中,我们使用了表名称“Table1”,您可以从代码中更改此名称。现在,如果您有范围,则只需使用范围名称即可。

[额外提示] 计算重复值

此代码可帮助您计算所选内容中重复值的数量。当您运行此代码时,它会返回一个显示该号码的消息框。

 Sub CountDuplicates() Dim i As Integer Dim j As Integer Dim myCell As Range Dim myRange As Integer myRange = Range("Table1").Count j = 0 For Each myCell In Range("Table1") If WorksheetFunction.CountIf(Range("Table1"), myCell.Value) > 1 Then j = j + 1 End If Next MsgBox j End Sub

在上面的代码中,我们再次使用了表名称,您可以将其更改或替换为范围。

示例文件

请在此处下载此示例文件以了解更多信息。

结论

在不同的情况下,我们需要以不同的方式检查重复值。并且,上面的所有代码在这方面都可以对您有所帮助。如果需要,您可以使用颜色索引号更改代码中的突出显示颜色。

现在帮我做一件事。

我们可以在哪些方面改进这些代码?

请在评论部分与我分享您的想法,我很乐意听取您的意见。并且不要忘记与您的朋友分享这个技巧。

添加评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注