如何用vba高亮重复值?
在处理大数据时,重复值始终是一个问题。大多数时候,我使用删除重复项选项来删除所有这些值。而且,我确信你也会做同样的事情。
但删除这些重复值或简单地计算它们并不能解决问题。重要的是在删除之前检查所有重复值。
对,是真的。突出显示所有这些值后,您可以检查然后删除它们。今天在这篇文章中,我想与您分享 4 个不同的 VBA 代码来突出显示重复值。
问题是这些代码可以以不同的方式突出显示单元格。您只需将它们复制并粘贴到 VBA 编辑器中即可使用。
1.每一行
此 VBA 代码检查一行中的所有单元格并突出显示一行中重复的所有单元格。简单来说,如果一行的值两次为“522”,则该行将被视为重复。但如果另一个 522 在另一行中,它将被认为是唯一的。
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
如果你仔细查看这个宏,你会发现我们使用了一个循环来检查每一行是否有重复值,并用颜色突出显示它们。
要点
- 您的数据不得包含空白行或空白列,否则它会忽略该单元格。
- 数据的起始单元格应该是单元格“A1”。而如果要调整起点,则需要调整代码。
- 数据表的第一行和第一列必须是标题。
2. 在每一列中
此 VBA 代码检查列中的所有单元格,并突出显示每列中重复的所有单元格。简单来说,如果某列两次出现“231”值,则该列将被视为重复。但如果另一个“231”在另一列中,它将被认为是唯一的。
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.在选择上
假设您只想突出显示所选内容中具有重复值的单元格,此代码可以帮助您。要使用此代码,只需选择一个单元格范围并运行此代码即可。它会检查每个单元格的选择内容,如果单元格具有重复值,则将其突出显示为红色。
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
在上面的代码中,我们再次使用了表名称,您可以将其更改或替换为范围。
示例文件
请在此处下载此示例文件以了解更多信息。
结论
在不同的情况下,我们需要以不同的方式检查重复值。并且,上面的所有代码在这方面都可以对您有所帮助。如果需要,您可以使用颜色索引号更改代码中的突出显示颜色。
现在帮我做一件事。
我们可以在哪些方面改进这些代码?
请在评论部分与我分享您的想法,我很乐意听取您的意见。并且不要忘记与您的朋友分享这个技巧。