Em nossos artigos anteriores, aprendemos como extrair valores exclusivos de um intervalo usando uma combinação de diferentes funções do Excel. Embora funcionem fantasticamente, mas também são complexos, não há como negar isso. Se você extrair valores únicos com frequência, essas fórmulas podem cansá-lo. Eles também tornam o arquivo pesado e lento.
Portanto, neste artigo, aprenderemos como criar uma função definida pelo usuário que recebe um intervalo como argumento e retorna apenas valores exclusivos desse intervalo. Você pode copiar o código diretamente para o seu arquivo e começar a usá-lo imediatamente.
Código VBA para função única:
Função UNIQUES (rng As Range) As Variant () Dim list As New Collection Dim Ulist () As Variant 'Adicionando cada valor de rng à coleção. On Error Resume Next para cada valor In rng 'aqui, o valor e a chave são os mesmos. A coleção não permite chaves duplicadas, portanto, apenas os valores exclusivos permanecerão. list.Add CStr (Value), CStr (Value) Next On Error GoTo 0 'Definindo o comprimento da matriz para o número de valores únicos. Como o array começa em 0, subtraímos 1. ReDim Ulist (list.Count - 1, 0) 'Adicionando um valor único ao array. For i = 0 To list.Count - 1 Ulist (i, 0) = list (i + 1) Next 'Imprimindo o array UNIQUES = Ulist End Function
Copie o código para o editor VB do Excel.
Usando a função UNIQUE
A função acima é uma função de matriz multicelular definida pelo usuário. Isso significa que você deve selecionar o intervalo onde deseja que a lista exclusiva seja impressa e, em seguida, escrever a fórmula e pressionar a combinação de teclas CTRL + SHIFT + ENTER.
No gif acima, temos uma lista de países. Agora, há muitos países duplicados na lista. Queremos obter a lista de países exclusivos apenas.
Para fazer isso, selecione um intervalo em que deseja a lista exclusiva. Agora escreva esta fórmula:
= UNIQUES (A2: B7) |
Pressione a combinação de teclas CTRL + SHIFT + ENTER. E está feito. Todos os valores exclusivos são listados no intervalo selecionado.
Observação:Se o intervalo que você selecionou for maior do que o valor exclusivo, eles exibirão o erro # N / A. Você pode usá-lo como uma indicação de término de valores exclusivos. Se você não vir # N / A no final da lista, significa que pode haver mais valores exclusivos.
Explicação do código
Usei dois conceitos principais de VBA nesta função UD. Coleções e função de matriz definida pelo usuário. Primeiro, usamos uma coleção para obter os valores exclusivos do intervalo fornecido.
para cada valor na lista rng.Add CStr (Value), CStr (Value) Next next
Como não podemos imprimir uma coleção na planilha, nós a transferimos para outro array UList.
para i = 0 Para listar. Contagem - 1 Ulist (i, 0) = list (i + 1) Próximo próximo
Observação:A indexação de array VBA começa em 0 e a indexação de coleção começa em 1. É por isso que subtraímos 1 para array em loop for e adicionamos 1 à indexação de coleção de lista.
No final, imprimimos esse array na folha.
Existe uma função UNIQUE que não está disponível no Excel 2016 que faz a mesma coisa. Essa função está disponível no Excel 2019. Apenas os membros do programa do insider têm acesso a essa função. Usando essa técnica, você pode se exibir no escritório por estar à frente da MS.
Então sim pessoal, é assim que você pode criar uma função que extrai valores únicos de forma simples. Espero ter sido explicativo o suficiente para fazer você entender isso. Se você tiver alguma dúvida específica sobre esta ou qualquer outra questão relacionada ao VBA do Excel, pergunte na seção de comentários abaixo.
Clique no link abaixo para baixar o arquivo de trabalho:
Função UNIQUESComo usar coleções VBA no Excel. Aprenda o uso da coleção que pode ajudá-lo a obter valores únicos.
Criar função VBA para retornar array | Aprenda a criar uma função de array definida pelo usuário que retorna um array.
Arrays no Excel Formul | Saiba o que são arrays no Excel.
Como criar uma função definida pelo usuário através do VBA. Aprenda a criar funções definidas pelo usuário no Excel
Usando uma função definida pelo usuário (UDF) de outra pasta de trabalho usando VBA no Microsoft Excel | Use a função definida pelo usuário em outra pasta de trabalho do Excel
Retornar valores de erro de funções definidas pelo usuário usando VBA no Microsoft Excel | Aprenda como você pode retornar valores de erro de uma função definida pelo usuário