Pode utilizar a seguinte sintaxe básica para efetuar um INDEX MATCH com múltiplos critérios em VBA:
Sub IndexMatchMultiple() 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 dentro do intervalo A2:A10 e o valor na célula F2 dentro do intervalo B2:B10 e devolve o valor correspondente no intervalo C2:C10 para a célula F3 .
O exemplo seguinte mostra como utilizar esta sintaxe na prática.
Exemplo: Executar INDEX MATCH com múltiplos critérios utilizando VBA
Suponhamos que temos o seguinte conjunto de dados no Excel que contém informações sobre jogadores de basquetebol:
Suponhamos que gostaríamos de procurar o jogador que corresponde ao nome da equipa na célula F1 e a posição na célula F2 e devolver o nome na célula F3 .
Para o efeito, podemos criar a seguinte macro:
Sub IndexMatchMultiple() 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, obtemos a seguinte saída:
A macro procura "Spurs" na coluna Equipa e "Avançado" na coluna Posição e devolve corretamente o nome "Eric" na célula F3 .
Se alterarmos os valores nas células F1 e F2 e executar novamente a macro, esta será capaz de encontrar o nome do jogador com base nos novos valores.
Por exemplo, suponha que alteramos o nome da equipa para "Mavs" e a posição para "Center" e executamos a macro novamente:
A macro procura "Mavs" na coluna Equipa e "Centro" na coluna Posição e devolve corretamente o nome "Chad" na célula F3 .