Innehållsförteckning
Genomförande av VBA är den mest effektiva, snabbaste och säkraste metoden för att utföra alla operationer i Excel. I den här artikeln kommer vi att visa dig hur du hittar vissa strängar i en annan given sträng med hjälp av VBA i Excel.
Ladda ner Mall för praxis
Du kan ladda ner den kostnadsfria Excel-mallen för övningar här.
VBA för att hitta i String.xlsm
InStr-funktion
Microsoft Excel har en inbyggd funktion som heter InStr-funktionen för att hitta positionen för specifika strängar i en given String.
Generisk syntax:
InStr([start], string1, string2, [jämför])
Här,
Argument | Obligatoriskt/ frivilligt | Definition |
---|---|---|
starta | Valfritt | Startposition för sökningen.
|
sträng1 | Krävs | Den sträng som ska sökas i, primär sträng. |
sträng2 | Krävs | Den sträng som ska sökas i den primära strängen. |
jämför | Valfritt | InStr funktionen är som standard skiftlägeskänslig. Men om du vill köra en skiftlägeskänslig InStr kan du skicka argumentet här för att utföra en viss jämförelse. Argumentet kan ha följande värden,
Som standard, InStr tar vbBinaryCompare som jämförelseargument. |
8 enkla exempel för att hitta en specifik strängposition i en given sträng med hjälp av VBA
Låt oss se några enkla exempel för att få fram positionerna för vissa strängar i en given sträng med hjälp av VBA .
1. VBA för att hitta positionen för en text i en sträng
Nedan följer ett exempel på InStr för att hitta positionen för en text i en sträng.
- Tryck på Alt + F11 på tangentbordet eller gå till fliken Utvecklare -> Visual Basic för att öppna Redigerare för Visual Basic .
- I popup-kodfönstret klickar du i menyraden på Infoga -> Modul .
- I kodfönstret skriver du nu en enkel InStr program i en VBA Subprocedur (se nedan).
Sub INSTR_Example() MsgBox InStr("Lycka är ett val", "val") End Sub
Din kod är nu redo att köras.
- Tryck på F5 på tangentbordet eller välj i menyraden Kör -> Kör Sub/UserForm Du kan också bara klicka på liten Play-ikon i undermenyfältet för att köra makrot.
Du kommer att se att popup-meddelanderutan ger dig en nummer som anger positionen i den text som du vill kontrollera.
Förklaring:
Vår primära sträng, " Lycka är ett val " är en mening med 21 bokstäver (med mellanslag) och vi vill hitta positionen för texten " val " i den strängen. Texten " val " började från 16:e positionen på den primära strängen, och därför fick vi nummer 16 som vårt resultat i meddelanderutan.
2. VBA för att hitta text från en specifik position i en sträng
Låt oss nu ta reda på vad som skulle hända om vi ville få fram positionen från ett visst tal.
- På samma sätt som tidigare, öppna Redigerare för Visual Basic från Utvecklare och Infoga a Modul i kodfönstret.
- I kodfönstret skriver du en enkel InStr programmet som visas ovan och överför värdet i argumentet start till den position som du vill räkna texten från.
Sub INSTR_Example() MsgBox InStr(17, "Lycka är ett val", "val") End Sub
- Nästa, Kör koden.
Du kommer att se att popup-meddelanderutan ger dig en nummer som anger positionen av texten Utgå från en viss position. som du ville kontrollera.
Förklaring:
Eftersom vi redan visste (från diskussionen i fas 1) att texten " val " från positionen 16 , så vi har infört två " val " i den primära strängen och ange 17 som vår första parameter för att hoppa över den första " val ". Så vi Kör ovanstående makro och det visade oss positionsnummer 27 vilket är exakt samma positionsnummer som i andra " val " i den givna strängen.
3. VBA för att hitta text med funktionen InStr som inte tar hänsyn till stora och små bokstäver i strängar
Från och med inledningen av InStr funktion vet du redan att som standard är InStr funktionen är skiftlägeskänslig. Låt oss ta reda på det med ett exempel.
Se följande VBA kod, där vi ville hitta positionen för ordet " Val " med en stort "C" i strängen " Lycka är ett val " där valet skrivs med en litet "c" .
- Kör koden och hitta 0 som vårt resultat.
Detta beror på att InStr funktionen behandlar stort "C" och litet "c" på olika sätt. Så den sökte efter ordet " Val " i strängen och fick ingen träff, så vi returnerade 0 .
- För att göra InStr funktion Skiftlägeskänslig , ange argumentet compare till vbTextCompare (se nedan).
Sub INSTR_Example() MsgBox InStr(1, "Lycka är ett val och val", "Val", "Choice", vbTextCompare) End Sub
- Kör koden.
Du kommer att få följande Textens position från strängen, oavsett om texten är skriven på stora bokstäver eller små bokstäver .
4. VBA för att hitta text till höger i en sträng
Hittills har InStr funktionen gav oss bara positionen från strängens vänstra sida. Men vad händer om du vill hitta textpositionen från strängens högra sida?
Funktionen InStrRev söker från höger. InStrRev fungerar på samma sätt som funktionen InStr funktionen och den kommer att hitta positionen för en text från höger sida av strängen.
Se följande exempel för att förstå skillnaden.
- Om vi kör följande kod med InStr funktion då,
den ger oss positionen ( 16 ) i den första texten " val ".
- Men om vi kör samma kod med InStrRev Funktion då,
den ger oss positionen ( 27 ) i den sista texten " val ".
Liknande läsningar:
- FindNext med VBA i Excel (2 exempel)
- Hitta och ersätta med VBA (11 sätt)
- Hitta exakt matchning med VBA i Excel (5 sätt)
5. VBA för att hitta positionen för ett tecken i en sträng
Du kan också hitta positionen för ett visst tecken i en sträng på samma sätt som du hittar text.
- Kopiera följande kod till din VBA kodfönster
Sub Find_Character() Dim z As Long z = InStr("Lycka är ett val", "e") MsgBox z End Sub
- Och Kör makro.
Den första " e " i vår givna sträng är på nummer 7 position.
6. VBA för att hitta delsträngar i en sträng
Här ska vi lära oss hur man tar reda på om en sträng innehåller en delsträng eller inte.
För att få det måste vi köra en IF-uttalande i vår kod.
- På samma sätt som tidigare, öppna Redigerare för Visual Basic från Utvecklare och Infoga a Modul i kodfönstret.
- I kodfönstret kopierar du följande kod och klistrar in den.
Public Sub FindSub() If InStr("Happiness is a choice", "choice") = 0 Then MsgBox "No match found" Else MsgBox "Match found" End If End Sub
Din kod är nu redo att köras.
- Kör makro.
Om din strängen innehåller delsträngen får du en match hittad , annars kommer den att ge resultatet att ingen matchning har hittats. I vårt exempel ville vi ta reda på om vår primära sträng " Lycka är ett val " innehåller ordet " val " eller inte. Om den gör det, får vi en Matchning hittad resultat.
7. VBA för att hitta strängar i ett cellområde
Du kan söka efter en viss text i ett cellintervall av strängar och returnera en viss sträng.
Titta på följande exempel där vi hittar " Dr. " och när det finns en matchning kommer den att återge " Doktor ".
- Nedan följer koden för att få det resultat som beskrivs ovan,
Sub Find_String_in_Range() Dim cell As Range For Each cell In Range("B5:B10") If InStr(cell.Value, "Dr.")> 0 Then cell.Offset(0, 1).Value = "Doctor" End If Next cell End Sub
- Kör koden och resultatet visas nedan
- Du kan ändra makrot efter dina behov. Om du till exempel vill hitta " Prof. " i någon cell i strängen, och får " Professor " som retur, skicka då helt enkelt " Prof. " som värde i stället för " Dr ." på den fjärde raden i makrot och " Professor " i stället för " Doktor " på den femte raden i makrot och definiera cellintervallets nummer i enlighet med detta.
8. VBA för att hitta strängar i en cell
Du kan också söka efter en viss text i en enskild cell i strängen och återger en viss sträng.
- Kopiera följande kod och klistra in den i kodfönstret.
Sub Find_String_in_Cell() If InStr(Range("B5").Value, "Dr.")> 0 Then Range("C5").Value = "Doctor" End If End Sub
Den söker efter " Dr. " i Cell B5 och om den hittar en matchning returnerar den " Doktor " i Cell C5 .
- Du kan ändra makrot efter dina behov. Om du till exempel vill hitta " Prof. " i någon cell i strängen, och får " Professor " som retur, skicka då helt enkelt " Prof. " som värde i stället för " Dr ." på den andra raden i makrot och " Professor " i stället för " Doktor "i den tredje raden i makrot och definiera cellreferensnumret i enlighet med detta.
Slutsats
Den här artikeln visade hur du kan hitta vissa texter i en sträng i Excel med hjälp av VBA-makro. Jag hoppas att denna artikel har varit till stor nytta för dig, och du får gärna ställa frågor om ämnet.