Vba: come utilizzare index match con più criteri


È possibile utilizzare la seguente sintassi di base per eseguire una CORRISPONDENZA INDICE con più criteri in VBA:

 SubIndexMatchMultiple ()
    Range(" F3 ").Value = WorksheetFunction.Index(Range(" C2:C10 "), _
    WorksheetFunction.Match(Range(" F1 "), Range(" A2:A10 "), 0) + _
    WorksheetFunction.Match(Range(" F2 "), Range(" B2:B10 "), 0) - 1)
End Sub

Questo esempio particolare cerca il valore nella cella F1 nell’intervallo A2:A10 e il valore nella cella F2 nell’intervallo B2:B10 e restituisce il valore corrispondente nell’intervallo C2:C10 nella cella F3 .

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

Esempio: eseguire una CORRISPONDENZA INDICE con più criteri utilizzando VBA

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

Supponiamo di voler trovare il giocatore che corrisponde al nome della squadra nella cella F1 e alla posizione nella cella F2 e restituire il nome nella cella F3 .

Per fare ciò possiamo creare la seguente macro:

 SubIndexMatchMultiple ()
    Range(" F3 ").Value = WorksheetFunction.Index(Range(" C2:C10 "), _
    WorksheetFunction.Match(Range(" F1 "), Range(" A2:A10 "), 0) + _
    WorksheetFunction.Match(Range(" F2 "), Range(" B2:B10 "), 0) - 1)
End Sub

Quando eseguiamo questa macro, riceviamo il seguente output:

La macro cerca “Spurs” nella colonna Squadra e “Attaccante” nella colonna Posizione e restituisce correttamente il nome “Eric” nella cella F3 .

Se modifichiamo i valori nelle celle F1 e F2 ed eseguiamo nuovamente la macro, sarà in grado di trovare il nome del giocatore in base ai nuovi valori.

Ad esempio, supponiamo di cambiare il nome della squadra in “Mavs” e la posizione in “Centro” ed eseguire nuovamente la macro:

La macro cerca “Mavs” nella colonna Squadra e “Centro” nella colonna Posizione e restituisce correttamente il nome “Ciad” nella cella F3 .

Risorse addizionali

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

VBA: come utilizzare la corrispondenza degli indici
VBA: come verificare se una stringa contiene un’altra stringa
VBA: come contare il numero di righe nell’intervallo

Aggiungi un commento

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