Sådan finder du Substring Brug VBA (9 måder)

  • Del Dette
Hugh West

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å indhold

9 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 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 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 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 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 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 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 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 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.

Hugh West er en meget erfaren Excel-træner og analytiker med over 10 års erfaring i branchen. Han har en bachelorgrad i regnskab og finans og en kandidatgrad i Business Administration. Hugh har en passion for undervisning og har udviklet en unik undervisningstilgang, der er nem at følge og forstå. Hans ekspertviden om Excel har hjulpet tusindvis af studerende og fagfolk verden over med at forbedre deres færdigheder og udmærke sig i deres karriere. Gennem sin blog deler Hugh sin viden med verden og tilbyder gratis Excel-tutorials og onlinetræning for at hjælpe enkeltpersoner og virksomheder med at nå deres fulde potentiale.