VBA Index Match

Í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)

Você pode baixar este modelo Excel de correspondência de índice VBA aqui - Modelo Excel de correspondência de índice VBA

Por exemplo, veja os dados abaixo.

Nos dados acima, o valor de pesquisa é o nome do departamento e, com base nesse nome do departamento, precisamos extrair o valor do salário.

Mas o problema aqui é que a coluna de resultado está na primeira e a coluna de valor de pesquisa é a coluna de resultado depois disso. Nesse caso, VLOOKUP não pode buscar o valor do salário porque VLOOKUP funciona apenas da direita para a esquerda e 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. Na 5ª coluna, precisamos aplicar a fórmula, então o código é CELLS (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, então 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: Depois de 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 do resultado, neste 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 

Passo 9: O primeiro argumento das funções MATCH é o valor LOOKUP, aqui o nosso valor de pesquisa são os nomes dos departamentos, está presente nas células (2, 4).

Uma vez que cada vez que o número da linha deve 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 valores 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

Passo 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.