VBA om te controleren of een string een andere string bevat in Excel (6 methoden)

  • Deel Dit
Hugh West

Toepassing van VBA is de meest effectieve, snelste en veiligste methode om elke bewerking in Excel uit te voeren. In dit artikel laten we u zien hoe u kunt controleren of een tekenreeks een andere tekenreeks bevat in Excel met behulp van VBA .

Praktijksjabloon downloaden

U kunt het gratis oefensjabloon in Excel hier downloaden.

VBA om te controleren of een string een waarde bevat.xlsm

6 Methoden in VBA om te controleren of een string een andere string bevat in Excel

Hieronder vindt u 6 effectieve methoden voor de uitvoering van VBA om te controleren of een tekenreeks een andere tekenreeks bevat of niet.

1. VBA om te controleren of een string substrings bevat

Hieronder volgt een voorbeeld van de InStr-functie om te kijken of een string een substring bevat in Excel.

Stappen:

  • Druk op Alt + F11 op uw toetsenbord of ga naar de tab Ontwikkelaar -> Visual Basic om te openen Visual Basic-editor .

  • In het pop-up codevenster, klik in de menubalk op Invoegen -> Module .

  • Kopieer in het codevenster de volgende code en plak deze.
 Public Sub ContainSub() If InStr("Movie: Iron Man, Batman, Superman, Spiderman, Thor", "Hulk")> 0 Then MsgBox "Movie found" Else MsgBox "Movie not found" End If End Sub 

Uw code is nu klaar om te draaien.

  • Ren de macro.

Als uw string bevat de substring dan krijg je een match gevonden, anders krijg je geen match gevonden.

In ons voorbeeld wilden we uitzoeken of onze primaire string " Film: Iron Man, Batman, Superman, Spiderman, Thor " bevat het woord " Hulk " of niet. Als dat niet het geval is, krijgen we een Film niet gevonden resultaat.

2. VBA om te controleren of een string een getal bevat

U kunt zoeken of tekenreeksen getallen bevatten of niet door de VBA code.

Kijk naar het volgende voorbeeld waar we zullen vinden welke strings nummers bevatten met de filmnamen.

Stappen om te controleren of strings getallen bevatten met VBA worden hieronder gegeven.

Stappen:

  • Dezelfde manier als voorheen, open Visual Basic-editor van de Ontwikkelaar tab en Plaats a Module in het codevenster.
  • Kopieer in het codevenster de volgende code en plak deze.
 Functie 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 
  • Dit is geen subprocedure voor de VBA programma uit te voeren, dit is het creëren van een User Defined Function (UDF), die we zullen aanroepen in ons werkblad om de taak uit te voeren. Dus, na het schrijven van de code, in plaats van op de Ren knop, klik op de Sla knop in de menubalk om het macrobestand op te slaan.
  • Ga nu terug naar het betreffende werkblad en schrijf de door de gebruiker gedefinieerde functie die u zojuist hebt gemaakt in het bestand VBA code ( ZoekNummer in de eerste regel van de code) en voer binnen de haakjes van de functie het celreferentienummer in van de cel van de string met voorloopcijfers (bijv. Cel B5 ).
  • Druk op Ga naar .

U krijgt een booleaanse waarde ( WARE of Valse ), als de string in de cel getallen bevat dan krijg je WARE anders FALSE .

  • Sleep de cel naar beneden door Vulgreep om de formule toe te passen op de rest van de cellen om te controleren welke tekenreeks getallen bevat en welke niet.

3. VBA om getallen uit een string te halen

In het bovenstaande deel hebben we geleerd hoe we kunnen controleren of de tekenreeks getallen bevat of niet. En in dit deel zullen we leren hoe we die getallen kunnen extraheren en in een andere cel kunnen plaatsen aan de hand van het onderstaande voorbeeld.

Stappen om te controleren of strings getallen bevatten en deze te extraheren met VBA worden hieronder gegeven.

Stappen:

  • Open Visual Basic-editor van de Ontwikkelaar tab en Plaats a UserForm deze keer van het tabblad Invoegen in het codevenster.
  • Van de verschenen Gereedschapskist slepen en neerzetten CommandButton in de UserForm .

  • Dubbelklik op de knop, kopieer de volgende code en plak die.
 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)) Dan Als Trim(objRange.Cells(objRange.Row - 1, 2)) "" Dan 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 Volgende iRow = iRow + 1Volgende myAccessary Einde Sub 
  • Ren de code en die brengt u naar het gewenste werkblad.
  • Klik op de opdrachtknop en je krijgt het geëxtraheerde nummer van de strings.

4. VBA om te controleren of een string een bepaalde letter bevat

Deze methode lijkt bijna op de methode om substring in een string te controleren.

Hieronder staat de InStr functie om na te gaan of een tekenreeks een bepaalde letter bevat in Excel.

Stappen:

  • Dezelfde manier als voorheen, open Visual Basic-editor van de Ontwikkelaar tab en Plaats a Module in het codevenster.
  • Kopieer in het codevenster de volgende code en plak deze.
 Public Sub ContainChar() If InStr("Movie: Iron Man, Batman, Superman, Spiderman, Thor", "Z")> 0 Then MsgBox "Letter found" Else MsgBox "Letter not found" End If End Sub 

Uw code is nu klaar om te draaien.

  • Ren het programma. Als uw string bevat de letter dan krijg je een match gevonden, anders krijg je geen match gevonden.

In ons voorbeeld wilden we uitzoeken of onze primaire string " Film: Iron Man, Batman, Superman, Spiderman, Thor " bevat de letter " Z " of niet. Als dat niet het geval is, krijgen we een Brief niet gevonden resultaat.

5. VBA om te controleren of een reeks strings een andere string bevat

We hebben geleerd hoe we kunnen controleren of een gegeven tekenreeks een andere tekenreeks bevat of niet. Maar in dit deel zullen we leren hoe we kunnen controleren of een reeks tekenreeksen een substring bevat of niet, met de volgende dataset als voorbeeld.

Stappen:

  • Open Visual Basic-editor van de Ontwikkelaar tab en Plaats a Module in het codevenster.
  • Kopieer in het codevenster de volgende code en plak deze.
 Public Sub ContainsSub() Als InStr(ActiveSheet.Select, "Hulk")> 0 Dan MsgBox "Film gevonden" Else MsgBox "Film niet gevonden" End If End Sub 

Uw code is nu klaar om te draaien.

  • Ren de code.

Als uw bereik van string bevat de substring dan krijg je een match gevonden, anders krijg je geen match gevonden.

6. VBA om Strings uit String te halen

In dit deel zullen we zien hoe we kunnen controleren of strings bepaalde substrings bevatten en die in een andere cel kunnen extraheren.

Wij halen de informatie uit de namen die beginnen met " Chris " van de volgende dataset.

Stappen :

  • Open Visual Basic-editor van de Ontwikkelaar tab en Plaats a Module in het codevenster.
  • Kopieer in het codevenster de volgende code en plak deze.
 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 

Uw code is nu klaar om te draaien.

  • Ren de code.

Alleen de namen die beginnen met " Chris " zal worden opgeslagen in de vooraf gedefinieerde cellen.

Hugh West is een zeer ervaren Excel-trainer en -analist met meer dan 10 jaar ervaring in de branche. Hij heeft een bachelor in Accounting en Finance en een master in Business Administration. Hugh heeft een passie voor lesgeven en heeft een unieke lesaanpak ontwikkeld die gemakkelijk te volgen en te begrijpen is. Zijn deskundige kennis van Excel heeft duizenden studenten en professionals over de hele wereld geholpen hun vaardigheden te verbeteren en uit te blinken in hun carrière. Via zijn blog deelt Hugh zijn kennis met de wereld en biedt hij gratis Excel-tutorials en online trainingen aan om individuen en bedrijven te helpen hun volledige potentieel te bereiken.