Cuprins
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ținut9 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.