Vlookup er en væsentlig funktion i Excel og er blevet en vital del af databehandling. Det giver nogle af de funktioner, du normalt forbinder med en komplet database.
Men hvad hvis du vil automatisere denne funktion? Ja, det er muligt, især hvis du ved, hvordan du bruger Excels native automatiseringssprog, VBA. Sådan kan du automatisere vlookup-funktionen i Excel VBA.
Syntaksen af Vlookup
Vlookup-funktionens syntaks er ret enkel, men den har fire aspekter, du skal fokusere på, selv mens du automatiserer den i Excel VBA.
=vlookup (opslagsværdi, opslagsmatrix, kolonneindeks, nøjagtig_match/delvis_match)
Funktionens argumenter har følgende betydning:
- opslagsværdi: Dette er den primære værdi, du vil slå op fra opslagsarrayet.
- opslag_array: Dette er kildedataene, som lookup_value vil bruge som reference.
- kolonneindeks: Kolonne at returnere værdien fra.
- eksakt_match/delvis_match: Brug enten 0 eller 1 til at bestemme matchtypen.
Dataforberedelse
Dette datasæt har to dele: en opslagstabel og destinationsdatapunkterne.
Opslagstabellen består af tre kolonner med data, der udfylder felterne underkategori og produktnavn:
Destinationstabellen har matchende kolonner uden data om underkategori eller produktnavn. Bemærk, at værdierne i dens ordre-id-kolonne også er til stede i den samme kolonne i opslagstabellen:
Brug af Vlookup direkte i et Excel-regneark
For at udfylde destinationskolonnerne, B og C, kan du brug Excels vlookup-funktion.
I celle B2, indtast følgende formel:
=VLOOKUP($A2, $F$3:$H$17, 2, 0)
Tilsvarende i celle C2, indtast denne formel:
=VLOOKUP($A2, $F$3:$H$17, 3, 0)
Du kan trække formlen ned fra celle B2 indtil kolonnens slutning, B17. Gentag denne proces også for kolonne C. Værdierne for hver efterfølgende post opdateres automatisk i begge kolonner.
Værdierne du sender til vlookup-funktionen er:
- A2: Opslagsværdien er i denne celle.
- F3:H17: Dette består af opslagsområdet.
- 2/3: Referencekolonnerne, som værdien skal hentes fra.
- 0: Angiver et nøjagtigt match.
Excel VBAs Vlookup-funktion
Vlookup-funktionen har mange ligheder, uanset om du bruger den direkte i Excel eller via VBA. Uanset om du er en dataanalytiker, der beskæftiger sig med rækker af data, eller en lagerbestyrer, der beskæftiger sig med nye produkter regelmæssigt, kan du drage fordel af at bruge vlookup.
Når du arbejder med et dynamisk opslagsområde, er det altid bedst at automatisere dine formler for at undgå at anvende formler gentagne gange i Excel. Ved at automatisere din Vlookup-funktion i VBA kan du udføre multi-søjleberegninger med et enkelt klik.
1. Udfør den påkrævede opsætning
Start med at åbne kodningseditoren (tryk Alt + F11 eller naviger til Udvikler fane) i en ny Excel-projektmappe og tilføj et modul for at begynde at skrive din kode. I kodeeditoren skal du tilføje følgende linjer øverst i kodningsvinduet for at oprette en underrutine:
Sub vlookup_fn1()End Sub
Underrutinen er en beholder til din VBA-kode og er afgørende for at køre den med succes. Et alternativ er at oprette en VBA-brugerformular for at gøre din brugergrænseflade mere interaktiv.
2. Deklarer dine variabler og opret dine referenceintervaller
Først skal du erklære de variable datatyper ved hjælp af Svag udmelding:
Dim i som heltal, sidste række så lang
Opret derefter en sidste række variabel, for at gemme værdien af den sidst udfyldte række inden for dit opslagsområde. Lastrow-funktionen bruger ende (xldown) funktion til at beregne slutrækkereferencen inden for det angivne interval.
I dette tilfælde gemmer lastrow-variablen opslagsområdets sidst udfyldte rækkeværdi,17.
lastrow = Sheets("Sheet2").Range("F3").End (xlDown).Række
I ovenstående eksempel strækker destinationstabellen sig fra A2:C17, mens kildetabellen strækker sig fra F2:H17. Vlookup-formlen vil gennemgå hver værdi, der er gemt i kolonne A, slå den op i kildetabellen og indsætte de matchende poster i kolonne B og C.
Men før du hopper ind i løkken, skal du gemme områdeværdierne i en ny variabel (mit_område), som følger:
my_range = Sheets("Sheet2").Range("F3:H" & lastrow)
Du skal udtrykkeligt definere startcellereferencen (F3) og slutkolonnens reference (H). VBA tilføjer automatisk rækkeværdien for at fuldføre opslagsarrayet.
3. Skriv en sløjfe for at gå gennem hver opslagsværdi
Før du skriver løkken, skal du definere startrækkeværdien, 2. Det er vigtigt at definere en startværdi for din loop, da du har at gøre med dynamiske elementer. I destinationstabellen er række 2 den første række af dataene. Skift denne værdi, hvis dine data starter i en anden række.
i = 2
Du kan bruge en gøre imens sløjfe for at behandle hver række, startende ved række 2 og slutter ved række 17. Ligesom resten af koden er dette aspekt dynamisk; løkken vil køre, indtil betingelsen er falsk. Brug betingelsen til at kontrollere for en ikke-tom værdi i den første celle i den aktuelle række.
Do While len (Sheets("Sheet2").Cells (i, 1).value) <> 0
Inde i løkken kan du kalde funktionen VLookup for at udfylde cellerne:
Sheets("Sheet2").Celler (i, 2).Værdi = _ Anvendelse. Arbejdsark Funktion. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Value, my_range, 2, False) Sheets("Sheet2").Cells (i, 3).Value = _ Application. Arbejdsark Funktion. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Value, my_range, 3, False)
Disse udsagn angiver værdien af cellerne i den aktuelle række i henholdsvis kolonne 2 og 3. De bruger Arbejdsark Funktion genstand for at kalde VOpslag funktion ved at overføre den tilsvarende værdi fra kolonne 1 for at søge efter. De passerer også det interval, du definerede tidligere, og indekset for den relevante kolonne for at hente den endelige værdi fra.
Vlookup-koden er klar, men du skal stadig øge rækkevariablen hver gang rundt i løkken:
i = i + 1
Hver gang løkken kører, øger den værdien af jeg inden 1. Husk, startrækkeværdien er 2, og stigningen sker hver gang løkken kører. Brug sløjfe nøgleord for at indstille slutningen af løkkens kodeblok.
Når du kører hele koden, vil den udfylde resultaterne i begge kolonner baseret på værdierne i kildetabellen.
Her er hele koden til reference:
Sub vlookup_fn1() Dim i As Integer lastrow = Sheets("Sheet2").Range("F3").End (xlDown).Row my_range = Sheets("Sheet2").Range("F3:H" & lastrow) i = 2 Gør Mens Len (Sheets("Sheet2").Celler (i, 1).Value) <> 0 Ved fejl Genoptag Næste Sheets("Sheet2").Celler (i, 2).Værdi = _ Ansøgning. Arbejdsark Funktion. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Value, my_range, 2, False) Sheets("Sheet2").Cells (i, 3).Value = _ Application. Arbejdsark Funktion. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Value, my_range, 3, False) i = i + 1 LoopEnd Sub
4. Opret en knap for at køre koden
Med koden af vejen, kan du oprette en knap i din Excel-projektmappe for at køre den med et enkelt klik. Indsæt din foretrukne form på et tomt Excel-ark, højreklik på det, og klik på Tildel makro mulighed.
I dialogboksen skal du vælge navnet på din underrutine og klikke på Okay.
Når du vil køre din kode, skal du klikke på knappen for at se, hvordan dataene udfyldes med det samme.
Brug af Excel VBA til at automatisere opslagsfunktioner
Excel VBA er et fleksibelt sprog, som er velafstemt til at gøre automatisering lettere inden for MS Excels forskellige facetter. Der findes mange muligheder i MS Excel VBA, lige fra automatisering af Excel-funktioner til automatisk oprettelse af omfattende pivottabeller.
Når du arbejder med forskellige Excel-segmenter, kan du eksperimentere med forskellige muligheder for at gøre dit liv lettere og mere effektivt.