INDEX MATCH gebruiken in Excel VBA

  • Deel Dit
Hugh West

U kunt gebruik maken van de ingebouwde Excel-werkbladfuncties zoals de VLOOKUP-functie de KIEZEN Functie en de PMT Functie in uw VBA-code en toepassingen. In feite zijn de meeste van de Excel werkbladfuncties zijn toegankelijk en te gebruiken in VBA code . als gebruik INDEX & MATCH werkbladfuncties in Excel VBA code.

Waarom zou je Excel Werkblad functies in uw VBA code Je hoeft ook geen eigen functies te bedenken, tenzij je dat echt nodig hebt, als de functionaliteit er al is. Je hoeft alleen maar de functie te gebruiken die je nodig hebt, omdat die er al is, en dan hoef je het wiel niet opnieuw uit te vinden.

Dus, laten we beginnen met een voorbeeld dat laat zien hoe je INDEX MATCH met Excel VBA.

We gaan de INDEX en MATCH Functies in Excel VBA code Via dit formulier selecteert de gebruiker een naam van de leerling, waarna het bijbehorende geslacht van de leerling en de oogkleur worden opgehaald en geretourneerd.

Download Praktijk Werkboek

Download het oefenwerkboek om zelf te oefenen.

INDEX-MATCH.xlsx

9 eenvoudige stappen om INDEX en MATCH te gebruiken in VBA-code

De INDEX en MATCH Functies worden vaak in combinatie gebruikt in formules, om geavanceerde lookups uit te voeren. De twee in combinatie bieden bepaalde voordelen ten opzichte van VLOOKUP .

Wij hebben reeds in detail besproken hoe u INDEX en MATCH om geavanceerde opzoekingen uit te voeren in een Excel werkboek als een gewone werkbladformule, in een vorige handleiding We gaan nu kijken hoe we de INDEX en MATCH Functies samen in VBA code om een soortgelijke functionaliteit aan de look up te verlenen UserForm die we gaan maken.

Stap 1: INDEX- en MATCH-functies toepassen in dataset

  • We beginnen met twee bladen in onze werkmap met macro's. Het ene is een leeg blad met de naam UserForm het andere is een blad genaamd StudentInformatie die een reeks bevat met namen van studenten, hun overeenkomstige geslacht en oogkleur zoals hieronder aangegeven.

Laten we ons snel herinneren dat als we de INDEX en MATCH Functies in één formule, in het eigenlijke werkblad om ons het geslacht te geven van de naam van de leerling die we willen opzoeken. We zouden de volgende formule gebruiken:

=INDEX(B2:B31, MATCH("Diana Graham", A2:A31, 0))

  • Bij het indrukken van CTRL-ENTER krijgen we de waarde van Vrouwtjes terug, als het geslacht zoals hieronder getoond.

Stap 2: Verander de naam van kolom B in StudentNames

  • We noemen nu de reeks A2: A31 , StudentNamen zoals hieronder aangegeven.

  • Verberg de StudentInformatie blad, door rechts te klikken en te kiezen voor Verberg je. Het is een goed idee om de back-end werkbladen die de informatie bevatten, waarvan u niet wilt dat de gebruiker ze bewerkt of ziet, oppervlakkig te verbergen.

Stap 3: Open Visual Basic-venster

  • Nu het blad UserForm is geactiveerd, gaan we naar Ontwikkelaar> Code> Visual Basic om de Visual Basic Editor (VBE) .
  • Eenmaal in de VBE-interface gaan we naar Insert, UserForm zoals hieronder getoond.

