Função que Identifica se Há Valores Repetidos em Um Intervalo

Objetivo: Função VBA que identifica se em uma lista de valores existem apenas valores repetidos ou não.


//

Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

 

Esta função identifica se na seleção de dados existem valores repetidos, interessante o uso do For Each na varredura dos dados e objeto collection.

Para determinar esta função como global você pode seguir os passos do artigo Criando Funções Próprias Globais.

'Função que identifica se há repetidos
Public Function lfRepetidos(ByVal lRange As Range, _
                            ByRef lResultadoPositivo As Variant, _
                            ByRef lResultadoNegativo As Variant) As Variant

    'Ao ocorrer um erro ele continua do próximo registro por este tratamento de erro
    On Error Resume Next

    'Recalcula esta função ao ser alterado qualquer informação na planilha
    Application.Volatile

    'Determina as variáveis
    Dim lCel    As Range
    Dim lUnicos As New Collection
    Dim lQtde   As Long

    'Identifica a quantidade de células que possui o intervalo
    lQtde = lRange.Rows.Count * lRange.Columns.Count

    'Realiza a varredura de todos os dados do Range de células
    For Each lCel In lRange
        'Adiciona um objeto a coleção, sendo que o valor do segundo argumento deve ser único,
        'e portanto caso haja repetição de dados ele passará ao próximo registro
        lUnicos.Add lCel.Value, CStr(lCel.Value)
    Next lCel

    On Error GoTo 0

    If lQtde > lUnicos.Count Then
        lfRepetidos = lResultadoNegativo
    Else
        lfRepetidos = lResultadoPositivo
    End If
End Function

Exemplo de uso da função: =lfRepetidos(A2:E2;”Não”;”Sim”).

Marcos Rieper