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 .