Hur du använder funktionen Find i VBA (6 exempel)

  • Dela Detta
Hugh West

En av de viktigaste och mest använda funktionerna som vi använder i Visual Basic-applikation (VBA) är funktionen Hitta. I den här artikeln ska jag visa hur du kan använda funktionen Sökfunktion av Excel med lämpliga exempel och illustrationer.

Ladda ner övningsboken

Hitta funktion i VBA i Excel.xlsm

6 snabba exempel på hur du använder funktionen FIND i VBA

Här har vi en datamängd med Boknamn, författare och Priser av några böcker från en bokhandel som heter Martin Bookstore.

I dag är vårt mål att se olika typer av användningsområden för Hitta funktion VBA från denna datamängd.

1. Använd funktionen Hitta i VBA utan parameter

Du kan använda Hitta funktion VBA utan några parametrar.

Därefter söker den efter ett specifikt värde inom ett antal celler och returnerar den första matchningen som hittas.

Låt oss söka efter namnet "P. B. Shelly" i kolumnen Författare ( C4:C13 ).

Linjen med den Hitta funktion kommer att vara:

Set cell = Range("C4:C17").Find("P. B. Shelly")

Den fullständiga VBA-kod kommer att vara:

VBA-kod:

 Sub Find() Set cell = Range("C4:C17").Find("P. B. Shelly") MsgBox cell.Address End Sub 

Utgång:

Den producerar en Makro kallas . Hitta Om du kör makroprogrammet kommer det att ge följande resultat $C$6 , den första celladressen med namnet P. B. Shelly .

Läs mer: Hitta inom ett intervall med VBA i Excel: inkludera exakta och partiella matchningar

2. Tillämpa funktionen Find i VBA med parametern After (för att börja söka från en viss cell)

Du kan använda Efter med parametern Hitta funktion VBA Därefter börjar den söka efter ett värde under en cell inom ett intervall.

Låt oss till exempel börja söka efter namnet "P. B. Shelly" underifrån cell C6 .

Kodraden kommer att vara:

Set cell = Range("C4:C13").Find("P. B. Shelly", After:=Range("C6"))

Och den fullständiga VBA-kod kommer att vara:

VBA-kod:

 Sub Find() Set cell = Range("C4:C13").Find("P. B. Shelly", After:=Range("C6")) MsgBox cell.Address End Sub 

Utgång:

Den kommer att återge $C$13 eftersom den börjar söka underifrån i cellen C6 , det är från cell C7 Så det blir P. B. Shelly i cellen C13 först.

Läs mer: Hur man hittar strängar i en cell med hjälp av VBA i Excel

3. Kör Find-funktionen i VBA med en omslutning av efterparametern (för att söka efter ett värde på ett cirkulärt sätt)

Efter med parametern Hitta funktion söker ett värde på ett cirkulärt sätt

Det innebär att den börjar söka under en cell i ett intervall, avslutar sökningen i intervallet och börjar sedan igen från toppen av intervallet.

Låt oss till exempel börja söka på namnet "John Keats" underifrån cell C8 med hjälp av Efter parameter.

Kodraden kommer att vara:

Set cell = Range("C4:C13").Find("John Keats", After:=Range("C8"))

Och den fullständiga VBA-kod kommer att vara:

VBA-kod:

 Sub Find() Set cell = Range("C4:C13").Find("John Keats", After:=Range("C8")) MsgBox cell.Address End Sub 

Utgång:

Den kommer att återge $C$7 eftersom den börjar söka underifrån i cellen C8 , det är från cell C9 .

Den hittar ingenting upp till cell C13 , så den börjar återigen från cellen C4 och hittar en i cell C7 .

Liknande läsningar:

  • Hur man hittar strängar med VBA i Excel (8 exempel)
  • Hitta exakt matchning med VBA i Excel (5 sätt)
  • Hitta och ersätta med VBA (11 sätt)

4. Använd funktionen Find i VBA med parametern LookAt (för exakt eller partiell matchning).

Du kan använda Hitta funktion VBA med den Titta på parameter.

Använd LookAt = xlWhole för en Exakt matcha, och LookAt=xlPart för en Delvis match.

Låt oss till exempel försöka ta reda på om det finns någon bok med namnet "Ode" i den Bokens namn kolumnen ( B4:B13 ).

Om vi använder xlHela i kodraden:

Set cell = Range("B4:B13").Find("Ode", LookAt:=xlWhole)

Utmatningen kommer att visa ett fel eftersom den inte hittar någon exakt match.

Men om du använder:

Set cell = Range("B4:B13").Find("Ode", LookAt:=xlPart)

Därefter återkommer den $B$9 eftersom det finns en bok med namnet "Ode" i den i cellen B7 , Ode till näktergalen.

Så hela koden för delvis match är:

VBA-kod:

 Sub Find() Set cell = Range("B4:B13").Find("Ode", LookAt:=xlPart) MsgBox cell.Address End Sub 

5. Använd funktionen Find i VBA med parametern SearchDirection (för att ange sökriktningen)

Du kan också använda Hitta funktion VBA med den SearchDirection parameter.

Använd SearchDirection = xlNext för sökning från Uppifrån och ner .

Och SearchDirection = xlPrevious för sökning från Från botten till toppen .

Låt oss till exempel försöka hitta författaren Elif Shafak i kolumnen Författare ( C4:C13 ).

Om vi använder xlNästa i kodraden:

Set cell = Range("C4:C13").Find("Elif Shafak", SearchDirection:=xlNext)

Därefter kommer den att återge $C$5 .

Men om du använder:

Set cell = Range("C4:C13").Find("Elif Shafak", SearchDirection:=xlPrevious)

Därefter återkommer den $C$11 .

Så den fullständiga koden för sökning från från botten till toppen är:

VBA-kod:

 Sub Find() Set cell = Range("C4:C13").Find("Elif Shafak", SearchDirection:=xlPrevious) MsgBox cell.Address End Sub 

6. Sökfunktion i VBA med parametern MatchCase (för matchning med eller utan hänsyn till stor bokstavskänsla)

Slutligen kan du använda Hitta funktion med den MatchCase parameter.

Använd MatchCase = True för en Skiftlägeskänslig matcha , och MatchCase=False för en Skiftlägeskänslig match.

Låt oss till exempel försöka hitta boken "mamma" i den Bokens namn kolumnen ( B4:B13 ).

Om vi använder True i kodraden:

Set cell = Range("B4:B13").Find("mother", MatchCase:=True)

Utmatningen kommer att visa ett fel eftersom den inte hittar någon matchning.

Men om du använder:

Set cell = Range("B4:B13").Find("mother", MatchCase:=False)

Därefter återkommer den $B$9 eftersom det finns en bok som heter "Mamma" i cellen B8 .

Så hela koden för Skiftlägeskänslig match är:

VBA-kod:

 Sub Find() Set cell = Range("B4:B13").Find("Mother", MatchCase:=False) MsgBox cell.Address End Sub 

Slutsats

Med dessa metoder kan du använda funktionen Hitta i Visual Basic-applikationen. Har du några frågor? Fråga oss gärna.

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.