VBA Index Match - Como usar a função de correspondência de índice em VBA (exemplos)

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

Artigos interessantes...