Substring zoeken met VBA (9 manieren)

  • Deel Dit
Hugh West

Als u op zoek bent naar enkele van de gemakkelijkste manieren om substring te vinden met behulp van VBA, dan bent u op de juiste plaats. Na het doornemen van dit artikel zult u in staat zijn om de positie van een substring te vinden of gegevens te extraheren met behulp van deze substring of het formaat van een substring gemakkelijk te wijzigen. Laten we in het artikel duiken.

Werkboek downloaden

Voorbeeldinhoud

9 Manieren om Substring te vinden met VBA

Hier heb ik de volgende gegevenstabel waarin ik de manieren zal tonen om substring in een tekenreeks te vinden met behulp van VBA. Ik zal ook proberen de manieren te tonen om substring in een willekeurige tekenreeks te vinden.

Ik heb deze taak uitgevoerd met behulp van Microsoft Excel 365 versie, u kunt elke andere versie gebruiken naargelang uw gemak.

Methode-1: Substring vinden in een string met VBA

Als u de gewenste substring in een string wilt vinden met VBA, kunt u het volgende gebruiken de InStr-functie in de VBA-code.

Step-01 :

Ga naar Ontwikkelaar Tab>> Visual Basic Optie

Dan, de Visual Basic-editor gaat open.

Ga naar Plaats Tab>> Module Optie

Daarna, een Module zal worden gecreëerd.

Step-02 :

Schrijf de volgende code

 Sub FindFirst() Dim Pos As Integer Pos = InStr(1, "Ik denk dus ik ben", "denk") MsgBox Pos End Sub 

Hier, InStr(1, "Ik denk dus ik ben", "denk") geeft de positie van de substring van een string. 1 is de startpositie, " Ik denk dus ik ben" is de string waar u de gewenste substring zult vinden, en "denk" Het is standaard hoofdlettergevoelig, dus let op de hoofdletter van de substring die u wilt zoeken.

➤Press F5

Resultaat :

Daarna krijg je het volgende Berichtenbox die de positie van de "denk" substring.

Methode-2: Het vinden van hoofdlettergevoelige substrings in een string

Als u met VBA de gewenste substring in een string wilt vinden, ongeacht het geval, volg dan deze methode.

Step-01 :

volgen Step-01 van Methode-1

 Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "Ik denk dus ik ben", "think",vbTextCompare) MsgBox Pos End Sub 

Hier, vbTextCompare wordt gebruikt om hoofdletterongevoelige substring te vinden.

➤Press F5

Resultaat :

Dan krijg je het volgende Berichtenbox die de positie van de "denk" substring.

U kunt hetzelfde doen met de volgende code.

 Optie Vergelijk tekst Public Sub Caseinsensitive() Dim Pos As Integer Pos = InStr(1, "Ik denk dus ik ben", "denk") MsgBox Pos End Sub 

Hier, Optie Vergelijken Tekst vindt hoofdletterongevoelige substring.

➤Press F5

Resultaat :

Daarna krijg je het volgende Berichtenbox die de positie van de "denk" substring.

Methode-3: InstrRev-functie gebruiken in VBA

Hier laat ik zien hoe je een substring kunt vinden vanaf het einde van een string.

Step-01 :

volgen Step-01 van Methode-1

 Sub FindFromEnd() MsgBox InStrRev("Ik denk dus ik ben", "Ik") End Sub 

InStrRev vindt de substring van de rechterkant in plaats van de linkerkant.

➤Press F5

Resultaat :

Dan krijg je het volgende Berichtenbox die de positie van de tweede "I" substring van de rechterkant.

Methode-4: De positie vinden van Substring in een String in een Gegevensbereik

Als u het speciale karakter "@" in de E-mailadres volg dan deze methode. Ik heb hier de Positie kolom voor dit doel.

Step-01 :

volgen Step-01 van Methode-1

 Functie FindSubstring(value As Range) As Integer Dim Pos As Integer Pos = InStr(1, value, "@") FindSubstring = Pos Einde Functie 

Het creëert een functie met de naam FindSubstring (u kunt elke andere naam gebruiken)

waarde is de celverwijzing die de string bevat en wordt gedeclareerd als Bereik .

Step-02 :

Selecteer de uitgang Cel E5

➤Type de volgende functie (gemaakt door VBA )

=FindSubstring(D5)

D5 is de cel die de string bevat.

➤Press ENTER

➤Sleep de Vulgreep Gereedschap

Resultaat :

Daarna krijgt u de posities van het speciale teken " @" in de E-mailadres .

Vergelijkbare lezingen:

  • String in een cel zoeken met VBA in Excel (2 methoden)
  • Volgende zoeken met VBA in Excel (2 voorbeelden)
  • String zoeken met VBA in Excel (8 voorbeelden)
  • VBA Laatste rij vinden in Excel (5 manieren)

Methode-5: Controle van een bepaalde substring in een string in een gegevensbereik

Stel, u wilt schrijven Pas of Niet corresponderen aan de namen van de studenten afhankelijk van de Resultaat kolom waarbij Pas of Fail is geschreven in een haakje. Om deze substring te vinden in de Resultaat kolom en schrijf het op in de Kolom geslaagd of niet geslaagd volg deze methode.

Step-01 :

