Vba: como usar index match com vários critérios


Você pode usar a seguinte sintaxe básica para realizar um INDEX MATCH com vários critérios no VBA:

 SubIndexMatchMultiple ()
    Range(" F3 ").Value = WorksheetFunction.Index(Range(" C2:C10 "), _
    WorksheetFunction.Match(Range(" F1 "), Range(" A2:A10 "), 0) + _
    WorksheetFunction.Match(Range(" F2 "), Range(" B2:B10 "), 0) - 1)
End Sub

Este exemplo específico procura o valor na célula F1 no intervalo A2:A10 e o valor na célula F2 no intervalo B2:B10 e retorna o valor correspondente no intervalo C2:C10 na célula F3 .

O exemplo a seguir mostra como usar essa sintaxe na prática.

Exemplo: Execute um INDEX MATCH com vários critérios usando VBA

Suponha que temos o seguinte conjunto de dados em Excel contendo informações sobre jogadores de basquete:

Suponha que queremos encontrar o jogador que corresponde ao nome do time na célula F1 e à posição na célula F2 e retornar o nome na célula F3 .

Podemos criar a seguinte macro para fazer isso:

 SubIndexMatchMultiple ()
    Range(" F3 ").Value = WorksheetFunction.Index(Range(" C2:C10 "), _
    WorksheetFunction.Match(Range(" F1 "), Range(" A2:A10 "), 0) + _
    WorksheetFunction.Match(Range(" F2 "), Range(" B2:B10 "), 0) - 1)
End Sub

Quando executamos esta macro, recebemos a seguinte saída:

A macro procura por “Spurs” na coluna Equipe e “Forward” na coluna Posição e retorna corretamente o nome “Eric” na célula F3 .

Se alterarmos os valores nas células F1 e F2 e executarmos a macro novamente, ela poderá encontrar o nome do jogador com base nos novos valores.

Por exemplo, digamos que alteramos o nome da equipe para “Mavs” e a posição para “Centro” e executamos a macro novamente:

A macro procura “Mavs” na coluna Equipe e “Centro” na coluna Posição e retorna corretamente o nome “Chad” na célula F3 .

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em VBA:

VBA: Como usar correspondência de índice
VBA: como verificar se uma string contém outra string
VBA: Como contar o número de linhas no intervalo

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *