VBA-wedstrijd - Hoe Match-functie te gebruiken in VBA Excel? (Voorbeelden)

Inhoudsopgave

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, dat wil zeggen in de hoofd 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.

Voorbeeld 1

In VBA kunnen we deze MATCH-formule in Excel gebruiken als een 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. In plaats daarvan krijgen we de syntaxis als "Arg1, Arg2, Arg3" op deze manier. U moet hier dus absoluut zeker zijn van syntaxis.

Ons eerste argument is ZOEKWAARDE. Onze ZOEKWAARDE bevindt zich in de 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 de tafelreeks 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. Een 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, dan 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.

Interessante artikelen...