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