Vba: como usar correspondência de índice
Você pode usar a seguinte sintaxe básica para realizar um INDEX MATCH em VBA:
SubIndexMatch ()
Dim i As Integer
' Perform index match
For i = 2 To 11
Cells(i, 5).Value = WorksheetFunction.Index(Range(" A2:A11 "), _
WorksheetFunction.Match(Cells(i, 4).Value, Range(" B2:B11 "), 0))
Next i
End Sub
Este exemplo específico procura valores nas células 2 a 11 da quarta coluna da planilha no intervalo B2:B11 e, em seguida, retorna os valores correspondentes no intervalo A2:A11 na quinta coluna da planilha.
O exemplo a seguir mostra como usar essa sintaxe na prática.
Exemplo: Execute um INDEX MATCH usando VBA
Suponha que temos o seguinte conjunto de dados em Excel contendo informações sobre jogadores de basquete:
Para cada jogador na coluna D, suponha que queremos encontrar o nome do seu time na coluna A e, em seguida, escreva o nome do time na coluna E.
Podemos criar a seguinte macro para fazer isso:
SubIndexMatch ()
Dim i As Integer
' Perform index match
For i = 2 To 11
Cells(i, 5).Value = WorksheetFunction.Index(Range(" A2:A11 "), _
WorksheetFunction.Match(Cells(i, 4).Value, Range(" B2:B11 "), 0))
Next i
End Sub
Quando executamos esta macro, recebemos a seguinte saída:
Observe que esta macro foi capaz de pesquisar o nome de cada jogador e depois retornar o nome do time correspondente na coluna E.
Observe que dentro do loop For, a sintaxe Cells(i,5).value especifica que queremos que os nomes das equipes sejam retornados na quinta coluna da planilha, ou seja, a coluna E.
Se mudarmos esta sintaxe para Cells(i,6).value então os nomes dos times serão retornados na sexta coluna da planilha:
SubIndexMatch ()
Dim i As Integer
' Perform index match
For i = 2 To 11
Cells(i, 6).Value = WorksheetFunction.Index(Range(" A2:A11 "), _
WorksheetFunction.Match(Cells(i, 4).Value, Range(" B2:B11 "), 0))
Next i
End Sub
Quando executamos esta macro, recebemos a seguinte saída:
Observe que os nomes das equipes agora são retornados na sexta coluna da planilha (coluna F).
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras tarefas comuns em VBA:
VBA: como verificar se uma string contém outra string
VBA: Como contar o número de linhas no intervalo
VBA: Como escrever funções COUNTIF e COUNTIFS