volgen Step-01 van Methode-1

 Sub CheckSubstring() Dim cel als Range Voor elke cel in Range("C5:C10") Als InStr(cell.value, "Pass")> 0 Dan cell.Offset(0, 1).value = "Passed" Else cell.Offset(0, 1).value = "Failed" End If Next cell End Sub 

Hier is het celbereik C5:C10 die de Resultaat kolom

InStr(cell.value, "Pass")> 0 is de voorwaarde waarbij het getal groter is dan nul (wanneer de cel bevat "Pass" ) dan zal de volgende regel doorgaan en de uitvoer in de aangrenzende cel geven als Geslaagd .

Als de voorwaarde onwaar wordt, betekent dit dat een cel geen "Pass" dan is de lijn onder Anders wordt uitgevoerd en geeft de outputwaarde in de aangrenzende cel als Mislukte .

Deze lus gaat door voor elke cel.

➤Press F5

Resultaat :

Dan krijg je de volgende uitvoer in de slagen of zakken column.

Methode 6: Een bepaalde substring in een string controleren en gegevens extraheren

Ik zal de weg tonen om de studenten te vinden met de naam Michael in de Kolom Naam student en haal de bijbehorende gegevens eruit met behulp van VBA in deze methode.

Step-01 :

volgen Step-01 van Methode-1

 Sub Extractdata() Dim lastusedrow As Long Dim i As Integer, icount As Integer lastusedrow = ActiveSheet.Range("B100").End(xlUp).Row For i = 1 To lastusedrow If InStr(1, Range("B" & i), "Michael")> 0 Then icount = icount + 1 Range("E" & icount & ":G" & icount) = Range("B" & i & ":D" & i).value End If Next i End Sub 

Hier heb ik gebruikt B100 als de Actief blad Bereik maar u kunt elk bereik gebruiken naargelang uw gebruik.

InStr(1, Range("B" & i), "Michael")> 0 is de voorwaarde om te controleren of de cel in kolom B bevat Michael

Range("E" & icount & ":G" & icount) is het bereik waar u uw uitvoergegevens wilt hebben en Range("B" & i & ":D" & i).value geeft de waarden van de kolommen B naar D .

➤Press F5

Resultaat :

Daarna krijgt u de volgende gegevens voor de leerlingen met de naam Michael .

Methode-7: Substring voor woord zoeken

Als u de substring als een woord wilt vinden, volg dan deze methode.

Step-01 :

volgen Step-01 van Methode-1

 Sub Stringforword() Dim j As Integer j = InStr("Hier is wat ik ben", "is") Als j = 0 Dan MsgBox "Woord niet gevonden" Else MsgBox "Woord gevonden op positie: " & j End If End Sub 

Het zal controleren of de string is en dan wordt zijn positie gegeven

➤Press F5

Resultaat :

Daarna krijgt u het volgende berichtvenster dat de woord gevonden in positie:6 (de positie van is ).

U kunt deze code uitproberen voor een woord dat niet in de string voorkomt.

Typ de volgende code over

 Sub Stringforword() Dim j As Integer j = InStr("Hier is wat ik ben", "zijn") Als j = 0 Dan MsgBox "Woord niet gevonden" Else MsgBox "Woord gevonden op positie: " & j End If End Sub 

➤Press F5

Resultaat :

Daarna krijgt u het volgende berichtvenster dat de woord niet gevonden .

Hier zal ik de manier uitleggen om de positie van een substring in een string te vinden en de teksten vóór deze substring eruit te halen met behulp van VBA en de functie LINKS .

Step-01 :

volgen Step-01 van Methode-1

 Sub InstrandLeft() Dim txt Als String Dim j Als Long txt = "Hier is wat ik ben" j = InStr(txt, "is") MsgBox Left(txt, j - 1) End Sub 

j = InStr(txt, "is") is de positie van de substring is en Links(txt, j - 1) zal de substrings voor is .

➤Press F5

Resultaat :

Daarna krijgt u het volgende berichtvenster te zien Hier (substring voor is ).

Methode-9: Een bepaalde substring in een string vouwen

U kunt de cijfers vóór haakjes vet maken in de Resultaat kolom door deze methode te volgen.

Step-01 :

volgen Step-01 van Methode-1

 Sub Boldingsubstring() Dim Cell Als Range Dim txt Als Integer Voor Elke Cel In Selectie txtCount = Len(Cell) txt = InStr(1, Cell, "(") Cell.Characters(1, txt - 1).Font.Bold = True Volgende Cel Einde Sub 

txt = InStr(1, Cell, "(") geeft de positie van het eerste haakje terug en Cell.Characters(1, txt - 1).Font.Bold maakt de substring voor het eerste haakje Gedurfd .

Step-02 :

Selecteer de Resultaat kolom

Ga naar Ontwikkelaar Tab>> Macro's Optie

Dan, een Macro wizard zal verschijnen.

Selecteer Vetgedrukte substring (de VBA-code) en dan Ren .

Resultaat :

Daarna worden de cijfers in de Resultaat Kolom worden vetgedrukt.

Praktijk Sectie

Om zelf te oefenen hebben we een Praktijk sectie zoals hieronder in een blad met de naam Praktijk Doe het alsjeblieft zelf.

Conclusie

In dit artikel heb ik geprobeerd de gemakkelijkste manieren om substring te vinden met behulp van VBA Hopelijk vindt u het nuttig. Als u suggesties of vragen heeft, voel u vrij om ze met ons te delen.

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.