Indholdsfortegnelse
I MS Excel har vi ofte brug for at søge eller finde værdier i datasættet. Det kan være at finde data i rækker eller kolonner. Heldigvis tilbyder Excel forskellige funktioner og formler til at udføre denne slags opgaver. Ved hjælp af Excel VBA-kode kan vi automatisere denne opgave med at søge eller finde værdier. I denne artikel vil vi se forskellige måder at finde værdi i en kolonne i Excel VBA.
Download arbejdsbog til øvelser
Find værdi i kolonne.xlsm6 eksempler på VBA til at finde værdi i kolonne i Excel
Lad os have et datasæt med produktoplysninger med deres Produkt ID , Mærke , Model , Pris pr. enhed , og Ordre-ID . Vores opgave er at finde ud af, hvilken matchede Ordre-ID Vores opgave er nu at finde ud af Ordre-ID i forbindelse med den Produkt ID .
1. Find værdi i kolonne ved hjælp af VBA Find-funktionen
I det første eksempel bruger vi Find-funktion i VBA for at finde en værdi i en kolonne.
📌 Trin:
- Gå til arknavnet nederst på arket.
- Tryk på musens højre knap.
- Vælg den Se kode fra listen.
- VBA-vinduet åbnes. Vælg derefter Modul fra den Indsæt mulighed
- Skriv nu følgende kode i VBA-konsollen
Sub Find_Value() Dim ProductID As Range Range Range("D4").ClearContents Set ProductID = Range("B8:B19").Find(What:=Range("C4").Value, _ LookIn:=xlValues, LookAt:=xlWhole) If Not ProductID Is Nothing Then Range("E5").Value = ProductID.Offset(, 4).Value Else MsgBox "No Matched Data Found !!!" End If End Sub
- Indsæt nu en knap i datasættet.
- Gå til Udvikler fanebladet.
- Vælg Knap ( Kontrol af formularer ) fra den Indsæt sektion.
- Angiv et vilkårligt navn på knappen. Jeg giver den f.eks. Søg på .
- Tildel koden til denne knap.
- Vælg knappen, og tryk på højre museknap.
- Vælg Tildel makro fra listen.
- Vælg den ønskede makro fra Tildel makro vindue.
- Derefter skal du trykke på OK .
- Skriv nu en hvilken som helst Produkt ID og klik på den Søg på knap.
Vi kan se, at der ikke vises noget match, da dette produktnummer ikke er på listen.
- Sagt på en anden måde Produkt ID og tryk igen på Søg på knap.
Vi får ordrenummeret for den givne Produkt ID .
Læs mere: Sådan får du celleværdi efter række og kolonne i Excel VBA
2. VBA til at finde værdi fra forskellige regneark
I dette afsnit vil vi gøre det samme som ovenfor, men for forskellige regneark. Lad os antage, at vores produktoplysninger er i Ark 2 , og søgefeltet er i Ark 3 Nu vil vi skrive VBA-koden, så vi kan søge efter ordre-ID ved hjælp af produkt-ID fra Ark 3 .
Ark 2:
Ark3:
📌 Trin:
- Følg de samme trin fra trin 1 til trin 2 fra den foregående metode for at åbne VBA-konsollen
- Skriv nu følgende kode i VBA-konsollen
Sub Find_Value_from_worksheets() Dim rng As Range Dim ProductID As String Dim rownumber As Long ProductID = Sheet3.Cells(4, 3) Set rng = Sheet2.Columns("B:B").Find(What:=ProductID, _ LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, _ SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) rownumber = rng.Row Sheet3.Cells(5, 5).Value = Sheet2.Cells(rownumber, 6).Value End Sub
- Indsæt nu igen en knap som den foregående.
- Derefter tildeles makrokoden til knappen.
- Indtast en hvilken som helst Produkt ID og klik på den Udfør knap
Læs mere: Opslag af værdi i kolonne og returnering af værdien af en anden kolonne i Excel
3. Find og marker værdien i kolonnen
Lad os se, hvordan vi kan finde frem til værdier fra en kolonne ved at markere dem. Lad os i den forbindelse antage det samme datasæt som ovenfor med en ekstra kolonne ved navn Leveringsstatus Nu er det vores opgave at markere værdierne i Leveringsstatus kolonne, som er I vente .
📌 Trin:
- Følg det samme trin fra trin 1 til trin 2 som den foregående metode til at åbne VBA-konsollen
- Skriv nu følgende kode i VBA-konsollen
Sub Find_og_Mark() Dim strAddress_First As String Dim rngFind_Value As Range Dim rngSrch As Range Dim rng_Find As Range Set rng_Find = ActiveSheet.Range("G1:G16") Set rngSrch = rng_Find.Cells(rng_Find.Cells.Count) Set rngFind_Value = rng_Find.Find("Pending", rngSrch, xlValues) If Not rngFind_Value Is Nothing Then strAddress_First = rngFind_Value.Address rngFind_Value.Font.Color = vbRed Do SetrngFind_Value = rng_Find.FindNext(rngFind_Value) rngFind_Value.Font.Color = vbRed Loop Until rngFind_Value.Address = strAddress_First End If End Sub
- Gå nu til regnearket, og kør koden.
- Se resultatet i tabellen.
Læs mere: Sådan finder du den højeste værdi i Excel-kolonnen (4 metoder)
4. VBA til at finde værdier i kolonne ved hjælp af wildcards
Til sidst vil vi se, hvordan vi kan søge eller finde værdier i kolonner ved hjælp af wildcard-tegn i Excel VBA. Igen vil vi bruge det samme datasæt som ovenfor til denne metode. Vores opgave er at finde ud af produktpriser ved hjælp af deres model. Vi kan enten skrive det fulde navn eller sidste/første tegn i Produkt ID .
📌 Trin:
- Følg det samme trin fra trin 1 til trin 2 som den foregående metode til at åbne VBA-konsollen
- Skriv nu følgende kode i VBA-konsollen
Sub Find_Using_Wildcards() Set myerange = Range("B5:G16") Set ID = Range("D19") Set Price = Range("F20") Price.Value = Application.WorksheetFunction.VLookup _ ("*" & Range("D19") & "*", myerange, 4, False) End Sub
- Igen indsætter du en knap som den foregående.
- Tilknyt nu makrokoden til knappen.
- Indtast nu en eventuel delvis Produkt ID og tryk på Udfør knap.
Læs mere: Sådan finder du den laveste værdi i en Excel-kolonne (6 måder)
5. Excel VBA til at finde den maksimale værdi i kolonnen
Her ønsker vi at finde den maksimale værdi af en kolonne ved hjælp af VBA-koden.
📌 Trin:
- Vi ønsker at finde ud af den maksimale pris.
- Indsæt nu følgende VBA-kode i et nyt modul.
Sub Column_Max() Dim range_1 As Range Set range_1 = Application.InputBox(prompt:="Select Range", Type:=8) Max_Column = WorksheetFunction.Max(range_1) MsgBox Max_Column End Sub
- Derefter skal du trykke på F5 knappen for at køre VBA-koden.
- Input vises.
- Vælg området fra datasættet.
- Endelig skal du trykke på OK knap.
Vi kan se, at den maksimale værdi vises i dialogboksen.
6. Excel VBA til at finde den sidste værdi i kolonnen
Her ønsker vi at kende værdien af den sidste række eller celle i en bestemt kolonne. Vi ønsker f.eks. at kende det sidste produkt fra kolonnen Produkt
📌 Trin:
- Indtast den VBA nedenstående kode på modulet.
Sub last_value() Dim L_Row As Long L_Row = Cells(Rows.Count, "B").End(xlUp).Row MsgBox Cells(L_Row, 2).Value End Sub
- Kør derefter koden ved at trykke på F5 knap.
Den sidste værdi vises i dialogboksen.
Læs mere: Sådan finder du sidste forekomst af en værdi i en kolonne i Excel (5 metoder)
Ting at huske
Nogle almindelige fejl:
- Fejl: En værdi ad gangen. Fordi den FIND metoden kan kun finde én værdi ad gangen.
- Fejl: #NA på VLOOKUP Hvis den søgte værdi ikke findes i det givne datasæt, returnerer denne funktion følgende #NA fejl.
- Range("Cell_Number").ClearContents bruges til at slette den tidligere værdi fra cellen. Ellers skal den tidligere værdi fjernes manuelt.
Konklusion
Dette er nogle måder at finde værdier i kolonner ved hjælp af VBA-kode i Excel. Jeg har vist alle metoderne med deres respektive eksempler, men der kan være mange andre gentagelser. Jeg har også diskuteret de grundlæggende principper for de anvendte funktioner. Hvis du har en anden metode til at opnå dette, er du velkommen til at dele den med os. Besøg vores hjemmeside ExcelWIKI for flere interessante artikler om Excel.