Como destacar valores duplicados com vba?

Ao trabalhar com grandes volumes de dados, valores duplicados são sempre um problema. Na maioria das vezes eu uso a opção remover duplicatas para remover todos esses valores. E tenho certeza que você faz a mesma coisa.

Mas remover esses valores duplicados ou simplesmente contá-los nunca resolve o problema. O importante é examinar todos os valores duplicados antes de removê-los.

Sim, é verdade. Depois de destacar todos esses valores, você pode verificar e excluí-los. Hoje, neste artigo, gostaria de compartilhar com vocês 4 códigos VBA diferentes para destacar valores duplicados.

E o fato é que esses códigos podem destacar células de diferentes maneiras. Você pode simplesmente copiá-los e colá-los em seu editor VBA e usá-los.

1. Em cada linha

Este código VBA verifica todas as células seguidas e destaca todas as células duplicadas em uma linha. Em termos simples, se uma linha tiver o valor “522” duas vezes, ela será considerada duplicada. Mas se os outros 522 estiverem em outra linha, será considerado único.

destacar valores duplicados de cada linha usando código 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

Se você olhar através desta macro, verá que usamos um loop para verificar cada linha em busca de valores duplicados e destacá-los com uma cor.

Pontos importantes

  1. Seus dados não devem conter uma linha ou coluna em branco, caso contrário, essa célula será ignorada.
  2. A célula inicial dos seus dados deve ser a célula “A1”. E se quiser ajustar o ponto inicial, você precisa ajustar o código.
  3. A primeira linha e a primeira coluna da sua planilha de dados devem ser o cabeçalho.

2. Em cada coluna

Este código VBA verifica todas as células em uma coluna e destaca todas as células duplicadas em cada coluna. Em termos simples, se uma coluna tiver o valor “231” duas vezes, será considerada duplicada. Mas se outro “231” estiver em outra coluna, será considerado único.

destacar valores duplicados de cada coluna usando código 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. Na seleção

Suponha que você queira apenas destacar células com valores duplicados da seleção, este código pode te ajudar. Para usar este código, basta selecionar um intervalo de células e executar este código. Ele verifica cada célula com a seleção e destaca em vermelho se uma célula tiver um valor duplicado.

destacar valores duplicados da seleção usando código 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. Dados inteiros

Se você tiver um grande conjunto de dados, poderá usar esse código de macro para verificar a integridade dos dados e destacar valores duplicados. Este código percorre cada célula, uma por uma, e aplica a cor vermelha a todas as células duplicadas.

 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

Nota importante: No código acima usamos o nome da tabela “Tabela1”, você pode alterar esse nome no código. Agora, se você tiver um intervalo, basta usar o nome do intervalo.

[Dica bônus] Conte valores duplicados

Este código ajuda a contar o número de valores duplicados da seleção. Quando você executa esse código, ele retorna uma caixa de mensagem mostrando o número.

 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

Novamente no código acima usamos um nome de tabela e você o altera ou substitui por um intervalo.

Arquivo de exemplo

Baixe este arquivo de amostra aqui para saber mais.

Conclusão

Em diferentes situações, precisamos verificar valores duplicados de diferentes maneiras. E todos os códigos acima podem ser úteis nesse sentido. Se desejar, você pode alterar a cor de destaque dos códigos usando o número do índice de cores.

Agora me ajude com uma coisa.

Onde podemos melhorar esses códigos?

Por favor, compartilhe suas idéias comigo na seção de comentários, eu adoraria ouvir de você. E não esqueça de compartilhar essa dica com seus amigos.

Adicione um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *