Excel VBA för att hitta ett värde i en kolumn (6 lämpliga exempel)

  • Dela Detta
Hugh West

I MS Excel behöver vi ofta söka eller hitta värden i datamängden. Det kan vara att hitta data i rader eller kolumner. Som tur är tillhandahåller Excel olika funktioner och formler för att utföra dessa typer av uppgifter. Med hjälp av Excel VBA-kod kan vi automatisera denna uppgift att söka eller hitta värden. I den här artikeln kommer vi att se olika sätt att hitta värdet i en kolumn i Excel VBA.

Ladda ner övningsboken

Hitta värde i kolumn.xlsm

6 exempel på VBA för att hitta värdet i en kolumn i Excel

Låt oss ha ett dataset med produktinformation med deras Produkt-ID , Varumärke , Modell , Pris per enhet , och Beställnings-ID . Vår uppgift är att ta reda på den matchade Beställnings-ID Vår uppgift är nu att ta reda på Beställnings-ID som är kopplade till Produkt-ID .

1. Hitta värdet i kolumnen med hjälp av VBA Find-funktionen

I det första exemplet använder vi Hitta funktion i VBA för att hitta ett värde i en kolumn.

📌 Steg:

  • Gå till arknamnet längst ner på arket.
  • Tryck på höger musknapp.
  • Välj den Visa kod från listan.

  • VBA-fönstret öppnas. Välj sedan Modul från Infoga alternativ

  • Skriv nu följande kod i VBA-konsolen
 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 "Inga matchade data hittades!!" End If End Sub 

  • Infoga nu en knapp i datasetet.
  • Gå till Utvecklare fliken.
  • Välj Knapp ( Kontroll av formulär ) från Infoga sektion.

  • Ange ett valfritt namn på knappen. Jag anger till exempel Sök på .

  • Tilldela koden till den här knappen.
  • Välj knappen och tryck på höger musknapp.
  • Välj Tilldela makro från listan.

  • Välj önskat makro från listan Tilldela makro fönster.
  • Tryck sedan på OK .

  • Skriv nu ett valfritt Produkt-ID och klicka på Sök på knapp.

Vi kan se att ingen matchning visas, eftersom det här produktnumret inte finns med i listan.

  • Med ett annat ord Produkt-ID och tryck återigen på Sök på knapp.

Vi får fram beställningsnumret för den givna Produkt-ID .

Läs mer: Hur man får fram cellvärde per rad och kolumn i Excel VBA

2. VBA för att hitta värde från olika arbetsblad

I det här avsnittet kommer vi att göra samma sak som ovan men för olika arbetsblad. Låt oss anta att vår produktinformation finns i Ark 2 , och sökrutan finns i Blad 3 Nu ska vi skriva VBA-koden så att vi kan söka efter order-ID med hjälp av produkt-ID från Blad 3 .

Blad 2:

Blad 3:

📌 Steg:

  • Följ samma steg som i steg 1 till steg 2 från föregående metod för att öppna VBA-konsolen
  • Skriv nu följande kod i VBA-konsolen
 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 

  • Lägg nu in en knapp som den föregående.
  • Tilldela sedan makrokoden till knappen.

  • Ange någon av följande Produkt-ID och klicka på Utför knapp

Läs mer: Sök upp värdet i en kolumn och återge värdet i en annan kolumn i Excel

3. Hitta och markera värdet i kolumnen

Låt oss se hur vi kan hitta värden från en kolumn genom att markera dem. För detta antar vi samma dataset ovan med ytterligare en kolumn som heter Leveransstatus Vår uppgift är nu att markera värdena i Leveransstatus kolumnen som är I väntan på .

📌 Steg:

  • Följ samma steg som i steg 1 till steg 2 som den tidigare metoden för att öppna VBA-konsolen
  • Skriv nu följande kod i VBA-konsolen
 Sub Find_and_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 till kalkylbladet och kör koden.
  • Se resultatet i tabellen.

Läs mer: Hur man hittar det högsta värdet i en Excel-kolumn (4 metoder)

4. VBA för att hitta värden i en kolumn med hjälp av jokertecken

Slutligen ska vi se hur vi kan söka eller hitta värden i kolumner med hjälp av jokertecken i Excel VBA. Återigen kommer vi att använda samma dataset som ovan för denna metod. Vår uppgift är att hitta produktpriser med hjälp av deras modell. Vi kan antingen skriva in det fullständiga namnet eller sista/första tecknen på Produkt-ID .

📌 Steg:

  • Följ samma steg som i steg 1 till steg 2 som den tidigare metoden för att öppna VBA-konsolen
  • Skriv nu följande kod i VBA-konsolen
 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 

  • Infoga återigen en knapp som den föregående.
  • Tilldela nu makrokoden till knappen.

  • Ange nu en eventuell partiell Produkt-ID och tryck på Utför knapp.

Läs mer: Hur man hittar det lägsta värdet i en Excel-kolumn (6 sätt)

5. Excel VBA för att hitta högsta värde i en kolumn

Här vill vi hitta det högsta värdet i en kolumn med hjälp av VBA-koden.

📌 Steg:

  • Vi vill ta reda på det högsta priset.

  • Lägg in följande VBA-kod i en ny 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 

  • Tryck sedan på F5 för att köra VBA-koden.
  • Ingång visas.
  • Välj intervallet från datasetet.

  • Slutligen trycker du på OK knapp.

Vi kan se att det högsta värdet visas i dialogrutan.

6. Excel VBA för att hitta det sista värdet i kolumnen

Här vill vi veta värdet av den sista raden eller cellen i en viss kolumn. Vi vill till exempel veta den sista produkten i kolumnen Produkt.

📌 Steg:

  • Ange den VBA koden nedan på modulen.
 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 sedan koden genom att trycka på F5 knapp.

Det sista värdet visas i dialogrutan.

Läs mer: Hur man hittar den senaste förekomsten av ett värde i en kolumn i Excel (5 metoder)

Saker att komma ihåg

Några vanliga fel:

  • Fel: Ett värde i taget. Eftersom HITTA metoden kan bara hitta ett värde åt gången.
  • Fel: #NA VLOOKUP Om det sökta värdet inte finns i den givna datamängden ger denna funktion följande resultat #NA fel.
  • Range("Cell_Number").ClearContents används för att radera det föregående värdet från cellen. Annars måste det föregående värdet tas bort manuellt.

Slutsats

Detta är några sätt att hitta värden i kolumner med hjälp av VBA-kod i Excel. Jag har visat alla metoder med sina respektive exempel, men det kan finnas många andra iterationer. Jag har också diskuterat grunderna för de använda funktionerna. Om du har någon annan metod för att uppnå detta, är du välkommen att dela den med oss. Besök vår webbplats ExcelWIKI för fler intressanta artiklar om Excel.

Hugh West är en mycket erfaren Excel-tränare och analytiker med över 10 års erfarenhet i branschen. Han har en kandidatexamen i redovisning och ekonomi och en magisterexamen i företagsekonomi. Hugh har en passion för undervisning och har utvecklat ett unikt undervisningssätt som är lätt att följa och förstå. Hans expertkunskap om Excel har hjälpt tusentals studenter och yrkesverksamma över hela världen att förbättra sina färdigheter och utmärka sig i sina karriärer. Genom sin blogg delar Hugh med sig av sin kunskap med världen, och erbjuder gratis Excel-handledning och onlineutbildning för att hjälpa individer och företag att nå sin fulla potential.