VBA-wedstrijd

Net zoals we Index en Match in het werkblad hebben als opzoekfuncties, kunnen we ook Match-functies in VBA gebruiken als een opzoekfunctie, deze functie is een werkbladfunctie en is toegankelijk voor de applicatie. werkbladmethode en aangezien het een werkbladfunctie is, zijn de argumenten voor de Match-functie vergelijkbaar met de werkbladfunctie.

VBA Match-functie

VBA Match-functie zoekt naar de positie of het rijnummer van de opzoekwaarde in de tabelmatrix, dwz in de belangrijkste Excel-tabel.

In een werkblad zijn opzoekfuncties een integraal onderdeel van Excel. Enkele van de belangrijke opzoekfuncties zijn VERT.ZOEKEN, HORIZ.ZOEKEN, INDEX en VERGELIJKEN. Helaas hebben we deze functies niet als VBA-functies. We kunnen ze echter gebruiken als werkbladfuncties in VBA.

In dit artikel laat ik je zien hoe je een van de werkbladopzoekfunctie MATCH in VBA als een werkbladfunctie kunt gebruiken.

Hoe de MATCH-functie te gebruiken in VBA Excel?

We laten u een eenvoudig voorbeeld zien van het gebruik van de Excel MATCH-functie in VBA.

U kunt deze VBA Match Excel-sjabloon hier downloaden - VBA Match Excel-sjabloon

Voorbeeld 1

In VBA kunnen we deze MATCH-formule in Excel gebruiken als werkbladfunctie. Volg de onderstaande stappen om de MATCH-functie in VBA te gebruiken.

Stap 1: Maak een subprocedure door een macronaam op te geven.

Code:

 Sub Match_Example1 ()

Stap 2: In cel E2 hebben we het resultaat nodig, dus start de code als Bereik ("E2") Waarde =

Code:

 Sub Match_Example1 () Bereik ("E2") Waarde = End Sub 

Stap 3: In E2 moet de celwaarde het resultaat zijn van de MATCH-formule. Dus om toegang te krijgen tot de VBA MATCH-functie, moeten we eerst de eigenschap "WorksheetFunction" gebruiken. In deze eigenschap krijgen we alle beschikbare werkbladfunctielijsten.

Stap 4: Selecteer hier de MATCH-functie.

Code:

 Sub Match_Example1 () Bereik ("E2") Waarde = WorksheetFunction.Match (End Sub 

Stap 5: Nu begint het probleem omdat we niet de exacte syntaxisnaam krijgen, maar de syntaxis als "Arg1, Arg2, Arg3" zoals deze. U moet hier dus absoluut zeker zijn van syntaxis.

Ons eerste argument is ZOEKWAARDE, onze ZOEKWAARDE bevindt zich in cel D2, dus selecteer de cel als Bereik ("D2") Waarde .

Code:

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

Stap 6: Het tweede argument is Table Array, ons bereik van tabelarray is van A2 tot A10. Dus selecteer het bereik als 'Bereik (' A2: A10 ')'

Code:

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

Stap 7: Nu is het laatste argument MATCH TYPE. We hebben een exacte overeenkomst nodig, dus voer de argumentwaarde in als nul.

Code:

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

Voer de macro uit, we krijgen de positie van de naam van het jaar in cel D2.

Voorbeeld # 2 - VBA-overeenkomst van een ander blad

Veronderstel dat dezelfde set gegevens uit het bovenstaande op twee verschillende bladen staat. De tabelmatrix staat bijvoorbeeld in de bladnaam met de naam "Gegevensblad" en de opzoekwaarde staat in de bladnaam met de naam "Resultaatblad".

In dit geval moeten we werkbladen op naam verwijzen voordat we naar de bereiken verwijzen. Hieronder ziet u de set codes met bladnamen.

Code:

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

Voorbeeld # 3 - VBA-matchfunctie met loops

Als het resultaat dat we in een enkele cel willen, geen probleem is, maar als het resultaat in meer dan één cel moet komen, moeten we een VBA-lus gebruiken om het resultaat in alle cellen te krijgen.

Stel dat u over dergelijke gegevens beschikt.

In deze gevallen is het een enorme taak om lange codes te schrijven, dus schakelen we over op loops. Hieronder staat de set code die het werk voor ons zal doen.

Code:

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

Deze set codes krijgt het resultaat in een oogwenk.