VBA för att kontrollera om en sträng innehåller en annan sträng i Excel (6 metoder)

  • Dela Detta
Hugh West

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 visar vi hur man kontrollerar om en sträng innehåller en annan sträng i Excel med hjälp av VBA .

Ladda ner Mall för praxis

Du kan ladda ner den kostnadsfria Excel-mallen för övningar här.

VBA för att kontrollera om strängen innehåller ett värde.xlsm

6 metoder i VBA för att kontrollera om en sträng innehåller en annan sträng i Excel

Nedan i det här avsnittet hittar du 6 effektiva metoder för hur du kan genomföra VBA för att kontrollera om en sträng innehåller en annan sträng eller inte.

1. VBA för att kontrollera om strängen innehåller en delsträng

Nedan följer ett exempel på InStr-funktionen för att ta reda på om en sträng innehåller en delsträng i Excel.

Steg:

  • 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 kopierar du följande kod och klistrar in den.
 Public Sub ContainSub() If InStr("Film: Iron Man, Batman, Superman, Spiderman, Thor", "Hulk")> 0 Then MsgBox "Movie found" Else MsgBox "Movie not found" End If End Sub 

Din kod är nu redo att köras.

  • Kör makro.

Om din strängen innehåller delsträngen så kommer du att få en matchning, annars får du ingen matchning.

I vårt exempel ville vi ta reda på om vår primära sträng " Film: Iron Man, Batman, Superman, Spiderman, Thor " innehåller ordet " Hulk " eller inte. Om den inte gör det, får vi en Filmen hittades inte resultat.

2. VBA för att kontrollera om strängen innehåller ett nummer

Du kan söka efter om strängar innehåller siffror eller inte genom att använda VBA kod.

Titta på följande exempel där vi hittar vilka strängar som innehåller siffror med filmnamn.

Steg för att kontrollera om strängar innehåller siffror med VBA anges nedan.

Steg:

  • 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.
 Funktion 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 
  • Detta är inte ett delförfarande för VBA program som ska köras, detta skapar en Användardefinierad funktion (UDF), som vi kommer att anropa i vårt kalkylblad för att utföra uppgiften. Så efter att ha skrivit koden klickar vi istället för att klicka på Kör knappen, klickar du på den Spara i menyraden för att spara makrofilen.
  • Gå nu tillbaka till det aktuella arbetsbladet och skriv den användardefinierade funktionen som du just skapade i VBA kod ( SearchNumber i den första raden i koden) och inom funktionens parenteser anger du cellreferensnumret för den cell i strängen som har ledande siffror (t.ex. Cell B5 ).
  • Tryck på Gå in på .

Du får ett boolskt värde ( TRUE eller . Falskt ), om strängen i cellen innehåller siffror får du följande resultat TRUE , i annat fall FALSK .

  • Dra cellen nedåt med Handtag för fyllning för att tillämpa formeln på resten av cellerna för att kontrollera vilken sträng som innehåller siffror och vilken som inte gör det.

3. VBA för att extrahera siffror från strängar

I avsnittet ovan lär vi oss hur man kontrollerar om strängen innehåller siffror eller ej. I det här avsnittet lär vi oss hur man extraherar siffrorna och placerar dem i en annan cell med hjälp av exemplet nedan.

Steg för att kontrollera om strängar innehåller siffror och extrahera dem med VBA anges nedan.

Steg:

  • Öppna Redigerare för Visual Basic från Utvecklare och Infoga a UserForm denna gång från fliken Insert i kodfönstret.
  • Från den visade sig Verktygslåda , dra och släppa CommandButton i den UserForm .

  • Dubbelklicka på knappen, kopiera följande kod och klistra in 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))) Då om Trim(objRange.Cells(objRange.Row - 1, 2))) "" Då 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 i iRow = iRow + 1Nästa myAccessary Slut Sub 
  • Kör koden så kommer du till det aktuella arbetsbladet.
  • Klicka på kommandoknappen och du får det utdragna numret från strängarna.

4. VBA för att kontrollera om strängen innehåller en viss bokstav

Den här metoden är nästan likadan som metoden för att kontrollera delsträngar i en sträng.

Nedan finns en lista över InStr för att ta reda på om en sträng innehåller en viss bokstav i Excel.

Steg:

  • 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 ContainChar() If InStr("Film: Iron Man, Batman, Superman, Spiderman, Thor", "Z")> 0 Then MsgBox "Bokstav funnen" Else MsgBox "Bokstav ej funnen" End If End Sub 

Din kod är nu redo att köras.

  • Kör programmet. Om din strängen innehåller bokstaven så kommer du att få en matchning, annars får du ingen matchning.

I vårt exempel ville vi ta reda på om vår primära sträng " Film: Iron Man, Batman, Superman, Spiderman, Thor " innehåller bokstaven " Z " eller inte. Om den inte gör det, får vi en Brevet har inte hittats resultat.

5. VBA för att kontrollera om ett strängområde innehåller en annan sträng

Vi har lärt oss hur man kontrollerar om en given sträng innehåller en annan sträng eller inte. Men i det här avsnittet kommer vi att lära oss hur man kontrollerar om ett strängintervall innehåller delsträngar eller inte med följande dataset som exempel.

Steg:

  • Ö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 ContainsSub() If InStr(ActiveSheet.Select, "Hulk")> 0 Then MsgBox "Movie found" Else MsgBox "Movie not found" End If End Sub 

Din kod är nu redo att köras.

  • Kör koden.

Om ditt utbud av strängen innehåller delsträngen så kommer du att få en matchning, annars får du ingen matchning.

6. VBA för att extrahera strängar från strängar

I det här avsnittet ska vi se hur man kontrollerar om strängar innehåller vissa understrängar och hur man extraherar dessa i en annan cell.

Vi kommer att extrahera informationen om de namn som börjar med " Chris " från följande dataset.

Steg :

  • Ö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.
 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 kod är nu redo att köras.

  • Kör koden.

Endast de namn som börjar med " Chris " kommer att lagras i de fördefinierade cellerna.

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.