EXCEL VBA Função Definida pelo Usuário com matriz de dados

Anônima
2014-01-07T02:54:38+00:00

Fiz uma nova função intitulada BuscaVal. Funciona muito bem usando um parâmetro único, ou seja, com base em uma coluna buscar o valor correspondente em outra. Mas quando entro com a função usando SHIFT+CTRL+ENTER (ou seja "{...}") para examinar mais de uma coluna, dá erro de #VALOR. Já tentei trocar os tipos de variáveis, sem resultado.

Não conheço muito de código VBA. Por isso se houver algum outro acerto, sintam-se à vontade e eu agradeço.

Por favor me ajudem. MUITO OBRIGADO!

Código VBA abaixo:

Public Function BuscaVal(Valor As String, ColunaBase As Range, ColunaAlvo As Range) As Variant

'   Semelhante às funções ÍNDICE e CORRESP usadas em conjunto

Dim Celula As Range

For Each Celula In ColunaBase

    If Celula.Value = Valor Then

            BuscaVal = Celula.Offset(0, ColunaAlvo.Column - ColunaBase.Column).Value

            GoTo Fim

    End If

Next

BuscaVal = "não encontrado"

Fim:

End Function

Microsoft 365 e Office | Excel | Para uso doméstico | Windows

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários
Resposta aceita pelo autor da pergunta
Anônima
2014-01-07T21:39:59+00:00

EugenioSezini,

A finalidade de utilizar uma função matricial (Ctrl+Shift+Enter) é retornar uma matriz.

Você precisa de uma função que retorne uma matriz, senão não vai funcionar.

Preciso entender o que vc quer, retornar uma matriz (diversos resultados) ou analisar uma matriz e retornar um resultado.

Para facilitar compartilhe sua planilha via link no SkyDrive, e publique o link aqui no fórum, assim a comunidade poderá ajuda-lo.

Se quiser poderá obter ajuda no fórum especializado sobre o assunto, o MSDN:

http://social.msdn.microsoft.com/Forums/pt-BR/home?forum=vbapt

Veja mais informações:

Criando uma função personalizada que retorna um vetor de dados

http://officevbavsto.blogspot.com.br/2012/05/criando-uma-funcao-personalizada-que.html

Criar uma fórmula de matriz

http://office.microsoft.com/pt-br/excel-help/criar-uma-formula-de-matriz-HP005200020.aspx

See ya!!!

Esta resposta foi útil?

0 comentários Sem comentários

1 resposta adicional

Classificar por: Mais útil
  1. Anônima
    2014-01-09T20:14:23+00:00

    Quero comparar dados em mais de uma coluna e conseguir apenas um resultado. Por exemplo, na tabela abaixo, se em uma linha de dados numa planilha qualquer eu tenho numa célula o nome de um vendedor, quero saber quantos sedan ele vendeu, preciso usar uma fórmula matricial que compara o nome do vendedor na coluna A com o tipo de carro na coluna B e busca o número vendido na coluna C, como na fórmula abaixo. Resultará no erro #VALOR. No entanto usando ÍNDICE e CORRESP conjugados achará o valor de 6 Sedan para Sanchez. O que tem de errado em meu código?

    **** A B
    1 Sanchez {=BuscaVal(A1&"Sedan";A2:A11&B2:B11;C2:C11)}
    A B C D
    1 Vendedor Tipo de Carro Número Vendido Preço Unitário
    2 Barnhill Sedan 5 2200
    3 Coupe 4 1800
    4 Ingle Sedan 6 2300
    5 Coupe 8 1700
    6 Jordan Sedan 3 2000
    7 Coupe 1 1600
    8 Pica Sedan 9 2150
    9 Coupe 5 1950
    10 Sanchez Sedan 6 2250
    11 Coupe 8 2000

    Esta resposta foi útil?

    0 comentários Sem comentários