Innehållsförteckning
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.xlsm6 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 på VBA från denna datamängd.
1. Använd funktionen Hitta i VBA utan parameter
Du kan använda Hitta funktion på 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 på 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 på 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 på 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.