Cum să găsiți subșiruri folosind VBA (9 moduri)

  • Imparte Asta
Hugh West

Dacă sunteți în căutarea unora dintre cele mai simple modalități de a găsi substringuri folosind VBA, atunci sunteți în locul potrivit. După ce veți parcurge acest articol, veți putea găsi poziția unui substring sau extrage date folosind acest substring sau schimba cu ușurință formatul unui substring. Să intrăm în articol.

Descărcați caietul de lucru

Exemplu de conținut

9 moduri de a găsi subșiruri folosind VBA

Aici, am următorul tabel de date prin care voi arăta modalitățile de găsire a subșirurilor într-un șir de caractere folosind VBA. Voi încerca, de asemenea, să arăt modalitățile de găsire a subșirurilor într-un șir aleatoriu.

Am realizat această sarcină folosind Microsoft Excel 365 puteți utiliza orice altă versiune, în funcție de confortul dumneavoastră.

Metoda-1: Găsirea subșirului într-un șir de caractere utilizând VBA

Dacă doriți să găsiți subșirul dorit într-un șir de caractere folosind VBA, puteți utiliza funcția InStr în codul VBA.

Etapa-01 :

➤Vezi la Dezvoltator Tab>> Visual Basic Opțiunea

Apoi, se va trece la Editor Visual Basic se va deschide.

➤Vezi la Introduceți Tab>> Modul Opțiunea

După aceea, un Modul vor fi create.

Etapa-02 :

➤Scrieți următorul cod

 Sub FindFirst() Dim Pos As Integer Pos = InStr(1, "Cred, deci sunt", "cred") MsgBox Pos End Sub 

Aici, InStr(1, "Cred, deci sunt", "cred") va returna poziția subșirului unui șir de caractere. 1 este poziția de pornire, " Cred, deci sunt" este șirul în care se va găsi substringul dorit, iar "cred" este subșirul pe care doriți să îl găsiți. În mod implicit, este sensibil la majuscule și minuscule, așa că aveți grijă la majusculele din subșirul pe care doriți să îl căutați.

➤Presa F5

Rezultat :

După aceea, veți obține următoarele Caseta de mesaje care conține poziția "cred" substring.

Metoda 2: Găsirea subșirului sensibil la majuscule și minuscule într-un șir de caractere

Dacă doriți să găsiți subșirul dorit într-un șir de caractere, indiferent de caz, utilizând VBA, atunci urmați această metodă.

Etapa-01 :

➤Follow Etapa-01 de Metoda-1

 Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "I Think Therefore I Am", "think",vbTextCompare) MsgBox Pos End Sub 

Aici, vbTextCompare este utilizat pentru a găsi o subșiră care nu ține cont de majuscule și minuscule.

➤Presa F5

Rezultat :

Apoi, veți obține următoarele Caseta de mesaje care conține poziția "cred" substring.

Puteți face același lucru folosind următorul cod.

 Option Compare Text Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "I Think Therefore I Am", "think") MsgBox Pos End Sub 

Aici, Opțiunea Comparați textul va găsi subșiruri care nu țin cont de majuscule și minuscule.

➤Presa F5

Rezultat :

După aceea, veți obține următoarele Caseta de mesaje care conține poziția "cred" substring.

Metoda-3: Utilizarea funcției InstrRev în VBA

Aici, voi arăta modul de a găsi un subșir de la sfârșitul unui șir de caractere.

Etapa-01 :

➤Follow Etapa-01 de Metoda-1

 Sub FindFromEnd() MsgBox InStrRev("Cred, deci sunt", "I") End Sub 

InStrRev va găsi subșirul din partea dreaptă în loc de partea stângă.

➤Presa F5

Rezultat :

Apoi, veți obține următoarele Caseta de mesaje care conține poziția celui de-al doilea "I" subșir din partea dreaptă.

Metoda 4: Găsirea poziției subșirului într-un șir de caractere într-un interval de date

Dacă doriți să găsiți caracterul special "@" în ID e-mail , apoi urmați această metodă. Am adăugat aici Coloana de poziție în acest scop.

Etapa-01 :

➤Follow Etapa-01 de Metoda-1

 Function FindSubstring(value As Range) As Integer Dim Pos As Integer Pos = InStr(1, value, "@") FindSubstring = Pos End Function 

Se va crea o funcție numită FindSubstring (puteți folosi orice alt nume)

valoare este referința celulei care conține șirul de caractere și este declarată ca fiind Gama .

Etapa-02 :

➤Selectați ieșirea Celula E5

➤Typează următoarea funcție (creată de VBA )

=FindSubstring(D5)

D5 este celula care conține șirul de caractere.

➤Presa ENTER

➤Drag down the Mâner de umplere Instrument

Rezultat :

După aceea, veți obține pozițiile caracterului special " @" în ID e-mail .

Lecturi similare:

  • Cum să găsiți șirul într-o celulă utilizând VBA în Excel (2 metode)
  • FindNext utilizând VBA în Excel (2 exemple)
  • Cum să găsiți un șir de caractere cu VBA în Excel (8 exemple)
  • VBA Găsiți ultimul rând în Excel (5 moduri)

Metoda 5: Verificarea unui anumit subșir dintr-un șir de caractere într-un interval de date

Să presupunem că doriți să scrieți Treceți sau Nu corespund la numele elevilor în funcție de Coloana de rezultate unde Treceți sau Eșec Pentru a găsi această subșiră în Coloana de rezultate și scrieți-o în Coloană de trecere sau de eșec urmați această metodă.

