VBA Match

Come abbiamo Index e Match nel foglio di lavoro come funzioni di ricerca, possiamo anche utilizzare le funzioni Match in VBA come funzione di ricerca, questa funzione è una funzione del foglio di lavoro ed è accessibile dall'applicazione. metodo del foglio di lavoro e poiché si tratta di una funzione del foglio di lavoro, gli argomenti per la funzione Match sono simili alla funzione del foglio di lavoro.

Funzione di corrispondenza VBA

La funzione VBA Match cerca la posizione o il numero di riga del valore di ricerca nella matrice della tabella, ad esempio nella tabella principale di Excel.

In un foglio di lavoro, le funzioni di ricerca sono parte integrante di Excel. Alcune delle funzioni di ricerca importanti sono CERCA.VERT, CERCA.ORIZZ, INDICE e CONFRONTA. Sfortunatamente, non abbiamo queste funzioni come funzioni VBA. Tuttavia, possiamo usarli come funzioni del foglio di lavoro in VBA.

In questo articolo, ti mostrerò come utilizzare una delle funzioni di ricerca del foglio di lavoro MATCH in VBA come funzione del foglio di lavoro.

Come utilizzare la funzione MATCH in VBA Excel?

Ti mostreremo un semplice esempio di utilizzo della funzione Excel MATCH in VBA.

Puoi scaricare questo modello Excel VBA Match qui - Modello Excel VBA Match

Esempio 1

In VBA, possiamo utilizzare questa formula MATCH in Excel come funzione del foglio di lavoro. Seguire i passaggi seguenti per utilizzare la funzione CONFRONTA in VBA.

Passaggio 1: creare una sottoprocedura assegnando un nome alla macro.

Codice:

 Sub Match_Example1 ()

Passaggio 2: nella cella E2 abbiamo bisogno del risultato, quindi avvia il codice come intervallo ("E2"). Valore =

Codice:

 Sub Match_Example1 () Intervallo ("E2"). Valore = End Sub 

Passaggio 3: nella cella E2 il valore dovrebbe essere il risultato della formula MATCH. Quindi, per accedere alla funzione VBA MATCH, dobbiamo prima utilizzare la proprietà "WorksheetFunction". In questa proprietà, otterremo tutto l'elenco delle funzioni del foglio di lavoro disponibili.

Passaggio 4: selezionare la funzione MATCH qui.

Codice:

 Sub Match_Example1 () Intervallo ("E2"). Value = WorksheetFunction.Match (End Sub 

Passaggio 5: ora il problema inizia perché non otteniamo il nome esatto della sintassi, ma la sintassi "Arg1, Arg2, Arg3" come questa. Quindi devi essere assolutamente sicuro della sintassi qui.

Il nostro primo argomento è VALORE DI RICERCA, il nostro VALORE DI RICERCA è nella cella D2, quindi seleziona la cella come Intervallo ("D2") .

Codice:

 Sub Match_Example1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, End Sub 

Passaggio 6: il secondo argomento è Table Array, il nostro intervallo di array di tabelle va da A2 ad A10. Quindi seleziona l'intervallo come "Intervallo (" A2: A10 ")"

Codice:

 Sub Match_Example1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, Range ("A2: A10"), End Sub 

Passaggio 7: ora l'argomento finale è TIPO DI PARTITA. Abbiamo bisogno di una corrispondenza esatta, quindi inserisci il valore dell'argomento come zero.

Codice:

 Sub Match_Example1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, Range ("A2: A10"), 0) End Sub 

Eseguendo la macro otterremo la posizione di qualunque sia il nome dell'anno nella cella D2.

Esempio n. 2: corrispondenza VBA da un altro foglio

Supponiamo che lo stesso insieme di dati di cui sopra sia presente su due fogli diversi. Ad esempio, la matrice della tabella è presente nel nome del foglio chiamato "Foglio dati" e il valore di ricerca è presente nel nome del foglio chiamato "Foglio dei risultati".

In questo caso, dobbiamo fare riferimento ai fogli di lavoro con il loro nome prima di fare riferimento agli intervalli. Di seguito è riportato il set di codici con i nomi dei fogli.

Codice:

 Sub Match_Example2 () Sheets ("Result Sheet") .Range ("E2"). Value = WorksheetFunction.Match (Sheets ("Result Sheet") .Range ("D2"). Value, Sheets ("Data Sheet"). Intervallo ("A2: A10"), 0) End Sub 

Esempio # 3 - Funzione Match VBA con loop

Se il risultato che vogliamo in una singola cella, nessun problema, ma se il risultato deve arrivare in più di una cella, allora dobbiamo utilizzare un ciclo VBA per ottenere il risultato in tutte le celle.

Supponi di avere dati come questo.

In questi casi è un compito erculeo scrivere codici lunghi, quindi passiamo ai cicli. Di seguito è riportato il set di codice che farà il lavoro per noi.

Codice:

 Sub Match_Example3 () Dim k As Integer Per k = da 2 a 10 celle (k, 5) .Value = WorksheetFunction.Match (Cells (k, 4) .Value, Range ("A2: A10"), 0) Next k End Sub 

Questo insieme di codici otterrà il risultato in un batter d'occhio.