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