Cum se utilizează INDEX MATCH cu Excel VBA

  • Imparte Asta
Hugh West

Puteți utiliza funcțiile încorporate în foaia de lucru Excel, cum ar fi funcția Funcția VLOOKUP , a Alege funcția și Funcția PMT în codul VBA și în aplicațiile dvs. De fapt, majoritatea aplicațiilor Excel funcțiile din foaia de calcul pot fi accesate și utilizate în VBA cod . Ca și cum ar fi utilizarea INDEX & MATCH Funcțiile foii de calcul în Excel Cod VBA.

De ce ai vrea să folosești Excel Fișa de lucru în cadrul funcțiilor dvs. VBA cod ? Ei bine, pentru a extinde funcționalitatea codului pe care îl folosiți. De asemenea, nu trebuie să vă creați propriile funcții, decât dacă este cu adevărat necesar, dacă funcționalitatea este deja acolo. Practic, tot ce trebuie să faceți este să accesați funcția de care aveți nevoie, deoarece este deja acolo și nu este nevoie să reinventați roata.

Deci, să începem cu un exemplu care arată cum să folosim INDEX MATCH cu Excel VBA.

Vom utiliza INDEX și MATCH Funcții în Excel VBA cod Cu ajutorul formularului, utilizatorul selectează un nume de elev, iar apoi este recuperat și returnat sexul corespunzător al elevului și culoarea ochilor.

Descărcați caietul de practică

Vă rugăm să descărcați caietul de practică pentru a vă exersa.

INDEX-MATCH.xlsx

9 pași simpli pentru a utiliza INDEX și MATCH în codul VBA

The INDEX și MATCH Funcțiile sunt adesea utilizate în combinație în formule, pentru a efectua căutări avansate. Cele două în combinație oferă anumite avantaje față de VLOOKUP .

Am acoperit deja în detaliu, cum se utilizează INDEX și MATCH pentru a efectua căutări avansate într-un Excel caiet de lucru ca o formulă simplă de foaie de calcul, într-o tutorial anterior Acum vom vedea cum să folosim funcția INDEX și MATCH Funcțiile împreună în VBA cod , pentru a conferi o funcționalitate similară cu cea a căutării UserForm pe care o vom crea.

Pasul 1: Aplicarea funcțiilor INDEX și MATCH în setul de date

  • Începem cu două foi în registrul nostru de lucru cu macrouri. Una este o foaie goală numită UserForm , cealaltă este o foaie numită StudentInformation , care conține un interval care arată numele elevilor, sexul corespunzător și culoarea ochilor așa cum se arată mai jos.

Să ne reamintim rapid că dacă am fi vrut să folosim INDEX și MATCH Funcții într-o singură formulă, în foaia de lucru propriu-zisă, pentru a ne oferi genul numelui elevului pe care dorim să îl căutăm. Vom folosi următoarea formulă:

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

  • La apăsarea CTRL-ENTER , obținem valoarea Female returnată, ca sex, după cum se arată mai jos.

Pasul 2: Schimbați numele coloanei B în StudentNames

  • Vom numi acum intervalul A2: A31 , StudentName așa cum se arată mai jos.

  • Ascundeți StudentInformation făcând clic dreapta și selectând Ascunde-te. Este o idee bună să ascundeți în mod superficial foile de lucru din back-end care conțin informațiile pe care nu doriți ca utilizatorul să le modifice sau să le vadă.

Pasul 3: Deschideți fereastra Visual Basic

  • Acum, cu foaia UserForm activată, mergem la Dezvoltator> Cod> Visual Basic pentru a deschide fereastra Editor Visual Basic (VBE) .
  • Odată ajuns în Interfață VBE , mergem la Insert, UserForm, așa cum se arată mai jos.

Pasul 4: Modificarea proprietăților și adăugarea de casete de text

  • Utilizarea Proprietăți Fereastra , vom redenumi formularul nostru în StudentLookup , schimbați Caption în Lookup Student Information, schimbați BackColor în albastru deschis și setați înălțimea la 300 px și lățimea la 350 px. Dacă fereastra Properties nu apare, apăsați butonul F4 de pe tastatură pentru a o vedea.

  • Acum vom insera o etichetă folosind Cutia de instrumente (dacă nu puteți vedea caseta de instrumente, din anumite motive, accesați View, Cutia de instrumente ), schimbați Caption în Choose a student și vom schimba BackColor în alb în acest caz. Vom seta fontul la Georgia , stilul fontului la bold , dimensiunea fontului la 12 , iar centru aliniați textul. Efectul special utilizat va fi cel de 1- fmSpecialEffectRaised așa cum se arată mai jos.

  • Acum vom insera o casetă combo sub etichetă. Numiți această casetă combo cmdStudentName și pentru RowSource , tip Numele elevilor.

  • Pentru a vedea efectul setării parametrilor RowSource din caseta combo, Faceți clic pe alergare Sub/UserFormular buton .
  • Acum, din cauza setării RowSource la intervalul numit, atunci când utilizatorul face clic pe săgeata derulantă de pe UserForm, caseta combinată afișează automat numele elevilor din intervalul numit, așa cum se arată mai jos.

  • Închideți UserForm făcând clic pe butonul de închidere. Apăsați butonul Alt-F11 pentru a se întoarce la VBE .
  • Odată ajuns în VBE , adăugați o altă etichetă la UserForm (sub caseta combo) și modificați eticheta Legenda la Sex și vom schimba BackColor în alb în acest caz. Vom seta fontul la Georgia , stilul fontului la bold , dimensiunea fontului la 12 , iar centru aliniați textul. Efectul special utilizat va fi cel de 1- fmSpecialEffectRaised așa cum se arată mai jos.

  • Creați o căsuță de text sub Sex eticheta , și să o numească txtGender .
  • Adăugați o altă etichetă numită Ochi Culoare și o casetă de text numită txtEyeColour așa cum se arată mai jos. Utilizați aceleași proprietăți pentru această etichetă ca și pentru celelalte două etichete adăugate anterior la formular, pentru a se asigura că eticheta UserForm are un aspect consistent.

  • Acum Selectați toate controalele, adăugate la UserForm , până acum folosind tasta de control.

  • Centru pe orizontală, așa cum se arată mai jos.

Citește mai mult: Cum se utilizează formula INDEX MATCH în Excel (9 exemple)

Lecturi similare

  • Excel INDEX MATCH Dacă celula conține text
  • Cum se utilizează formula INDEX-MATCH în Excel pentru a genera rezultate multiple
  • Indexul de potrivire a sumei mai multor rânduri în Excel (3 moduri)
  • Învățați Excel VBA Programming & Macros (Tutorial gratuit - pas cu pas)
  • 22 Exemple de macro în Excel VBA

Pasul 5: Adăugați un buton din caseta de instrumente

  • Următorul, Adăugați un buton la formular folosind opțiunea Cutia de instrumente . Schimbare la Nume a butonului pentru a cmdLookUp , a BackColor la portocaliu deschis, păstrați Tahoma font și schimbare stilul la bold , în cele din urmă schimbați Legenda a butonului pentru a Uite sus Student Detalii așa cum se arată mai jos.

Pasul 6: Introduceți codul VBA

  • Faceți clic dreapta pe , butonul nou adăugat și selectați Vezi Cod .

  • Introduceți următorul cod pentru evenimentul click pe buton:

 Dim a As Variant Dim b As Variant Dim c As 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 

Începem prin a declara trei variabile și atribuirea tipului de date variantă la aceste tipuri de date variante declarate. Tipul de date variantă este un tip de date bun pentru început, deoarece atunci când se lucrează cu foaie de lucru funcții Prin urmare, atunci când începeți, utilizați tipul de date variantă.

Ulterior, este recomandabil să se utilizeze unul dintre celelalte tipuri de date mai specifice, cum ar fi număr întreg sau șir. Pentru un cod mai avansat și mai lung, tipul de date variantă nu utilizează memoria la fel de eficient ca celelalte tipuri de date.

Variabila a extrage valoarea din opțiunea pe care utilizatorul o selectează în caseta combo derulantă de pe pagina UserForm Dacă nu există nicio selecție, toate celelalte casete de text sunt selectate. gol .

Dacă selectați un nume de elev din lista combo cutie pe UserForm, atunci variabila b capătă valoare cu ajutorul funcției INDEX Fișa de lucru Funcția în combinație cu funcția MATCH Funcția în VBA cod, așa cum se arată.

Aceasta caută valoarea folosind practic aceeași sintaxă ca și funcția din foaia de calcul. Atunci când se utilizează funcții din foaia de calcul în VBA , a VBA IntelliSense în acest caz particular nu este foarte intuitiv , prin urmare, se recomandă familiarizarea cu sintaxa obținută din cunoașterea foilor de lucru. Variabila c extrage valoarea prin utilizarea INDEX Fișa de lucru Funcția în combinație cu MATCH Funcția în VBA atunci când utilizatorul selectează o opțiune din caseta combo.

