[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

Anúncios

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

Deixe um comentário

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 )

Imagem do Twitter

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

Foto do Facebook

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

Foto do Google+

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

Conectando a %s