VBA Match - Cum se folosește funcția de potrivire în VBA Excel? (Exemple)

La fel cum avem Index și Match în foaia de lucru ca funcții de căutare, putem folosi și funcții de potrivire în VBA ca funcție de căutare, această funcție este o funcție de foaie de lucru și este accesată de aplicație. metoda foii de lucru și, deoarece este o funcție a foii de lucru, argumentele pentru funcția Match sunt similare cu funcția de foaie de lucru.

Funcția de potrivire VBA

Funcția VBA Match caută poziția sau numărul rândului valorii de căutare în matricea de tabele, adică în tabelul excel principal.

Într-o foaie de lucru, funcțiile de căutare fac parte integrantă din excel. Unele dintre funcțiile importante de căutare sunt VLOOKUP, HLOOKUP, INDEX și MATCH. Din păcate, nu avem aceste funcții ca funcții VBA. Cu toate acestea, le putem folosi ca funcții de foaie de lucru în VBA.

În acest articol, vă voi arăta cum să utilizați una dintre funcțiile de căutare a foii de lucru MATCH în VBA ca funcție de foaie de lucru.

Cum se folosește funcția MATCH în VBA Excel?

Vă vom arăta un exemplu simplu de utilizare a funcției Excel MATCH în VBA.

Exemplul nr. 1

În VBA, putem folosi această formulă MATCH în Excel ca funcție de foaie de lucru. Urmați pașii de mai jos pentru a utiliza funcția MATCH în VBA.

Pasul 1: Creați o subprocedură dând un nume de macro.

Cod:

Sub Match_Example1 ()

Pasul 2: În celula E2, avem nevoie de rezultat, așa că începeți codul ca Range („E2”). Valoare =

Cod:

Sub Match_Example1 () Range ("E2"). Valoare = End Sub

Pasul 3: În E2, valoarea celulei ar trebui să fie rezultatul formulei MATCH. Deci, pentru a accesa funcția VBA MATCH, trebuie să folosim mai întâi proprietatea „WorksheetFunction”. În această proprietate, vom obține toată lista de funcții a foii de lucru disponibile.

Pasul 4: Selectați funcția MATCH aici.

Cod:

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

Pasul 5: Acum, problema începe deoarece nu primim numele sintaxei exacte. Mai degrabă, obținem sintaxa ca „Arg1, Arg2, Arg3” ca aceasta. Deci, trebuie să fii absolut sigur de sintaxe aici.

Primul nostru argument este VALOAREA CAUTĂRII. Valoarea noastră de căutare se află în celula D2, deci selectați celula ca Range („D2”) .

Cod:

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

Pasul 6: Al doilea argument este Table Array. Gama noastră de tabele este de la A2 la A10. Așadar, selectați gama ca „Gama („ A2: A10 ”)”

Cod:

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

Pasul 7: Acum, argumentul final este TIP DE MATCH. Avem nevoie de o potrivire exactă, așa că introduceți valoarea argumentului ca zero.

Cod:

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

Rulați macrocomanda, vom obține poziția oricărui nume de an din celula D2.

Exemplul 2 - VBA Match dintr-o altă foaie

Să presupunem că același set de date din cele de mai sus se află pe două foi diferite. De exemplu, matricea de tabele este acolo în numele foii numite „Foaie de date”, iar valoarea de căutare este acolo în numele foii numită „Foaie de rezultate”.

În acest caz, trebuie să referim foile de lucru după numele acestuia înainte de a ne referi la intervale. Mai jos este setul de coduri cu nume de foi.

Cod:

Sub Match_Example2 () Foi ("Foaia de rezultate"). Interval ("E2"). Value = WorksheetFunction.Match (Foi ("Foaia de rezultate"). Interval ("D2"). Valoare, Foi ("Foaie de date"). Interval ("A2: A10"), 0) Sfârșit Sub

Exemplul # 3 - Funcția de potrivire VBA cu bucle

Dacă rezultatul pe care îl dorim într-o singură celulă, atunci nu există nicio problemă, dar dacă rezultatul trebuie să vină în mai multe celule, atunci trebuie să folosim o buclă VBA pentru a obține rezultatul în toate celulele.

Să presupunem că aveți date de acest gen.

În aceste cazuri, este o sarcină herculeană să scriem coduri lungi, așa că trecem la bucle. Mai jos este setul de cod care va face treaba pentru noi.

Cod:

Sub Match_Example3 () Dim k Întreg pentru k = 2 până la 10 celule (k, 5). Valoare = WorksheetFunction.Match (Celule (k, 4). Valoare, interval ("A2: A10"), 0) Următorul k Sfârșit Sub

Acest set de coduri va obține rezultatul într-o clipită.

Articole interesante...