Funzione di corrispondenza VBA di Excel

La funzione di corrispondenza VBA cerca la posizione o il numero di riga del valore di ricerca nell'array della tabella, ovvero nella tabella Excel principale. Ad esempio, VLOOKUP, HLOOKUP, MATCH, INDEX, ecc. Queste sono le funzioni di ricerca più importanti di altre. Purtroppo, non abbiamo le stesse funzioni disponibili in VBA per semplificare le cose. Tuttavia, possiamo usare queste funzioni come funzioni del foglio di lavoro sotto lo script VBA per semplificarci la vita.

Oggi stiamo per apprendere la funzione MATCH che può essere utilizzata come funzione di foglio di lavoro in VBA.

VBA Match ha lo stesso utilizzo della formula Match in Excel. Questa funzione in MS Excel VBA trova una corrispondenza all'interno di un array con riferimento al valore di ricerca e stampa la sua posizione. Questa funzione diventa utile quando è necessario valutare i dati in base a determinati valori. Ad esempio, VBA MATCH è utile se disponi dei dati salariali dei dipendenti e devi scoprire la posizione numerica di un dipendente nei tuoi dati che ha uno stipendio inferiore a / maggiore di / uguale a un certo valore. È davvero utile per analizzare i dati e anche una riga di codice può automatizzare le cose per te.

Sintassi della funzione Match in Excel VBA

VBA Match ha la sintassi seguente:

Dove,

  • Arg1 - Lookup_value - Il valore che devi cercare in un determinato array.
  • Arg2 - Lookup_array - un array di righe e colonne che contengono possibili Lookup_value.
  • Arg3 - Match_type - Il tipo di corrispondenza che assume il valore -1, 0 o 1.

Se match_type = -1 significa che la funzione MATCH troverà il valore più piccolo che è maggiore o uguale al valore_supupup. Perché ciò accada, lookup_array deve essere ordinato in ordine decrescente.

Se match_type = 0 significa che la funzione MATCH scoprirà il valore esattamente uguale a quello del lookup_value.

Se match_type = +1 significa che la funzione MATCH scoprirà il valore più grande che è minore o uguale al valore_supupup. Perché ciò accada, lookup_array deve essere ordinato in ordine crescente. Il valore predefinito per il tipo di corrispondenza è +1.

Come utilizzare la funzione di corrispondenza VBA di Excel?

Impareremo come utilizzare una funzione VBA Match Excel con alcuni esempi.

Puoi scaricare questo modello di corrispondenza VBA Excel qui - Modello di corrispondenza VBA Excel

VBA Match Function - Esempio n. 1

Supponiamo di avere i dati come mostrato di seguito:

Dobbiamo trovare chi da questo elenco ha uno stipendio di € 30.000 insieme a una posizione in Excel.

Sebbene in questo set di dati possiamo configurarlo manualmente, ti preghiamo di pensare a un'immagine più ampia, e se avessi milioni di righe e colonne?

Seguire i passaggi seguenti per utilizzare la funzione MATCH in VBA.

Passaggio 1: definire una procedura secondaria assegnando un nome alla macro.

Codice:

 Sub exmatch1 () End Sub 

Step 2: Ora, vogliamo che il nostro output sia archiviato nella cella E2. Pertanto, iniziare a scrivere il codice come intervallo ("E2"). Valore =

Questo definisce l'intervallo di output per il nostro risultato.

Codice:

 Sub exmatch1 () Range ("E2"). Valore = End Sub 

Passaggio 3: utilizzare WorksheetFunction per poter utilizzare le funzioni VBA.

Codice:

 Sub exmatch1 () Range ("E2"). Value = WorksheetFunction End Sub 

Passaggio 4: WorksheetFunction ha una varietà di funzioni a cui è possibile accedere e utilizzare in VBA. Dopo "WorksheetFunction", inserisci un punto (.) E sarai in grado di accedere alle funzioni. Scegli la funzione MATCH dall'elenco a discesa.

Codice:

 Sub exmatch1 () Range ("E2"). Value = WorksheetFunction.Match End Sub 

Passaggio 5: ora, dai gli argomenti alla funzione MATCH. Come Lookup_value. Il nostro Lookup_value è memorizzato nella cella D2 come mostrato nell'immagine seguente. È possibile accedervi tramite la funzione MATCH utilizzando la funzione Range.

Codice:

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

Passaggio 6: il secondo argomento è Lookup_array. Questo è l'intervallo di tabelle all'interno del quale si desidera scoprire la posizione di Lookup_value. Nel nostro caso, lo è (B1: B11). Fornire questo array utilizzando la funzione Range.