Stap 4: Eigenschappen wijzigen en tekstvakken toevoegen

  • Met behulp van de Eigenschappen Venster zullen we ons formulier hernoemen naar StudentLookup verandert de Caption in Lookup Student Information, verandert de BackColor op lichtblauw, en stel de hoogte in op 300 px en de breedte naar 350 px. Als het eigenschappenvenster niet verschijnt, druk dan op de knop F4 toets op uw toetsenbord om het te zien.

  • We gaan nu een label invoegen met behulp van de Gereedschapskist (als u om een of andere reden de Toolbox niet kunt zien, ga dan naar Beeld, Gereedschapskist ), verander de Caption in Choose a student en we zullen de BackColor op wit in dit geval. We stellen het lettertype in op Georgia , de letterstijl naar vet , de lettergrootte naar 12 en de centrum de tekst uitlijnen. Het gebruikte speciale effect zal de 1- fmSpecialEffectRaised zoals hieronder aangegeven.

  • Nu voegen we een combo box in onder het label. Noem deze combo box cmdStudentName en voor de RowSource , type Studentennamen.

  • Om het effect te zien van het instellen van de RowSource van de combo box, Klik op de Run Sub/UserForm knop.
  • Door het instellen van de RowSource naar het genoemde bereik, wanneer de gebruiker op de vervolgkeuzelijst op het UserForm klikt, toont de combobox automatisch de studentennamen uit het genoemde bereik, zoals hieronder getoond.

  • Sluit het UserForm door op de sluitknop te klikken. Druk op Alt-F11 om terug te gaan naar de VBE .
  • Eenmaal terug in de VBE voeg nog een label toe aan het UserForm (onder het keuzemenu) en verander het Onderschrift naar Geslacht en we zullen de BackColor op wit in dit geval. We stellen het lettertype in op Georgia , de letterstijl naar vet , de lettergrootte naar 12 en de centrum de tekst uitlijnen. Het gebruikte speciale effect zal de 1- fmSpecialEffectRaised zoals hieronder getoond.

  • Maak een tekstvak onder de Geslacht label en noem het txtGender .
  • Toevoegen een ander label genaamd Oog Kleur en een tekstvak met de naam txtEyeColour zoals hieronder aangegeven. Gebruik dezelfde eigenschappen voor het label als voor de twee andere labels die eerder aan het formulier zijn toegevoegd, om ervoor te zorgen dat de UserForm heeft een consistente uitstraling.

  • Nu Selecteer alle controles, toegevoegd aan de UserForm tot nu toe met de controletoets.

  • Centrum horizontaal, zoals hieronder getoond.

Lees meer: Hoe te gebruiken INDEX MATCH formule in Excel (9 voorbeelden)

Vergelijkbare lezingen

  • Excel INDEX MATCH Indien Cel Tekst Bevat
  • Hoe de INDEX-MATCH formule in Excel gebruiken om meerdere resultaten te genereren
  • Indexwedstrijd som meerdere rijen op in Excel (3 manieren)
  • Leer Excel VBA Programmeren & Macro's (Gratis Handleiding - Stap voor Stap)
  • 22 Macro-voorbeelden in Excel VBA

Stap 5: Een knop toevoegen vanuit de Toolbox

  • Volgende, Toevoegen een knop op het formulier met behulp van de Gereedschapskist . Verander de Naam van de knop om cmdLookUp de BackColor tot licht oranje, houd de Tahoma lettertype en verandering de stijl naar vet en tenslotte de Onderschrift van de knop om Kijk op Student Details zoals hieronder aangegeven.

Stap 6: VBA-code invoegen

  • Klik met de rechtermuisknop op , de nieuw toegevoegde knop, en selecteer Bekijk Code .

  • Voer de volgende code in voor de klikgebeurtenis van de knop:

 Dim a Als Variant Dim b Als Variant Dim c Als Variant a = cmdStudentName.Value Sheets("StudentInformation").Activate If a = "" Then b = "" Let txtGender.Text = b c = "" Let txtEyeColour.Text = c Else b = Application.WorksheetFunction.Index(Sheets("StudentInformation").Range("B2:B31"), Application.WorksheetFunction.Match(a, Sheets("StudentInformation").Range("A2:A31"), 0)) c =Application.WorksheetFunction.Index(Sheets("StudentInformation").Range("C2:C31"), Application.WorksheetFunction.Match(a, Sheets("StudentInformation").Range("A2:A31"), 0)) Let txtEyeColour.Text = c End If 

We beginnen met te verklaren drie variabelen en het toewijzen van het variant-gegevenstype aan deze gedeclareerde variant-gegevenstypes. Het variant-gegevenstype is een goed gegevenstype om mee te beginnen. Want bij het werken met werkblad functies Gebruik daarom in het begin het gegevenstype variant.

Later is het raadzaam een van de andere meer specifieke gegevenstypen te gebruiken, zoals geheel getal of string. Voor meer geavanceerde langere code gebruikt het gegevenstype variant het geheugen niet zo efficiënt als de andere gegevenstypen.

Variabele a trekt de waarde uit de optie die de gebruiker selecteert in de drop-down combo box op het UserForm Als er geen selectie is, zijn alle andere tekstvakken leeg .

Als u een studentennaam selecteert uit de combo doos op de UserForm, dan trekt variabele b waarde met behulp van de INDEX Werkblad Functie in combinatie met de MATCH Functie in de VBA code, zoals afgebeeld.

Het zoekt de waarde op met in principe dezelfde syntaxis als de werkbladfunctie. Bij gebruik van werkbladfuncties in VBA de VBA IntelliSense in dit specifieke geval is niet erg intuïtief daarom wordt vertrouwdheid met de syntaxis van werkbladkennis aanbevolen. Variabele c trekt waarde door de INDEX Werkblad Functie in combinatie met de MATCH Functie in de VBA code wanneer de gebruiker een optie uit de combobox selecteert.

Variabele b krijgt waarde van de geslacht kolom in het werkblad, terwijl variabele c haalt de waarde uit de kolom Oogkleur in het werkblad.

Het tekstvak geslacht wordt gevuld met b en het tekstvak voor de oogkleur wordt gevuld met c waarde.

Lees meer: Excel VBA gebeurtenissen (een complete handleiding)

Stap 7: Een opdrachtknop invoegen

  • Ga nu naar het werkblad genaamd UserForm in je werkboek. Formaat het, zoals hieronder getoond, en plaats het beeld verstrekt door ExcelWIKI .

  • Ga naar Developer> Controls> Insert> ActiveX Controls.

  • Plaats een knop zoals afgebeeld.

  • Met de knop geselecteerd, ga naar Ontwikkelaar> Controles> Eigenschappen .

  • Verander de Naam van de knop om cmdShowForm en de Onderschrift naar Kijk op Informatie voor studenten .

Stap 8: Bekijk de opzoekcode

  • Klik met de rechtermuisknop op de knop en selecteer Code bekijken zoals hieronder aangegeven.

  • Voer de volgende code in:
 Private Sub cmdShowForm_Click() StudentLookup.Show End Sub 

Stap 9: Eindresultaat tentoonstellen

  • Stuur terug. aan de werkblad. Zorg ervoor dat de niet aangevinkte Ontwerp Modus .
  • Klik op de knop om het formulier te tonen.

  • Selecteer de naam van een leerling met behulp van de combo box De code geeft automatisch het geslacht en de oogkleur van de leerling.

Vergeet niet om red je werkmap als een werkmap met macro's als je dat nog niet hebt gedaan en daar heb je het, we gebruiken INDEX & MATCH werkbladfuncties in Excel VBA code om een opzoekformulier te maken.

Lees meer: Excel INDEX-MATCH formule om meerdere waarden horizontaal terug te geven

Conclusie

Excel heeft veel nuttige werkbladfuncties die kan worden gebruikt in VBA zoals, met behulp van INDEX & MATCH werkbladfuncties in Excel VBA code. Met deze functies kunt u uw VBA code. Als je al weet hoe ze werken in een standaard Excel werkblad dan is de leercurve niet zo groot door de kennis aan te passen voor VBA Toegang tot de werkbladfuncties, in iemands VBA code kan een echte tijdsbesparing zijn. Omdat men geen aangepaste functies hoeft te ontwikkelen voor functionaliteit die er al is.

Geef gerust commentaar en vertel ons of u werkbladfuncties gebruikt in uw VBA-code en -toepassingen.

Toetsingsgedeelte: Test uw begrip

1) Stel een eenvoudige lijst op in kolom A van drie items, namelijk mandarijnen, wortelen en sinaasappelen, en vermeld vervolgens in de cel naast elk item in kolom B of de items in kolom A fruit of groenten zijn. INDEX & MATCH combinatiefunctie om aan te geven of wortelen fruit of groenten zijn.

2) Gebruik deze dataset van ESPN over de NFL-hoofdcoaches en het team dat ze coachen. Maak een gebruikersformulier waarmee een gebruiker de naam van een bepaalde coach in een tekstvak kan invoeren. Laat vervolgens het team dat hij coacht in een ander tekstvak verschijnen wanneer de gebruiker op verzenden klikt. Gebruik INDEX & MATCH werkbladfunctiecombinatie binnen uw VBA-code.

Hugh West is een zeer ervaren Excel-trainer en -analist met meer dan 10 jaar ervaring in de branche. Hij heeft een bachelor in Accounting en Finance en een master in Business Administration. Hugh heeft een passie voor lesgeven en heeft een unieke lesaanpak ontwikkeld die gemakkelijk te volgen en te begrijpen is. Zijn deskundige kennis van Excel heeft duizenden studenten en professionals over de hele wereld geholpen hun vaardigheden te verbeteren en uit te blinken in hun carrière. Via zijn blog deelt Hugh zijn kennis met de wereld en biedt hij gratis Excel-tutorials en online trainingen aan om individuen en bedrijven te helpen hun volledige potentieel te bereiken.