Excel VBA Match-functie

De VBA Match-functie zoekt naar de positie of het rijnummer van de opzoekwaarde in de tabelmatrix, dwz in de excel-tabel. Bijvoorbeeld VLOOKUP, HLOOKUP, MATCH, INDEX, enz. Dit zijn de opzoekfuncties die belangrijker zijn dan andere. Helaas hebben we niet dezelfde functies beschikbaar in VBA om dingen eenvoudiger te maken. We kunnen deze functies echter als werkbladfuncties onder het VBA-script gebruiken om ons leven gemakkelijker te maken.

Vandaag staan ​​we op het punt de MATCH-functie te leren die kan worden gebruikt als een werkbladfunctie onder VBA.

VBA Match heeft hetzelfde gebruik als de Match-formule in Excel. Deze functie in MS Excel VBA vindt een overeenkomst in een array met verwijzing naar de opzoekwaarde en drukt de positie af. Deze functie wordt nuttig wanneer u de gegevens op basis van bepaalde waarden moet evalueren. VBA MATCH is bijvoorbeeld handig als u de salarisgegevens van werknemers hebt en u de numerieke positie van een werknemer in uw gegevens wilt achterhalen die een salaris heeft dat lager is dan / groter dan / gelijk is aan een bepaalde waarde. Het is echt nuttig bij het analyseren van de gegevens en ook een regel code kan de dingen voor u automatiseren.

Syntaxis van Match-functie in Excel VBA

VBA Match heeft de volgende syntaxis:

Waar,

  • Arg1 - Lookup_value - De waarde die u nodig hebt om in een bepaalde array op te zoeken.
  • Arg2 - Lookup_array - een array van rijen en kolommen die mogelijke Lookup_value bevatten.
  • Arg3 - Match_type - Het zoektype met de waarde -1, 0 of 1.

Als match_type = -1 betekent dat de MATCH-functie de kleinste waarde zal vinden die groter is dan of gelijk is aan de opzoekwaarde. Om dit te laten gebeuren, moet de lookup-array in aflopende volgorde worden gesorteerd.

Als match_type = 0 betekent dat de functie MATCH de waarde zal vinden die exact dezelfde is als die van de lookup_value.

Als match_type = +1 betekent dit dat de MATCH-functie de grootste waarde zal vinden die kleiner is dan of gelijk is aan de opzoekwaarde. Om dit te laten gebeuren, moet de lookup_array in oplopende volgorde worden gesorteerd. De standaardwaarde voor het zoektype is +1.

Hoe Excel VBA Match-functie te gebruiken?

We zullen leren hoe we een VBA Match Excel-functie kunnen gebruiken met enkele voorbeelden.

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

VBA Match-functie - Voorbeeld # 1

Stel dat we gegevens hebben zoals hieronder weergegeven:

We moeten zoeken wie van deze lijst een salaris van € 30.000 heeft, samen met een functie in Excel.

Hoewel we in deze gegevensset dit handmatig kunnen configureren, denk dan eens aan een bredere afbeelding, wat als u miljoenen rijen en kolommen hebt?

Volg de onderstaande stappen om de MATCH-functie in VBA te gebruiken.

Stap 1: Definieer een subprocedure door een macro een naam te geven.

Code:

 Sub exmatch1 () Einde Sub 

Stap 2: Nu willen we dat onze uitvoer wordt opgeslagen in cel E2. Begin daarom met het schrijven van de code als Bereik ("E2"). Waarde =

Dit bepaalt het uitvoerbereik voor ons resultaat.

Code:

 Sub exmatch1 () Bereik ("E2"). Waarde = Einde Sub 

Stap 3: Gebruik WorksheetFunction om VBA-functies te kunnen gebruiken.

Code:

 Sub exmatch1 () Bereik ("E2"). Waarde = werkbladfunctie Einde sub 

Stap 4: WorksheetFunction heeft een verscheidenheid aan functies die kunnen worden geopend en gebruikt onder VBA. Plaats na "WorksheetFunction" een punt (.) En dan hebt u toegang tot de functies. Kies de MATCH-functie in de vervolgkeuzelijst.

Code:

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

Stap 5: Geef nu de argumenten aan de MATCH-functie. Zoals Lookup_value. Onze opzoekwaarde wordt opgeslagen in cel D2 zoals weergegeven in de onderstaande schermafbeelding. U kunt er toegang toe krijgen via de MATCH-functie met de Range-functie.

