[UDF] VALORESDOVETOR: Trazendo valores de um vetor ou matriz de dados

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:

Excelmaniacos - VALORESDOVETOR 6

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.

Excelmaniacos - VALORESDOVETOR 7

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.

Excelmaniacos - VALORESDOVETOR 1

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):

Excelmaniacos - VALORESDOVETOR 2

Excelmaniacos - VALORESDOVETOR 3

Excelmaniacos - VALORESDOVETOR 4Veja 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

5 comentários em “[UDF] VALORESDOVETOR: Trazendo valores de um vetor ou matriz de dados

Deixe uma resposta para MARCIO RODRIGUES FERREIRA SANTOS Cancelar resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s