Variabila b dobândește valoare de la gen coloana în foaia de lucru, în timp ce variabila c obține valoarea din coloana Culoarea ochilor din foaia de calcul.

Caseta de text "sex" este completată cu b iar caseta de text pentru culoarea ochilor este completată cu valoarea c .

Citește mai mult: Evenimente Excel VBA (un ghid complet)

Pasul 7: Introduceți un buton de comandă

  • Acum mergeți la foaia de lucru numită UserForm în registrul de lucru. Format așa cum se arată mai jos, și introduceți imaginea furnizată de ExcelWIKI .

  • Mergeți la Dezvoltator> Controale> Inserare> Controale ActiveX.

  • Introduceți un buton, după cum se arată.

  • Cu butonul selectat, mergeți la Dezvoltator> Controale> Proprietăți .

  • Schimbare la Nume a butonului pentru a cmdShowForm și Legenda la Căutare Informații pentru studenți .

Pasul 8: Vizualizați codul de căutare

  • Faceți clic dreapta pe butonul și selectați Vezi codul așa cum se arată mai jos.

  • Introduceți următorul cod:
 Private Sub cmdShowForm_Click() StudentLookup.Show End Sub 

Pasul 9: Expuneți rezultatul final

  • Return la fișă de lucru. Asigurați-vă că nu este bifat Design Mod .
  • Faceți clic pe butonul pentru a afișa formularul.

  • Selectați numele unui elev folosind caseta combo Codul va returna automat sexul și culoarea ochilor elevului.

Nu uitați să salvați registrul de lucru ca un registru de lucru activat de macro , dacă nu ați făcut-o deja, și iată că folosim INDEX & Funcțiile foii de calcul INDEX & MATCH în Excel Cod VBA pentru a crea un formular de căutare.

Citește mai mult: Excel INDEX-MATCH Formula pentru a returna mai multe valori orizontal

Concluzie

Excel are multe instrumente utile funcții de foaie de lucru , care poate fi utilizat în VBA , ca și cum ar fi, folosind INDEX & MATCH Funcțiile foii de calcul în Excel Cod VBA. Aceste funcții vă vor permite să vă extindeți VBA cod. Dacă știți deja cum funcționează într-un standard Excel foaie de lucru, atunci curba de învățare nu este atât de mare prin adaptarea cunoștințelor pentru VBA Accesarea funcțiilor foii de lucru, în propria fișă de lucru. VBA cod poate fi o adevărată economie de timp, deoarece nu trebuie să se dezvolte funcții personalizate pentru o funcționalitate care există deja.

Vă rugăm să nu ezitați să comentați și să ne spuneți dacă folosiți funcții de foaie de calcul în codul și aplicațiile VBA.

Secțiunea de revizuire: Testați-vă înțelegerea

1) Configurați o listă simplă în coloana A cu trei articole, și anume mandarine, morcovi și portocale, apoi în celula de lângă fiecare articol din coloana B indicați dacă articolele din coloana A sunt fructe sau legume, după ce ați terminat de configurat datele de eșantionare, utilizați funcția INDEX & MATCH funcția de combinație pentru a oferi dacă morcovii sunt fructe sau legume.

2) Folosiți acest set de date de la ESPN despre antrenorii principali din NFL și echipa pe care o antrenează. Creați un formular de utilizator care permite unui utilizator să introducă numele unui anumit antrenor într-o casetă de text. Apoi, echipa pe care o antrenează este afișată într-o altă casetă de text atunci când utilizatorul face clic pe trimiterea. Utilizați INDEX & MATCH combinație de funcții din foaia de calcul în codul VBA.

Hugh West este un trainer și analist Excel cu o experiență de peste 10 ani în industrie. Deține o diplomă de licență în contabilitate și finanțe și un master în administrarea afacerilor. Hugh are o pasiune pentru predare și a dezvoltat o abordare unică de predare care este ușor de urmărit și de înțeles. Cunoștințele sale experte despre Excel au ajutat mii de studenți și profesioniști din întreaga lume să-și îmbunătățească abilitățile și să exceleze în cariera lor. Prin blogul său, Hugh își împărtășește cunoștințele lumii, oferind tutoriale gratuite Excel și instruire online pentru a ajuta persoanele și companiile să-și atingă întregul potențial.