Code:

 Sub exmatch1 () Bereik ("E2"). Waarde = WorksheetFunction.Match (Bereik ("D2"). Waarde, Einde Sub 

Stap 6: Het tweede argument is Lookup_array. Dit is het tabelbereik waarbinnen u de positie van Lookup_value wilt weten. In ons geval is het (B1: B11). Lever deze array met behulp van de functie Bereik.

Code:

 Sub exmatch1 () Bereik ("E2"). Waarde = WorksheetFunction.Match (bereik ("D2"). Waarde, bereik ("B1: B11"), End Sub 

Stap 7: Het laatste argument voor deze code is Match_type. We wilden een exacte overeenkomst hebben voor Opzoekwaarde in gegeven bereik> Geef daarom Nul (0) als een bijpassend argument.

Code:

 Sub exmatch1 () Bereik ("E2"). Waarde = WorksheetFunction.Match (bereik ("D2"). Waarde, bereik ("B1: B11"), 0) Einde Sub 

Stap 8: Voer deze code uit door op F5 of de knop Run te drukken en de uitvoer te bekijken.

U kunt zien in Cel E2, er is een numerieke waarde (6) die de positie van de waarde van cel D2 tot bereik B1: B11 toont.

Voorbeeld # 2 - VBA-matchfunctie met lussen

Het is gemakkelijk wanneer u slechts één waarde moet zoeken in het hele bereik. Maar wat als u de positie voor een aantal cellen moet controleren? Het zou hard zijn voor een persoon die toevoegt om hem te vragen om de afzonderlijke codes voor elke cel te schrijven.

In dergelijke gevallen kan de MATCH-functie worden gebruikt met lus (vooral voor lus in ons geval). Zie de volgende stappen om een ​​idee te krijgen van hoe we de MATCH-functie met lus gebruiken.

Stap 1: Definieer een subprocedure door macro een naam te geven.

Code:

 Sub Voorbeeld 2 () Einde Sub 

Stap 2: Definieer een geheel getal dat de waarde voor meerdere cellen in de lus kan bevatten.

Code:

 Sub Voorbeeld 2 () Dim i As Integer End Sub 

Stap 3: Gebruik de For-lus op het gehele getal om de verschillende opzoekwaarden te gebruiken waarvan de positie kan worden opgeslagen in kolom E.

Code:

 Sub Voorbeeld 2 () Dim i als geheel getal voor i = 2 tot 6 End Sub 

Stap 4: Gebruik nu dezelfde methode die we in voorbeeld 1 hebben gebruikt, alleen in plaats van Bereik, we zullen de functie Cellen gebruiken en een tweedimensionale array (rijen en kolommen) gebruiken in tegenstelling tot het eerste voorbeeld.

Code:

 Subvoorbeeld 2 () Dim i als geheel getal voor i = 2 tot 6 cellen (i, 5). Waarde = WorksheetFunction.Match (cellen (i, 4). Waarde, bereik ("B2: B11"), 0) Volgende i Einde Sub 

Hier, cellen (i, 5). Waarde = slaat de waarde op van de resulterende posities in elke rij van 2 tot 6 (rij i) in kolom E (kolom nummer 5). Onder Match-functie, cellen (i, 4). Waarden controleert voor elke opzoekwaarde die aanwezig is in rij 2 tot 6 in de 4e kolom. Deze opzoekwaarde zocht vervolgens in array B2: B11 in Excel-sheet waar gegevens aanwezig zijn en relatieve posities kunnen worden opgeslagen in elke rij van kolom 5 (kolom E).

Stap 5: Voer deze code uit door tegelijkertijd op F5 of op de knop Run te drukken en het resultaat te bekijken. Het haalt bijna de magie eruit in een stuk code met een enkele regel.

In dit artikel hebben we geleerd hoe we de MATCH-functie onder VBA kunnen gebruiken als een speciaal geval van WorksheetFunction.

Dingen om te onthouden

  • Opzoekwaarde kan een getal / tekst / logische waarde zijn of een celverwijzing naar een getal, tekst of logische waarde.
  • Match_type kan standaard worden beschouwd als 1, indien weggelaten / niet vermeld.
  • Zoals vergelijkbaar met de functie Excel MATCH, geeft VBA MATCH ook de relatieve positie van een opzoekwaarde onder Lookup_array en niet de waarde zelf.
  • Als er geen overeenkomst wordt gevonden, wordt een relatieve Excel-cel gevuld met # N / A.
  • Als de MATCH-functie wordt gebruikt voor tekstwaarden, kan deze geen onderscheid maken tussen kleine letters en hoofdletters. Lalit en lalit zijn bijvoorbeeld hetzelfde. Doe LALIT en Lalit ook.
  • Jokertekens kunnen worden gebruikt als u de exacte overeenkomst vindt (het zoektype is nul). Jokertekens (*) met jokertekens kunnen worden gebruikt om een ​​reeks tekens te achterhalen. Terwijl een vraagteken (?) Kan worden gebruikt om een ​​enkel teken te achterhalen.

Aanbevolen artikelen

Dit is een handleiding voor de VBA Match-functie. Hier bespreken we VBA Match en het gebruik van Excel VBA Match Functie samen met praktische voorbeelden en een downloadbare Excel-sjabloon. U kunt ook onze andere voorgestelde artikelen doornemen -

  1. Volledige gids voor VBA bij fout
  2. Hoe het VBA-nummerformaat te gebruiken?
  3. VBA VLOOKUP-functie met voorbeelden
  4. VBA-functie maken in Excel
  5. Excel Match-functie (voorbeelden)

Categorie: