Vba: come utilizzare la corrispondenza degli indici


È possibile utilizzare la seguente sintassi di base per eseguire una CORRISPONDENZA INDICE in 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

Questo particolare esempio cerca i valori nelle celle da 2 a 11 della quarta colonna del foglio di lavoro nell’intervallo B2:B11 e quindi restituisce i valori corrispondenti nell’intervallo A2:A11 nella quinta colonna del foglio di lavoro.

L’esempio seguente mostra come utilizzare questa sintassi nella pratica.

Esempio: eseguire una CORRISPONDENZA INDICE utilizzando VBA

Supponiamo di avere il seguente set di dati in Excel contenente informazioni sui giocatori di basket:

Per ogni giocatore nella colonna D, supponiamo di voler trovare il nome della squadra nella colonna A, quindi scrivere il nome della squadra nella colonna E.

Per fare ciò possiamo creare la seguente macro:

 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 eseguiamo questa macro, riceviamo il seguente output:

Tieni presente che questa macro è in grado di cercare il nome di ciascun giocatore e quindi restituire il nome della squadra corrispondente nella colonna E.

Tieni presente che all’interno del ciclo For, la sintassi Cells(i,5).value specifica che vogliamo che i nomi delle squadre vengano restituiti nella quinta colonna del foglio di calcolo, ovvero la colonna E.

Se modifichiamo questa sintassi in Cells(i,6).value , i nomi delle squadre verranno restituiti nella sesta colonna del foglio di calcolo:

 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 eseguiamo questa macro, riceviamo il seguente output:

Tieni presente che i nomi delle squadre vengono ora restituiti nella sesta colonna del foglio di calcolo (colonna F).

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in VBA:

VBA: come verificare se una stringa contiene un’altra stringa
VBA: come contare il numero di righe nell’intervallo
VBA: come scrivere le funzioni COUNTIF e COUNTIFS

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *