Quero lhes apresentar uma função personalizada (UDF) extremamente útil e já me solucionou muitos problemas e já ajudei muita gente em fóruns indicando esta função.
Trata-se da função que batizei de VALORESDOVETOR, por tem a finalidade de retornar os valores de um vetor ou matriz que pode ser um vetor/matriz num intervalo de células ou um vetor/matriz gerado num cálculo matricial.
Sintaxe
=VALORESDOVETOR(Vetor_ou_Matriz_Origem;Quantidade_de_valores_para_retorno;Separador)
Vetor_ou_Matriz_Origem: Argumento obrigatório onde é indicado o vetor ou matriz com os valores que deseja retornar, podendo ser um intervalo da planilha ou uma matriz gerada num cálculo matricial. A função ignora valores vazios.
Quantidade_de_valores_para_retorno (Opcional): É a indicação de quantos elementos do vetor você deseja trazer na resposta. Se ignorado o argumento, a função trará todos os elementos do vetor.
Separador (Opcional): Define o elemento que separará os valores no resultado. Se ignorado o argumento, a função adotará a vírgula como padrão.
Código fonte
Public Function VALORESDOVETOR(vArray As Variant, _ Optional lSize As Long, _ Optional sSeparator As String = ", ") As Variant Dim v As Variant Dim lCount As Long Dim asOut() As String If lSize < 0 Then VALORESDOVETOR = CVErr(xlErrNum) Exit Function End If For Each v In vArray If v <> "" Then lCount = lCount + 1 ReDim Preserve asOut(1 To lCount) asOut(lCount) = v If lCount = lSize Then Exit For End If Next v VALORESDOVETOR = Join(asOut, sSeparator) End Function
Criando a UDF no Excel
Para deixar esta UDF disponível no Excel, há duas alternativas. Você pode apertar ALT+F11 para abrir o VBA, inserir um novo módulo no projeto do arquivo e colar o código da UDF:
Fazendo isto, a função ficará disponível somente para a pasta de trabalho na qual foi inserida. Para manter a função disponível é preciso salvar o arquivo como pasta de trabalho habilitada para macro do Excel (.xlsm).
A outra alternativa é ativar a função permanentemente no seu Excel como um suplemento xlam.
Para isso, baixe o suplento aqui e copie preferencialmente no diretório de suplementos do Office, que geralemnte é “C:\Users\usuário\AppData\Roaming\Microsoft\Suplementos” ou “C:\Users\usuário\AppData\Roaming\Microsoft\Addin” nos Office em ingles, mas geralmente este diretório fica oculto, portanto a dica é ir no Excel e mandar “salvar como” qualquer arquivo e escolher no tipo de arquivo a opção “Suplemento do Excel” ou “Addin”, e copiar o caminho do diretório que vai aparecer na barra de endereço (Não precisa salvar nenhum arquivo, esta dica é só para pegar o caminho do diretório de suplementos).
Com o arquivo disponível no diretório, basta abrir as opções do Excel e ir na opção Suplementos, e na lista Gerenciar, escolher “Suplementos do Excel” e clicar no botão “Ir”. Se o arquivo do suplemento foi copiado na pasta padrão de suplementos, a opção “Udf Excelmaniacos” estará disponível para selecionar, se não é so clicar na opção “Procurar” e localizar o arquivo xlam no diretório em que foi copiado.
Fazendo isso, a função ficará disponível para qualquer arquivo que você abrir no seu computador, porém se você utilizar a função num arquivo e enviar para outro pessoa, a função não funcionará.
Exemplo de aplicação
Consigo visualizar duas grandes aplicações para esta UDF:
1) A primeira é fácil de compreender por qualquer usuário, pois a função serve como alternativa à função CONCATENAR, mas com a grande vantagem de indicar um intervalo único que se deseja concatenar os valores, o que não é possível fazer com a função CONCATENAR ou com o elemento “&”, onde deve-se indicar o endereço de célula por célula que se deseja concatenar.
Veja na imagem a facilidade de concatenar as células do intervalo A3:A12 comparando o método com funções nativas e o método com a UDF VALORESDOVETOR. Muito mais fácil, não?
Para concatenar os valores sem nenhum tipo de separador basta informar no 3º argumento o valor aspas duplas duplicado “”, se quiser um espaçamento simples basta colocar o espaço dentro das aspas ” “.
2) A segunda aplicação seria a utilização dela em fórmulas Matriciais. Este é um campo um pouco mais complexo do Excel, mas que amplia exponencialmente a capacidade de desenvolver fórmulas para trazer soluções que seriam bastante difíceis de realizar com fórmulas simples. Quem está acostumado a trabalhar com fórmulas matriciais já deve ter notado que não há uma função que simplesmente retorne todos os valores gerados na matriz da fórmula. Até é possível utilizar a função ÍNDICE, mas com ela só é possível trazer um elemento da matriz. Isso é um buraco muito grande ao se trabalhar com fórmula matriciais, e ai é que entra a UDF VALORESDOVETOR, que resolverá grande parte desta debilidade.
Para melhor entendimento, bolei algumas questões com soluções matriciais. Veja as imagens (clique para ampliar a imagem):
Veja que no problema 4, a função VALORESDOVETOR é uma forma de realizar um PROCV trazendo todos os valores na mesma célula! Isso é algo muito interessante.
Não há limites para aplicação dessa função quando se alia a fórmulas matriciais.
Espero que aproveitem!
Deixo o crédito ao Felipe Gualberto pelo desenvolvimento dessa função!
Baixe o modelo com os exemplos deste post: Modelo – Valores do Vetor
Muito bom! Resolveu um grande problema que tinha e me poupou um grande trabalho, evitando gerar fórmulas gigantes
CurtirCurtir
Parabéns pela elaboração de uma função tão versátil !!
CurtirCurtir
Perfeito! Parabéns pela criação deveria ser uma função padrão do Excel.
CurtirCurtir
Olá Márcio! Está função é muito útil. Na versão do Office 365, por assinatura, a Microsoft incluiu algumas funções novas, e entre elas a UNIRTEXTO, que é muito parecida com esta UDF.
CurtirCurtir