Etapa-01 :

➤Follow Etapa-01 de Metoda-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 

Aici, intervalul de celule este C5:C10 care este Coloana de rezultate

InStr(cell.value, "Pass")> 0 este condiția în care numărul este mai mare decât zero (atunci când celula conține "Pas" ), atunci linia următoare va continua și va da rezultatul în celula adiacentă ca fiind A trecut .

În cazul în care condiția devine falsă înseamnă că o celulă nu conține nici o "Pas" atunci linia de sub Altfel se va executa și va da valoarea de ieșire în celula adiacentă sub forma A eșuat .

Această buclă va continua pentru fiecare celulă.

➤Presa F5

Rezultat :

Apoi, veți obține următoarele ieșiri în fișierul Trece sau nu trece coloană.

Metoda 6: Verificarea unui anumit subșir dintr-un șir de caractere și extragerea datelor

Vă voi arăta cum să-i găsiți pe elevii numiți Michael în Coloana Nume elev și să extragem datele corespunzătoare acestora folosind VBA în această metodă.

Etapa-01 :

➤Follow Etapa-01 de Metoda-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 

Aici, am folosit B100 ca Gama de foi active dar puteți folosi orice interval în funcție de utilizare.

InStr(1, Range("B" & i), "Michael")> 0 este condiția pentru a verifica dacă celula din coloana B conține Michael

Range("E" & icount & ":G" & icount) este intervalul în care doriți datele de ieșire și Range("B" & i & ":D" & i).value va da valorile din coloanele B la D .

➤Presa F5

Rezultat :

După aceea, veți obține următoarele date extrase pentru elevii care au numele Michael .

Metoda-7: Căutarea subșirurilor pentru cuvânt

Dacă doriți să găsiți subșirul sub forma unui cuvânt, urmați această metodă.

Etapa-01 :

➤Follow Etapa-01 de Metoda-1

 Sub Stringforword() Dim j As Integer j = InStr("Aici este ceea ce sunt", "este") If j = 0 Then MsgBox "Cuvântul nu a fost găsit" Else MsgBox "Cuvântul a fost găsit în poziția: " & j End If End Sub 

Se va verifica dacă șirul conține este și apoi poziția sa va fi dată

➤Presa F5

Rezultat :

După aceea, veți primi următoarea casetă de mesaje care arată următorul mesaj cuvânt găsit în poziția:6 (poziția este ).

Puteți testa acest cod pentru un cuvânt care nu se află în șir.

➤Tastați următorul cod

 Sub Stringforword() Dim j As Integer j = InStr("Iată ce sunt", "sunt") If j = 0 Then MsgBox "Cuvânt nedescoperit" Else MsgBox "Cuvânt găsit în poziția: " & j End If End Sub 

➤Presa F5

Rezultat :

După aceea, veți primi următoarea casetă de mesaje care arată următorul mesaj Cuvânt nedescoperit .

Metoda 8: Utilizarea funcției Instr și LEFT

Aici, voi explica modul de a găsi poziția unei subșiruri într-un șir de caractere și de a extrage textele dinaintea acestei subșiruri folosind VBA și funcția LEFT .

Etapa-01 :

➤Follow Etapa-01 de Metoda-1

 Sub InstrandLeft() Dim txt As String Dim j As Long txt = "Iată ce sunt" j = InStr(txt, "este") MsgBox Left(txt, j - 1) End Sub 

j = InStr(txt, "is") este poziția subșirului este și Stânga(txt, j - 1) va extrage subșirurile înainte de este .

➤Presa F5

Rezultat :

După aceea, veți primi următoarea casetă de mesaje care arată Aici (substring înainte de este ).

Metoda-9: Bolding un anumit substring într-un șir de caractere

Puteți scrie cu bold notele de dinaintea parantezelor din Coloana de rezultate urmând această metodă.

Etapa-01 :

➤Follow Etapa-01 de Metoda-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, Cell, "(") va returna poziția primei paranteze și Cell.Characters(1, txt - 1).Font.Bold va face ca substringa din fața primei paranteze Bold .

Etapa-02 :

➤Select the Coloana de rezultate

➤Vezi la Dezvoltator Tab>> Macros Opțiunea

Apoi, a Macro va apărea expertul.

➤Select Boldingsubstring (numele de cod VBA) și apoi Rulați .

Rezultat :

După aceea, notele din Rezultat Coloana vor fi evidențiate cu bold.

Secțiunea practică

Pentru a face practică de unul singur am pus la dispoziție un Practică ca mai jos, într-o foaie numită Practică Vă rog să o faceți singur.

Concluzie

În acest articol, am încercat să acopăr cele mai simple moduri de a găsi substring folosind VBA în Excel în mod eficient. Sperăm că vă va fi de folos. Dacă aveți sugestii sau întrebări, nu ezitați să le împărtășiți cu noi.

Hugh West este un trainer și analist Excel cu o experiență de peste 10 ani în industrie. Deține o diplomă de licență în contabilitate și finanțe și un master în administrarea afacerilor. Hugh are o pasiune pentru predare și a dezvoltat o abordare unică de predare care este ușor de urmărit și de înțeles. Cunoștințele sale experte despre Excel au ajutat mii de studenți și profesioniști din întreaga lume să-și îmbunătățească abilitățile și să exceleze în cariera lor. Prin blogul său, Hugh își împărtășește cunoștințele lumii, oferind tutoriale gratuite Excel și instruire online pentru a ajuta persoanele și companiile să-și atingă întregul potențial.