Teiesugused lugejad aitavad MUO-d toetada. Kui teete ostu meie saidil olevate linkide abil, võime teenida sidusettevõtte komisjonitasu. Loe rohkem.

Vlookup on Exceli oluline funktsioon ja sellest on saanud andmetöötluse oluline osa. See pakub mõningaid funktsioone, mida võite tavaliselt täieliku andmebaasiga seostada.

Aga mis siis, kui soovite seda funktsiooni automatiseerida? Jah, see on võimalik, eriti kui teate, kuidas kasutada Exceli loomulikku automatiseerimiskeelt VBA. Siin on, kuidas saate vlookup-funktsiooni Excel VBA-s automatiseerida.

Vlookupi süntaks

Vlookup-funktsiooni süntaks on üsna lihtne, kuid sellel on neli aspekti, millele peate keskenduma isegi Excel VBA-s automatiseerimisel.

=vlookup (otsingu_väärtus, otsingu_massiiv, veeru_indeks, täpne_vaste/osaline_sobivus)

Funktsiooni argumentidel on järgmine tähendus:

  • lookup_value: See on esmane väärtus, mida soovite otsingumassiivist otsida.
  • lookup_array: Need on lähteandmed, mida lookup_value kasutab viitena.
  • veeru_indeks: Veerg, kust väärtus tagastatakse.
  • instagram viewer
  • täpne_sobivus/partial_match: Kasutage vaste tüübi määramiseks kas 0 või 1.

Andmete ettevalmistamine

Sellel andmestikul on kaks osa: otsingutabel ja sihtkoha andmepunktid.

Otsingutabel koosneb kolmest veerust, mille andmed täidavad väljad Alamkategooria ja Toote nimi:

Sihttabelis on vastavad veerud, millel puuduvad alamkategooria või toote nime andmed. Pange tähele, et selle Tellimuse ID veerus olevad väärtused on ka otsingutabeli samas veerus:

Vlookupi kasutamine otse Exceli arvutustabelis

Sihtveergude B ja C täitmiseks saate seda teha kasutage Exceli vlookup funktsiooni.

Lahtris B2, sisestage järgmine valem:

=VLOOKUP($A2, $F$3:$H$17, 2, 0)

Samamoodi rakus C2, sisestage see valem:

=VLOOKUP($A2, $F$3:$H$17, 3, 0)

Saate lohistada valemi lahtrist B2 alla veeru lõpuni B17. Korrake seda protsessi ka veeru C puhul. Iga järgneva kirje väärtusi värskendatakse automaatselt mõlemas veerus.

Vlookup-funktsioonile edastatavad väärtused on järgmised:

  • A2: otsinguväärtus asub selles lahtris.
  • F3:H17: see koosneb otsinguvahemikust.
  • 2/3: võrdlusveerud, millest väärtus tuua.
  • 0: Tähistab täpset vastet.

Exceli VBA otsingufunktsioon

Vlookup-funktsioonil on palju sarnasusi, olenemata sellest, kas kasutate seda otse Excelis või VBA kaudu. Ükskõik, kas olete andmeridadega tegelev andmeanalüütik või regulaarselt uute toodetega tegelev laohaldur, saate vlookupi kasutamisest kasu saada.

Dünaamilise otsinguvahemikuga töötades on alati parem valemid automatiseerida, et vältida valemite korduvat rakendamist Excelis. Vlookup-funktsiooni automatiseerimisel VBA-s saate teha mitme veeru arvutusi ühe klõpsuga.

1. Tehke nõutav häälestus

Alustage kodeerimisredaktori avamisega (vajutage Alt + F11 või navigeerige lehele Arendaja vahekaart) uues Exceli töövihikus ja lisage koodi kirjutamise alustamiseks moodul. Alamrutiini loomiseks lisage koodiredaktoris kodeerimisakna ülaossa järgmised read:

 Sub vlookup_fn1() End Sub

Alamrutiin on teie VBA-koodi konteiner ja on selle edukaks käitamiseks ülioluline. Alternatiiviks on luua VBA kasutajavorm et muuta kasutajaliides interaktiivsemaks.

2. Deklareerige oma muutujad ja looge oma võrdlusvahemikud

Esiteks peate deklareerima muutuja andmetüübid, kasutades Hämar avaldus:

 Dim i täisarvuna, viimane rida nii pikk

Järgmisena looge a viimane rida muutuja, et salvestada otsinguvahemikus viimase täidetud rea väärtus. Viimase rea funktsioon kasutab lõpp (xldown) funktsioon, et arvutada lõpprea viide määratud vahemikus.

Sel juhul salvestab viimase rea muutuja otsinguvahemiku viimati täidetud reaväärtuse,17.

 lastrow = Sheets("Leht2").Range("F3").Lõpp (xlDown).Rida