Codice:

 Sub exmatch1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, Range ("B1: B11"), End Sub 

Passaggio 7: L'ultimo argomento per risolvere questo codice è Match_type. Volevamo avere una corrispondenza esatta per Lookup_value in un determinato intervallo> Pertanto, dare Zero (0) come argomento corrispondente.

Codice:

 Sub exmatch1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, Range ("B1: B11"), 0) End Sub 

Passaggio 8: eseguire questo codice premendo F5 o il pulsante Esegui e vedere l'output.

Puoi vedere nella cella E2, c'è un valore numerico (6) che mostra la posizione del valore dalla cella D2 attraverso l'intervallo B1: B11.

Esempio n. 2 - Funzione di corrispondenza VBA con loop

È facile quando hai un solo valore da cercare nell'intero intervallo. Ma cosa succede se è necessario controllare la posizione per un numero di celle? Sarebbe duro per una persona che sta aggiungendo chiedergli di scrivere i codici separati per ogni cella.

In questi casi, la funzione MATCH può essere utilizzata con loop (specialmente For loop nel nostro caso). Vedere i passaggi seguenti per farsi un'idea di come utilizziamo la funzione MATCH con loop.

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

Codice:

 Esempio secondario2 () Fine Sottotitolo 

Passaggio 2: definire un numero intero che può contenere il valore per più celle nel ciclo.

Codice:

 Esempio secondario 2 () Dim i come numero intero finale 

Passaggio 3: utilizzare il ciclo For sull'intero per utilizzare i diversi valori di ricerca la cui posizione può essere memorizzata nella colonna E.

Codice:

 Esempio secondario2 () Dim i come numero intero Per i = da 2 a 6 Fine Sottotitolo 

Passo 4: Ora, usa lo stesso metodo che abbiamo usato nell'esempio 1, invece di Range, useremo la funzione Celle e useremo un array bidimensionale (Righe e colonne) in contrasto con il primo esempio.

Codice:

 Esempio secondario2 () Dim i come numero intero per i = da 2 a 6 celle (i, 5) .Value = WorksheetFunction.Match (Cells (i, 4) .Value, Range ("B2: B11"), 0) Next i End Sub 

Qui, Cells (i, 5) .Value = memorizza il valore delle posizioni risultanti in ogni riga da 2 a 6 (riga i) nella colonna E (colonna numero 5). Sotto la funzione Match, Cells (i, 4) .Values ​​controlla per ogni Lookup_value presente nelle righe da 2 a 6 nella 4a colonna. Questo valore di ricerca è stato quindi cercato nell'Array B2: B11 nel foglio Excel in cui sono presenti dati e le posizioni relative possono essere memorizzate in ciascuna riga della colonna 5 (colonna E).

Passaggio 5: eseguire questo codice premendo contemporaneamente il tasto F5 o il pulsante Esegui e vedere il risultato. Quasi tirerà fuori la magia in un pezzo di codice con una sola riga.

In questo articolo, abbiamo imparato come utilizzare la funzione MATCH in VBA come caso speciale di WorksheetFunction.

Cose da ricordare

  • Lookup_value può essere un numero / testo / valore logico o può essere un riferimento di cella a un numero, testo o valore logico.
  • Per impostazione predefinita, Match_type può essere considerato come 1, se omesso / non menzionato.
  • Analogamente alla funzione MATCH di Excel, VBA MATCH fornisce anche la posizione relativa di un valore di ricerca in Lookup_array e non il valore stesso.
  • Se non viene trovata una corrispondenza, una cella di Excel relativa verrà riempita con # N / A.
  • Se si utilizza la funzione MATCH sui valori di testo, non è in grado di distinguere tra lettere minuscole e maiuscole. Ad esempio, Lalit e lalit sono uguali. Così fanno LALIT e lalit.
  • I caratteri jolly possono essere utilizzati se si trova la corrispondenza esatta (ovvero il tipo di corrispondenza è zero). L'asterisco di caratteri jolly (*) può essere utilizzato per scoprire una serie di caratteri. Mentre un punto interrogativo (?) Può essere utilizzato per scoprire un singolo personaggio.

Articoli consigliati

Questa è una guida alla funzione Match VBA. Qui discutiamo VBA Match e come usare la funzione VBA Match di Excel insieme ad esempi pratici e template Excel scaricabili. Puoi anche consultare i nostri altri articoli suggeriti:

  1. Guida completa a VBA in caso di errore
  2. Come utilizzare il formato numerico VBA?
  3. VBA VLOOKUP Funzione con esempi
  4. Creazione della funzione VBA in Excel
  5. Funzione di corrispondenza di Excel (esempi)

Categoria: