VBA Application.Match - Stap voor stap handleiding met voorbeelden

Excel VBA Application.Match

Een van de beste dingen van VBA is dat het zijn eigen functie heeft en dat het ons ook toegang geeft tot alle werkbladfuncties onder de klasse “Werkbladfunctie”. U moet de MATCH-functie al als een werkbladfunctie hebben gebruikt, maar het is geen VBA-functie, dus we moeten toegang hebben tot de werkbladfunctieklasse. In dit artikel laten we u zien hoe u de MATCH-functie in VBA gebruikt met behulp van de toepassingsmethode.

Korte samenvatting van de MATCH-functie

MATCH is een lookup-functie die zoekt naar de positie van de lookup-waarde in de genoemde lookup-array. Bekijk bijvoorbeeld de onderstaande afbeelding van de gegevens.

In de bovenstaande gegevens hebben we maanden van A2 tot A6, en als we willen weten op welke plaats de maand "Mar" voorkomt, kunnen we de MATCH-functie gebruiken.

Hieronder staat de syntaxis van de MATCH-functie.

MATCH (opzoekwaarde, opzoekmatrix, (zoektype))
  • Lookup Value: Voor welke waarde we zoeken naar de positie in de lookup-array.
  • Lookup Array: In welke array zoeken we naar de positie van de lookup-waarde.
  • (Match Type): hiervoor kunnen we drie argumenten opgeven.
  1. 1 = minder dan
  2. 0 = exacte overeenkomst
  3. -1 = Groter dan

Meestal gebruiken we alleen "0 Exact Match".

Hoe de Application.Match-functie in VBA te gebruiken?

Voorbeeld 1

Bekijk de onderstaande gegevens in Excel.

Op basis van de bovenstaande gegevens moeten we de positie van de maand "maart" vinden in het celbereik van A2 tot A6. Aangezien we resultaten in D2-cellen nodig hebben, start u de code als Bereik ("D2") Waarde =.

Om waarde aan te komen in de D2-cel, moeten we de MATCH-werkbladfunctie gebruiken, dus om deze eerst te openen, hebben we toegang tot het APPLICATION-object en vervolgens tot het WORKSHEET FUNCTION-object.

Voer een punt in om een ​​lijst met werkbladfuncties te zien.

Kies "Match" uit de lijst.

Een van de problemen in VBA bij het gebruik van werkbladfuncties is dat we de exacte syntaxis niet zien zoals we zien met de werkbladfunctie. Dit is een van de redenen waarom we de syntaxis alleen aan het begin hebben uitgelegd.

Het eerste argument is dus de opzoekwaarde, dwz voor welke waarde we de plaats zoeken. In dit geval zoeken we naar de plaats voor "Mar" die zich in de C2-cel bevindt, dus geef de celreferentie op.

Het volgende argument is de lookup-array, dat wil zeggen in welk bereik we de positie van een lookup-waarde zoeken , voor deze aanbodcellen van A2 tot A6.

Het laatste argument is een exacte match, dus geef 0 op.

Code:

Sub Match_Example1 () Bereik ("D2"). Waarde = Application.WorksheetFunction.Match (Bereik ("C2"). Waarde, Bereik ("A2: A6"), 0) End Sub

Ok, we zijn klaar met de formule.

Voer de code door de F5-toets en kijk wat we krijgen.

We hebben het resultaat dus als 3 omdat de waarde "Mar" op de plaats van de 3 e positie staat in het bereik A2 tot A6.

Deze MATCH-functie kan de positie van de opzoekwaarde leveren. De MATCH-functie wordt echter grotendeels gebruikt met de functie VERT.ZOEKEN om het kolomindexnummer te leveren op basis van de kolomkop.

Voorbeeld 2

Nu zullen we zien hoe we MATCH kunnen gebruiken als een ondersteunende functie voor de functie VERT.ZOEKEN.

Bekijk de onderstaande gegevens.

In de bovenstaande tabel kijken we naar de maandverkopen van het jaar 2018 "februari", dus we moeten de functie VERT.ZOEKEN gebruiken. VERT.ZOEKEN is ook een werkbladfunctie, dus open deze op dezelfde manier als we de MATCH-functie hebben geopend.

De opzoekwaarde is G2-cel, dus geef het celadres op.

Code:

Sub Match_Example2() Range("H2").Value = Application.WorksheetFunction.VLookup(Range("G2").Value, End Sub

Table Array will be from A2 to D6.

Code:

Sub Match_Example2() Range("H2").Value = Application.WorksheetFunction.VLookup(Range("G2").Value,Range("A2:D6"), End Sub

Now we need to provide from which column of the table array we are looking for the result, so this will be from the 3rd column. Instead of supplying the column number as 3, let’s use the MATCH function.

Code:

Sub Match_Example2() Range("H2").Value = Application.WorksheetFunction.VLookup(Range("G2").Value, Range("A2:D6"), Application.WorksheetFunction.Match(Range("H1").Value, Range("A1:D1"), 0), 0) End Sub

Dus de MATCH-functie levert het kolomnummer uit het bereik A1 tot D1 voor de maand "Feb". Laten we de code uitvoeren en kijken hoe deze automatisch kolomnummers krijgt.

Alsjeblieft, we hebben een resultaat van kolom nummer 2 dankzij de automatische toevoer van kolomnummers vanuit de MATCH-functie.

Dingen om te onthouden

  • MATCH-functie zoekt naar de positie van de opzoekwaarde in de geselecteerde matrixtabel.
  • De MATCH-functie wordt voornamelijk gebruikt met de VERT.ZOEKEN-functie om het kolomindexnummer automatisch op te geven met behulp van de kolomtitel.
  • De MATCH-functie is beschikbaar als een werkbladfunctie in VBA.

Interessante artikelen...