Índice de correspondência em VBA
A função INDEX & MATCH na combinação VBA é a alternativa para a função VLOOKUP no Excel. No VBA, não temos o luxo de usar a função INDEX & MATCH diretamente porque essas duas funções não fazem parte das funções integradas do VBA. No entanto, ainda podemos usá-los como parte da classe de função da planilha.

Como usar a correspondência de índice no VBA? (Passo a passo)
Por exemplo, observe os dados abaixo.

Nos dados acima, o valor de pesquisa é o nome do departamento e, com base nesse nome de departamento, precisamos extrair o valor do salário.
Mas o problema aqui é que a coluna de resultado está lá na primeira, e a coluna de valor de pesquisa é depois a coluna de resultado. Nesse caso, VLOOKUP não pode buscar o valor do salário porque VLOOKUP funciona apenas da direita para a esquerda, não da esquerda para a direita.
Nesses casos, precisamos usar a fórmula de combinação da função VBA INDEX & MATCH. Vamos realizar a tarefa de encontrar o valor do salário de cada departamento no código VBA.
Passo 1: Comece a rotina do sol.
Etapa 2: Declare a variável VBA Integer.
Código:
Sub INDEX_MATCH_Example1 () Dim k As Integer End Sub

Etapa 3: Agora abra o For Next Loop no VBA.
Código:
Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 a 5 Next k End Sub

Etapa 4: dentro do loop VBA, execute a fórmula. No 5 th coluna é necessário para aplicar a fórmula, de modo que o código é CÉLULAS (k, 5) = .Value
Código:
Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = Next k End Sub

Etapa 5: Nessa célula, precisamos aplicar a fórmula VBA INDEX & MATCH. Como eu disse, precisamos usar essas funções como Função de planilha na classe VBA, portanto, abra a classe de função de planilha.
Código:
Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = WorksheetFunction. Next k End Sub

Passo 6: Após inserir a classe de função da planilha, podemos ver todas as funções da planilha disponíveis, então selecione a função INDEX.
Código:
Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = WorksheetFunction.Index (Next k End Sub

Etapa 7: Ao usar a função de planilha no VBA, você precisa ter certeza absoluta dos argumentos da fórmula. O primeiro argumento é array, ou seja, de qual coluna precisamos o resultado. Nesse caso, precisamos do resultado de A2 a A5.
Código:
Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), Next k End Sub

Passo 8: O próximo passo é de qual número de linha precisamos do resultado. Como vimos no exemplo anterior, não podemos fornecer manualmente o número da linha todas as vezes. Portanto, use a função MATCH.
Para usar a função MATCH novamente, precisamos abrir a classe Worksheet Function.
Código:
Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Next k End Sub

Etapa 9: O primeiro argumento das funções MATCH é o valor LOOKUP; aqui, nosso valor de pesquisa são nomes de departamento; está nas células (2, 4).
Uma vez que toda vez que o número da linha tem que mudar, podemos fornecer a variável "k" no lugar do número da linha manual 2. Células (k, 4) .Valor
Código:
Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Cells (k, 5) .Value, Next k End Sub

Etapa 10: Em seguida, precisamos mencionar a faixa de valor do departamento, ou seja, Faixa (“B2: B5”).
Código:
Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Cells (k, 5) .Value, Range ("B2: B5"),
Próximo k
End Sub
Etapa 11: Em seguida, coloque o argumento como 0 porque precisamos de uma correspondência exata e feche os colchetes.
Código:
Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Cells (k, 4) .Value, Range ("B2: B5"), 0))
Próximo k
End Sub
Ok, terminamos com a parte de codificação. Vamos executar o código para obter o resultado na coluna 5.

Então, obtivemos o resultado.
Podemos usar esta fórmula como alternativa à função VLOOKUP.