Ülaltoodud näites ulatub sihtkoha tabel alates A2:C17, samas kui lähtetabel ulatub alates F2:H17. Vlookup valem vaatab läbi iga veerus A salvestatud väärtuse, otsib selle lähtetabelist üles ja kleepib vastavad kirjed veergudesse B ja C.

Kuid enne tsüklile hüppamist peate salvestama vahemiku väärtused uude muutujasse (minu_vahemik), järgnevalt:

 minu_vahemik = Sheets("Sheet2").Range("F3:H" & lastrow)

Peate selgesõnaliselt määratlema alguslahtri viite (F3) ja lõpu veeru viide (H). VBA lisab otsingumassiivi lõpuleviimiseks automaatselt rea väärtuse.

3. Iga otsinguväärtuse läbimiseks kirjutage tsükkel

Enne tsükli kirjutamist määrake algusrea väärtus, 2. Dünaamiliste elementidega tegelemisel on tsükli algväärtuse määramine oluline. Sihttabelis on 2. rida andmete esimene rida. Muutke seda väärtust, kui teie andmed algavad teisest reast.

 i = 2

Võite kasutada a tee-ajal silmus iga rea ​​töötlemiseks, alustades reast 2 ja lõpetades reast 17. Sarnaselt ülejäänud koodiga on see aspekt dünaamiline; tsükkel töötab seni, kuni tingimus on väär. Kasutage tingimust, et kontrollida praeguse rea esimeses lahtris olevat mittetühja väärtust.

 Do While len (Sheets("Sheet2").Cells (i, 1).value) <> 0

Silmuse sees saate lahtrite täitmiseks kutsuda funktsiooni VLookup:

 Sheets("Sheet2"). Lahtrid (i, 2).Väärtus = _ Rakendus. Töölehe funktsioon. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Väärtus, minu_vahemik, 2, False) Sheets("Sheet2").Cells (i, 3).Väärtus = _ Rakendus. Töölehe funktsioon. VLookup (Sheets("Leht2") _ .Cells (i, 1).Väärtus, minu_vahemik, 3, Väär)

Need avaldused määravad lahtrite väärtuse praeguses reas, vastavalt veergudes 2 ja 3. Nad kasutavad Töölehe funktsioon vastu helistada VLookup funktsioon, edastades vastava väärtuse veerust 1 otsimiseks. Samuti edastavad nad teie varem määratletud vahemiku ja vastava veeru indeksi, millest lõplik väärtus hankida.

Vlookup-kood on valmis, kuid peate siiski suurendama rea ​​muutujat iga kord tsükli ümber:

 i = i + 1

Iga kord, kui tsükkel töötab, suurendab see väärtust i poolt 1. Pidage meeles, et algusrea väärtus on 2 ja juurdekasv toimub iga kord, kui tsükkel jookseb. Kasuta silmus märksõna tsükli koodiploki lõpu määramiseks.

Kui käitate kogu koodi, sisestab see lähtetabelis olevate väärtuste alusel tulemused mõlemasse veergu.

Siin on kogu kood viitamiseks:

 Sub vlookup_fn1() Dim i täisarvuna lastrow = Sheets("Sheet2").Range("F3").End (xlDown).Row my_range = Sheets("Sheet2").Range("F3:H" & viimane rida) i = 2 Do While Len (Sheets("Sheet2"). Lahtrid (i, 1).Väärtus) <> 0 Vea korral Jätka järgmiste lehtedega("Sheet2"). Lahtrid (i, 2).Väärtus = _ Rakendus. Töölehe funktsioon. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Väärtus, minu_vahemik, 2, False) Sheets("Sheet2").Cells (i, 3).Väärtus = _ Rakendus. Töölehe funktsioon. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Value, my_range, 3, False) i = i + 1 LoopEnd Sub

4. Looge koodi käivitamiseks nupp

Kui kood on eemal, saate luua oma Exceli töövihikus nupu, mis käivitab selle ühe klõpsuga. Sisestage eelistatud kujund tühjale Exceli lehele, paremklõpsake sellel ja klõpsake nuppu Määra makro valik.

Valige dialoogiboksis oma alamrutiini nimi ja klõpsake nuppu Okei.

Kui soovite koodi käitada, klõpsake nuppu, et näha, kuidas andmed koheselt täidetakse.

Excel VBA kasutamine otsingufunktsioonide automatiseerimiseks

Excel VBA on paindlik keel, mis on hästi häälestatud automatiseerimise hõlbustamiseks MS Exceli erinevates tahkudes. MS Excel VBA-s on palju võimalusi, alates Exceli funktsioonide automatiseerimisest kuni keerukate pivot-tabelite automaatse loomiseni.

Erinevate Exceli segmentidega töötades saate oma elu lihtsamaks ja tõhusamaks muutmiseks katsetada erinevate võimalustega.