Corrispondenza indice VBA

Corrispondenza dell'indice in VBA

La funzione INDICE E CONFRONTA nella combinazione VBA è l'alternativa alla funzione CERCA.VERT in Excel. In VBA non possiamo permetterci il lusso di utilizzare direttamente la funzione INDICE E CONFRONTA perché queste due funzioni non fanno parte delle funzioni integrate di VBA. Tuttavia, possiamo ancora usarli come parte della classe di funzioni del foglio di lavoro.

Come utilizzare Index Match in VBA? (Passo dopo passo)

Puoi scaricare questo modello Excel di corrispondenza dell'indice VBA qui: modello Excel di corrispondenza dell'indice VBA

Ad esempio, guarda i dati seguenti.

Nei dati precedenti, il valore di ricerca è il nome del dipartimento e in base al nome del dipartimento dobbiamo estrarre l'importo dello stipendio.

Ma il problema qui è che la colonna dei risultati è presente nella prima e la colonna del valore di ricerca è successivamente la colonna dei risultati. In questo caso, CERCA.VERT non può recuperare l'importo dello stipendio perché CERCA.VERT funziona solo da destra a sinistra e non da sinistra a destra.

In questi casi, dobbiamo utilizzare la formula di combinazione della funzione INDICE E CONFRONTA VBA. Eseguiamo il compito di trovare l'importo dello stipendio di ciascun dipartimento nel codice VBA.

Passaggio 1: inizia la routine del sole.

Passaggio 2: dichiarare la variabile Integer VBA.

Codice:

 Sub INDEX_MATCH_Example1 () Dim k As Integer End Sub 

Passaggio 3: ora apri For Next Loop in VBA.

Codice:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Next k End Sub 

Passaggio 4: all'interno del ciclo VBA eseguire la formula. Nella quinta colonna, dobbiamo applicare la formula, quindi il codice è CELLS (k, 5) .Value =

Codice:

 Sub INDEX_MATCH_Example1 () Dim k As Integer Per k = da 2 a 5 celle (k, 5) .Value = Next k End Sub 

Passaggio 5: in quella cella, dobbiamo applicare la formula INDICE E CONFRONTA VBA. Come ho detto, dobbiamo usare queste funzioni come funzione del foglio di lavoro nella classe vba, quindi apri la classe della funzione del foglio di lavoro.

Codice:

Sub INDEX_MATCH_Example1 () Dim k As Integer Per k = da 2 a 5 celle (k, 5) .Value = WorksheetFunction. Avanti k End Sub

Passaggio 6: dopo aver inserito la classe della funzione del foglio di lavoro, possiamo vedere tutte le funzioni del foglio di lavoro disponibili, quindi selezionare la funzione INDICE.

Codice:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2-5 Cells (k, 5) .Value = WorksheetFunction.Index (Next k End Sub 

Passaggio 7: durante l'utilizzo della funzione del foglio di lavoro in VBA, è necessario essere assolutamente sicuri degli argomenti della formula. Il primo argomento è array, ovvero da quale colonna abbiamo bisogno del risultato, in questo caso abbiamo bisogno del risultato da A2 ad A5.

Codice:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2-5 Cells (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), Next k End Sub 

Passaggio 8: il prossimo è da quale numero di riga abbiamo bisogno del risultato. Come abbiamo visto nell'esempio precedente, non possiamo fornire manualmente il numero di riga ogni volta. Quindi usa la funzione CONFRONTA.

Per poter utilizzare nuovamente la funzione CONFRONTA, è necessario aprire la classe Funzione foglio di lavoro.

Codice:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2-5 Cells (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Next k End Sub 

Passaggio 9: il primo argomento delle funzioni MATCH è il valore di RICERCA, qui il nostro valore di ricerca è i nomi dei dipartimenti, è lì nelle celle (2, 4).

Poiché ogni volta che il numero di riga deve cambiare, possiamo fornire la variabile "k" al posto del numero di riga manuale 2. Celle (k, 4).

Codice:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2-5 Cells (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Cells (k, 5) .Value, Next k End Sub 

Passaggio 10: Successivamente dobbiamo menzionare l'intervallo di valori del reparto, ovvero Intervallo ("B2: B5").

Codice:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2-5 Cells (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Cells (k, 5) .Value, Range ("B2: B5"), 

Avanti k

End Sub

Passaggio 11: Quindi inserire l'argomento come 0 perché abbiamo bisogno di una corrispondenza esatta e chiudere le parentesi.

Codice:

 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)) 

Avanti k

End Sub

Ok, abbiamo finito con la parte di codifica. Eseguiamo il codice per avere il risultato nella colonna 5.

Quindi, abbiamo ottenuto il risultato.

Possiamo usare questa formula come alternativa alla funzione CERCA.VERT.