Indholdsfortegnelse
Gennemførelse af VBA er den mest effektive, hurtigste og sikreste metode til at udføre enhver operation i Excel. I denne artikel vil vi vise dig, hvordan du kan kontrollere, om en streng indeholder en anden streng i Excel ved hjælp af VBA .
Download skabelon til praksis
Du kan downloade den gratis Excel-skabelon til øvelser her.
VBA til at kontrollere, om en streng indeholder en værdi.xlsm
6 metoder i VBA til at kontrollere, om en streng indeholder en anden streng i Excel
Nedenfor i dette afsnit finder du 6 effektive metoder til, hvordan du kan gennemføre VBA til at kontrollere, om en streng indeholder en anden streng eller ej.
1. VBA til at kontrollere, om en streng indeholder en delstreng
Nedenfor er et eksempel på InStr-funktionen til at finde ud af, om en streng indeholder en delstreng i Excel.
Trin:
- Tryk på Alt + F11 på dit tastatur eller gå til fanen Udvikler -> Visual Basic for at åbne Visual Basic-editor .
- I pop-up kodevinduet skal du på menulinjen klikke på Indsæt -> Modul .
- Kopier følgende kode i kodevinduet, og indsæt den.
Public Sub ContainSub() If InStr("Film: Iron Man, Batman, Superman, Spiderman, Thor", "Hulk")> 0 Then MsgBox "Film fundet" Else MsgBox "Film ikke fundet" End If End Sub End Sub
Din kode er nu klar til at køre.
- Kør makroen.
Hvis din streng indeholder understrengen så får du et match fundet, ellers får du ingen match fundet.
I vores eksempel ønskede vi at finde ud af, om vores primære streng " Film: Iron Man, Batman, Superman, Spiderman, Thor " indeholder ordet " Hulk " eller ej. Da den ikke gør det, får vi en Film ikke fundet resultat.
2. VBA til at kontrollere, om en streng indeholder et tal
Du kan søge efter, om strenge indeholder tal eller ej, ved at bruge VBA kode.
Se på følgende eksempel, hvor vi finder de strenge, der indeholder tal med filmnavne.
Trin til at kontrollere, om strenge indeholder tal med VBA er angivet nedenfor.
Trin:
- På samme måde som før, åbne Visual Basic-editor fra den Udvikler og Indsæt a Modul i kodevinduet.
- Kopier følgende kode i kodevinduet, og indsæt den.
Function SearchNumbers(oRng As Range) As Boolean Dim bSearchNumbers As Boolean, i As Long bSearchNumbers = False For i = 1 To Len(oRng.Text) If IsNumeric(Mid(oRng.Text, i, 1)) Then bSearchNumbers = True Exit For End If Next SearchNumbers = bSearchNumbers End Function
- Dette er ikke en underprocedure for den VBA program til at køre, dette skaber en Brugerdefineret funktion (UDF), som vi vil kalde i vores regneark for at udføre opgaven. Så når vi har skrevet koden, skal vi i stedet for at klikke på Kør knappen, skal du klikke på Gem på menulinjen for at gemme makrofilen.
- Gå nu tilbage til det pågældende regneark, og skriv den brugerdefinerede funktion, som du lige har oprettet, i VBA kode ( SearchNumber , i den første linje i koden) og inden for funktionens parenteser indtastes cellereferencenummeret for den celle i strengen, der har ledende tal (f.eks. Celle B5 ).
- Tryk på Indtast .
Du får en boolsk værdi ( TRUE eller Falsk ), hvis strengen i cellen indeholder tal, får du TRUE , ellers FALSK .
- Træk cellen ned med Håndtag til påfyldning for at anvende formlen på resten af cellerne for at kontrollere, hvilken streng der indeholder tal, og hvilken der ikke gør.
3. VBA til at udtrække tal fra en streng
I ovenstående afsnit lærer vi at kontrollere, om strengen indeholder tal eller ej. Og i dette afsnit lærer vi, hvordan vi udtrækker disse tal og placerer dem i en anden celle med nedenstående eksempel.
Trin til at kontrollere, om strenge indeholder tal, og udtrække dem med VBA er angivet nedenfor.
Trin:
- Åbn Visual Basic-editor fra den Udvikler og Indsæt a UserForm denne gang fra fanen Indsæt i kodevinduet.
- Fra den viste Værktøjskasse , træk og slip CommandButton i den UserForm .
- Dobbeltklik på knappen, kopier følgende kode og indsæt den.
Private Sub CommandButton1_Click() Worksheets("Number").Range("C2:C15").ClearContents checkNumber (Worksheets("Number").Range("B2:B15"))) End Sub Sub checkNumber(objRange As Range) Dim myAccessary As Variant Dim i As Long Dim iRow As Long iRow = 2 For Each myAccessary In objRange For i = 1 To Len(myAccessary.Value) If IsNumeric(Mid(myAccessary.Value, i,1))) Then If Trim(objRange.Cells(objRange.Row - 1, 2))) "" Then objRange.Cells(iRow - 1, 2) = _ objRange.Cells(iRow - 1, 2) & Mid(myAccessary.Text, i, 1) Else objRange.Cells(iRow - 1, 2) = Mid(myAccessary.Text, i, 1) End If End If Next iRow iRow = iRow + 1Næste myAccessary End Sub
- Kør koden, og du kommer til det ønskede regneark.
- Klik på kommandoknappen og du vil få det uddragne nummer fra strengene.
4. VBA til at kontrollere, om en streng indeholder et bestemt bogstav
Denne metode svarer næsten til metoden til kontrol af delstrenge i en streng.
Nedenfor er den InStr funktion til at finde ud af, om en streng indeholder et bestemt bogstav i Excel.
Trin:
- På samme måde som før, åbne Visual Basic-editor fra den Udvikler og Indsæt a Modul i kodevinduet.
- Kopier følgende kode i kodevinduet, og indsæt den.
Public Sub ContainChar() If InStr("Film: Iron Man, Batman, Superman, Spiderman, Thor", "Z")> 0 Then MsgBox "Bogstav fundet" Else MsgBox "Bogstav ikke fundet" End If End Sub
Din kode er nu klar til at køre.
- Kør programmet. Hvis din streng indeholder bogstavet så får du et match fundet, ellers får du ingen match fundet.
I vores eksempel ønskede vi at finde ud af, om vores primære streng " Film: Iron Man, Batman, Superman, Spiderman, Thor " indeholder bogstavet " Z " eller ej. Da den ikke gør det, får vi en Brev ikke fundet resultat.
5. VBA til at kontrollere, om en række strenge indeholder en anden streng
Vi har lært at kontrollere, om en given streng indeholder en anden streng eller ej. Men i dette afsnit vil vi lære at kontrollere, om en række strenge indeholder en delstreng eller ej med følgende datasæt som eksempel.
Trin:
- Åbn Visual Basic-editor fra den Udvikler og Indsæt a Modul i kodevinduet.
- Kopier følgende kode i kodevinduet, og indsæt den.
Public Sub ContainsSub() If InStr(ActiveSheet.Select, "Hulk")> 0 Then MsgBox "Movie found" Else MsgBox "Movie not found" End If End Sub End Sub
Din kode er nu klar til at køre.
- Kør koden.
Hvis din rækkevidde af streng indeholder understrengen så får du et match fundet, ellers får du ingen match fundet.
6. VBA til at udtrække strenge fra streng
I dette afsnit vil vi se, hvordan vi kan kontrollere, om strenge indeholder bestemte understrenge og udtrække dem i en anden celle.
Vi uddrager oplysningerne om de navne, der begynder med " Chris " fra følgende datasæt.
Trin :
- Åbn Visual Basic-editor fra den Udvikler og Indsæt a Modul i kodevinduet.
- Kopier følgende kode i kodevinduet, og indsæt den.
Sub SearchSub() Dim lastrow As Long Dim i As Integer, count As Integer lastrow = ActiveSheet.Range("A30000").End(xlUp).Row For i = 1 To lastrow If InStr(1, LCase(Range("C" & i)), "Chris") 0 Then count = count + 1 Range("F" & count & ":H" & count) = Range("B" & i & ":D" & i).Value End If Next i End Sub
Din kode er nu klar til at køre.
- Kør koden.
Kun de navne, der begynder med " Chris " vil blive gemt i de foruddefinerede celler.