Indholdsfortegnelse
Hvis du leder efter nogle af de nemmeste måder at finde delstrenge ved hjælp af VBA, er du kommet til det rette sted. Når du har gennemgået denne artikel, vil du være i stand til at finde positionen for en delstreng eller udtrække data ved hjælp af denne delstreng eller ændre formatet for en delstreng nemt. Lad os komme ind i artiklen.
Download arbejdsbog
Eksempel på indhold9 måder at finde delstrenge på ved hjælp af VBA
Her har jeg følgende datatabel, som jeg vil vise, hvordan man kan finde en delstreng i en streng ved hjælp af VBA. Jeg vil også forsøge at vise, hvordan man kan finde en delstreng i en tilfældig streng.
Jeg har udført denne opgave ved hjælp af Microsoft Excel 365 version, kan du bruge en hvilken som helst anden version, alt efter hvad der passer dig bedst.
Metode-1: Finde delstreng i en streng ved hjælp af VBA
Hvis du vil finde den ønskede delstreng i en streng ved hjælp af VBA, kan du bruge InStr-funktionen i VBA-koden.
Step-01 :
➤Gå til Udvikler Tab>> Visual Basic Mulighed
Derefter er det Visual Basic-editor vil åbne sig.
➤Gå til Indsæt Tab>> Modul Mulighed
Herefter vil en Modul vil blive oprettet.
Step-02 :
➤Skriv følgende kode
Sub FindFirst() Dim Pos As Integer Pos = InStr(1, "Jeg tror, derfor er jeg", "tror") MsgBox Pos End Sub
Her, InStr(1, "Jeg tror, derfor er jeg", "tror") returnerer positionen for understrengen i en streng. 1 er startpositionen, " Jeg tænker, derfor er jeg" er den streng, hvor du vil finde den ønskede delstreng, og "tænke" er den delstreng, du ønsker at finde. Som standard er der forskel på store og små bogstaver, så du skal være opmærksom på, hvor stor eller lille den delstreng er, som du ønsker at søge i.
➤Presse F5
Resultat :
Herefter får du følgende Meddelelsesboks med positionen af "tænke" understreng.
Metode-2: Finde en understreng i en streng, der tager hensyn til store og små bogstaver
Hvis du vil finde den ønskede delstreng i en streng uanset tilfældet ved hjælp af VBA, skal du følge denne metode.
Step-01 :
➤Follow Step-01 på Metode-1
Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "I Think Therefore I Am", "think", "think",vbTextCompare) MsgBox Pos End Sub
Her, vbTextCompare bruges til at finde en understreng uden hensyn til store og små bogstaver.
➤Presse F5
Resultat :
Derefter får du følgende Meddelelsesboks med positionen af "tænke" understreng.
Du kan gøre det samme ved at bruge følgende kode.
Option Compare Text Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "I Think Therefore I Am", "think") MsgBox Pos End Sub
Her, Mulighed Sammenligne tekst vil finde en understreng uden hensyn til store og små bogstaver.
➤Presse F5
Resultat :
Herefter får du følgende Meddelelsesboks med positionen af "tænke" understreng.
Metode-3: Brug af InstrRev-funktionen i VBA
Her vil jeg vise, hvordan man finder en delstreng fra slutningen af en streng.
Step-01 :
➤Follow Step-01 på Metode-1
Sub FindFromEnd() MsgBox InStrRev("Jeg tror, derfor er jeg", "Jeg") End Sub
InStrRev finder delstrengen fra højre side i stedet for venstre side.
➤Presse F5
Resultat :
Derefter får du følgende Meddelelsesboks med positionen for den anden "I" delstreng fra højre side.
Metode-4: Finde positionen for delstrenge i en streng i et datarække
Hvis du ønsker at finde specialtegnet "@" i den E-mail-id , så følg denne metode. Jeg har tilføjet her den Stillingskolonne til dette formål.
Step-01 :
➤Follow Step-01 på Metode-1
Function FindSubstring(value As Range) As Integer Dim Pos As Integer Pos = InStr(1, value, "@") FindSubstring = Pos End Function
Den vil oprette en funktion ved navn FindSubstring (du kan bruge et hvilket som helst andet navn)
værdi er den cellereference, der indeholder strengen, og den er deklareret som Område .
Step-02 :
➤Vælg output Celle E5
➤Typ følgende funktion (oprettet af VBA )
=FindSubstring(D5)
D5 er den celle, der indeholder strengen.
➤Presse INDTAST
➤Træk ned på Håndtag til påfyldning Værktøj
Resultat :
Herefter får du positionerne for specialtegnet " @" i den E-mail-id .
Lignende læsninger:
- Sådan finder du String i en celle ved hjælp af VBA i Excel (2 metoder)
- FindNext ved hjælp af VBA i Excel (2 eksempler)
- Sådan finder du en streng med VBA i Excel (8 eksempler)
- VBA Find sidste række i Excel (5 måder)
Metode-5: Kontrol af en bestemt delstreng i en streng i en række data
Antag, at du ønsker at skrive Pass eller Undlader at svare til navnene på de studerende afhængigt af den Resultat kolonne hvor Pass eller Fail er blevet skrevet i en parentes. For at finde denne delstreng i Resultat kolonne og skriv det ned i Kolonne "bestået eller ikke bestået følge denne metode.
Step-01 :
➤Follow Step-01 på Metode-1
Sub CheckSubstring() Dim cell As Range For Each cell In Range("C5:C10") If InStr(cell.value, "Pass")> 0 Then cell.Offset(0, 1).value = "Passed" Else cell.Offset(0, 1).value = "Failed" End If Next cell End Sub
Her er celleområdet C5:C10 som er den Resultat kolonne
InStr(cell.value, "Pass")> 0 er den betingelse, hvor tallet er større end nul (når cellen indeholder "Bestået" ), vil den følgende linje fortsætte og give resultatet i den tilstødende celle som Bestået .
Hvis betingelsen bliver falsk, betyder det, at en celle ikke indeholder nogen "Bestået" så er linjen under Ellers vil blive udført og give outputværdien i den tilstødende celle som Mislykkedes .
Denne løkke fortsætter for hver celle.
➤Presse F5
Resultat :
Derefter vil du få følgende output i Bestået eller ikke bestået kolonne.
Metode-6: Kontrol af en bestemt delstreng i en streng og udtrække data
Jeg vil vise dig vejen til de elever, der hedder Michael i den Kolonne med elevens navn og udtrække deres tilsvarende data ved hjælp af VBA i denne metode.
Step-01 :
➤Follow Step-01 på Metode-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 & i & ":D" & i).value End If Next i End Sub
Her har jeg brugt B100 som den Aktivt arkområde men du kan bruge et hvilket som helst interval, alt efter hvad du ønsker.
InStr(1, Range("B" & i), "Michael")> 0
er betingelsen for at kontrollere, om cellen i kolonne B indeholder Michael
Range("E" & icount & ":G" & icount)
er det område, hvor du vil have dine uddata, og Range("B" & i & ":D" & i).value
vil give værdierne fra kolonnerne B til D .
➤Presse F5
Resultat :
Derefter får du følgende udtræk af data for de elever, der har navnet Michael .
Metode-7: Søgning af delstreng efter ord
Hvis du ønsker at finde delstrengen som et ord, skal du følge denne metode.
Step-01 :
➤Follow Step-01 på Metode-1
Sub Stringforword() Dim j As Integer j = InStr("Her er hvad jeg er", "er") If j = 0 Then MsgBox "Ord ikke fundet" Else MsgBox "Ord fundet i position: " & j End If End If End Sub
Den vil kontrollere, om strengen indeholder er og derefter vil dens position være givet
➤Presse F5
Resultat :
Herefter får du følgende beskedboks, som viser følgende ord fundet i position:6 (den position af er ).
Du kan afprøve denne kode for et ord, der ikke findes i strengen.
➤Typ følgende kode
Sub Stringforword() Dim j As Integer j = InStr("Her er hvad jeg er", "er") If j = 0 Then MsgBox "Ord ikke fundet" Else MsgBox "Ord fundet i position: " & j End If End If End Sub
➤Presse F5
Resultat :
Herefter får du følgende beskedboks, som viser følgende ord ikke fundet .
Metode-8: Brug af Instr og LEFT-funktionen
Her vil jeg forklare, hvordan man finder positionen for en delstreng i en streng og udtrække teksterne før denne delstreng ved hjælp af VBA og funktionen LEFT .
Step-01 :
➤Follow Step-01 på Metode-1
Sub InstrandLeft() Dim txt As String Dim j As Long txt = "Her er hvad jeg er" j = InStr(txt, "is") MsgBox Left(txt, j - 1) End Sub
j = InStr(txt, "is")
er placeringen af delstrengen er og Venstre(txt, j - 1)
vil udtrække understrenge før er .
➤Presse F5
Resultat :
Herefter får du følgende beskedboks, som viser Her (delstreng før er ).
Metode-9: Fedt en bestemt delstreng i en streng
Du kan sætte karaktererne før parenteser i Resultat kolonne ved at følge denne metode.
Step-01 :
➤Follow Step-01 på Metode-1
Sub Boldingsubstring() Dim Cell As Range Dim txt As Integer For Each Cell In Selection txtCount = Len(Cell) txt = InStr(1, Cell, "(") Cell.Characters(1, txt - 1).Font.Bold = True Next Cell End Sub
txt = InStr(1, Celle, "(")
returnerer placeringen af den første parentes og Cell.Characters(1, txt - 1).Font.Bold
vil gøre understrengen før den første parentes Fed .
Step-02 :
➤Vælg den Resultat kolonne
➤Gå til Udvikler Tab>> Makroer Mulighed
Derefter skal en Makro vises.
➤Vælg Fed understreng (VBA-kodenavnet) og derefter Kør .
Resultat :
Herefter vil karaktererne i de Resultat Kolonne vil blive skrevet med fed.
Øvelsesafsnit
For at du kan øve dig selv, har vi givet dig en Praksis afsnit som nedenfor i et ark med navnet Praksis . gør det venligst selv.
Konklusion
I denne artikel har jeg forsøgt at beskrive de nemmeste måder at finde en delstreng på ved hjælp af VBA i Excel effektivt. Jeg håber, at du vil finde det nyttigt. Hvis du har forslag eller spørgsmål, er du velkommen til at dele dem med os.