Inhoudsopgave
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
Voorbeeldinhoud9 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 .
Methode-8: Instr en LINKS-functie gebruiken
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.