Cuprins
Implementarea VBA este cea mai eficientă, mai rapidă și mai sigură metodă de a executa orice operație în Excel. În acest articol, vă vom arăta cum să verificați dacă un șir de caractere conține un alt șir de caractere în Excel folosind VBA .
Descărcați modelul de practică
Puteți descărca gratuit modelul Excel de practică de aici.
VBA pentru a verifica dacă șirul conține o valoare.xlsm
6 Metode în VBA pentru a verifica dacă șirul conține un alt șir în Excel
Mai jos, în această secțiune, veți găsi 6 metode eficiente pentru a implementa VBA pentru a verifica dacă un șir conține sau nu un alt șir.
1. VBA pentru a verifica dacă șirul conține subșiruri
Mai jos este un exemplu de funcția InStr pentru a afla dacă un șir de caractere conține un subșir în Excel.
Pași:
- Apăsați Alt + F11 de pe tastatură sau mergeți la fila Dezvoltator -> Visual Basic pentru a deschide Editor Visual Basic .
- În fereastra de cod pop-up, din bara de meniu, faceți clic pe Inserare -> Modul .
- În fereastra de cod, copiați următorul cod și lipiți-l.
Public Sub ContainSub() If InStr("Film: Iron Man, Batman, Superman, Spiderman, Thor", "Hulk")> 0 Then MsgBox "Film găsit" Else MsgBox "Film nedescoperit" End If End Sub
Codul dumneavoastră este acum gata de a fi executat.
- Rulați macro.
În cazul în care șirul conține subșirul atunci veți obține o potrivire găsită, altfel, nu se va găsi nicio potrivire.
În exemplul nostru, am vrut să aflăm dacă șirul nostru primar " Film: Iron Man, Batman, Superman, Spiderman, Thor " conține cuvântul " Hulk "Dacă nu este așa, obținem un Filmul nu a fost găsit rezultat.
2. VBA pentru a verifica dacă șirul conține un număr
Puteți căuta dacă șirurile de caractere conțin sau nu numere folosind funcția VBA cod.
Priviți exemplul următor, în care vom afla ce șiruri de caractere conțin numere cu nume de filme.
Pași pentru a verifica dacă șirurile de caractere conțin numere cu VBA sunt prezentate mai jos.
Pași:
- În același mod ca și înainte, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
- În fereastra de cod, copiați următorul cod și lipiți-l.
Function SearchNumbers(oRng As Range) As Boolean Dim bSearchNumbers As Boolean, i As Long bSearchNumbers = False For i = 1 To Len(oRng.Text) If IsNumeric(Mid(oRng.Text, i, 1))) Then bSearchNumbers = True Exit For End If Next SearchNumbers = bSearchNumbers End Function
- Aceasta nu este o subprocedură pentru VBA să ruleze, aceasta creează un Funcție definită de utilizator (UDF), pe care îl vom apela în foaia noastră de lucru pentru a executa sarcina. Astfel, după ce am scris codul, în loc să facem clic pe butonul Rulați faceți clic pe butonul Salvați din bara de meniu pentru a salva fișierul macro.
- Acum, întoarceți-vă la foaia de lucru de interes și scrieți funcția definită de utilizator pe care tocmai ați creat-o în fereastra VBA cod ( Număr de căutare , în prima linie a codului) și în interiorul parantezelor funcției, introduceți numărul de referință al celulei din șirul de caractere care are numere de frunte (de ex. Celula B5 ).
- Apăsați Introduceți .
Veți obține o valoare booleană ( ADEVĂRAT sau Fals ), dacă șirul din celulă conține numere, atunci veți obține ADEVĂRAT , în caz contrar FALSE .
- Trageți celula în jos cu Mâner de umplere pentru a aplica formula la restul celulelor pentru a verifica care șir conține numere și care nu.
3. VBA pentru extragerea numerelor din șiruri de caractere
În secțiunea de mai sus, am învățat cum să verificăm dacă șirul conține sau nu numere. În această secțiune, vom învăța cum să extragem aceste numere și să le plasăm într-o altă celulă, cu exemplul de mai jos.
Pași pentru a verifica dacă șirurile de caractere conțin numere și pentru a le extrage cu VBA sunt prezentate mai jos.
Pași:
- Deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a UserForm de data aceasta din fila Insert din fereastra de cod.
- Din cele apărute Cutia de instrumente , trageți și plasați CommandButton în UserForm .
- Dublu clic pe buton, copiați următorul cod și lipiți-l.
Private Sub CommandButton1_Click() Worksheets("Number").Range("C2:C15").ClearContents checkNumber (Worksheets("Number").Range("B2:B15"))) End Sub Sub checkNumber(objRange As Range) Dim myAccessary As Variant Dim i As Long Dim iRow As Long iRow = 2 For Each myAccessary In objRange For i = 1 To Len(myAccessary.Value) If IsNumeric(Mid(myAccessary.Value, i,1))) Then If Trim(objRange.Cells(objRange.Row - 1, 2)) "" Then objRange.Cells(iRow - 1, 2) = _ objRange.Cells(iRow - 1, 2) & Mid(myAccessary.Text, i, 1) Else objRange.Cells(iRow - 1, 2) = Mid(myAccessary.Text, i, 1) End If End If Next i iRow = iRow + 1Next myAccessary End Sub
- Rulați codul și vă va duce la foaia de lucru de interes.
- Faceți clic pe butonul de comandă și veți obține numărul extras din șirurile de caractere.
4. VBA pentru a verifica dacă șirul conține o anumită literă
Această metodă este aproape similară cu metoda de verificare a subșirurilor dintr-un șir de caractere.
Mai jos este InStr pentru a afla dacă un șir de caractere conține o anumită literă în Excel.
Pași:
- În același mod ca și înainte, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
- În fereastra de cod, copiați următorul cod și lipiți-l.
Public Sub ContainChar() If InStr("Film: Iron Man, Batman, Superman, Spiderman, Thor", "Z")> 0 Then MsgBox "Litera găsită" Else MsgBox "Litera nu a fost găsită" End If End Sub
Codul dumneavoastră este acum gata de a fi executat.
- Rulați programul. șirul conține litera atunci veți obține o potrivire găsită, altfel, nu se va găsi nicio potrivire.
În exemplul nostru, am vrut să aflăm dacă șirul nostru primar " Film: Iron Man, Batman, Superman, Spiderman, Thor " conține litera " Z "Dacă nu este așa, obținem un Scrisoarea nu a fost găsită rezultat.
5. VBA pentru a verifica dacă un interval de șiruri conține un alt șir
Am învățat cum să verificăm dacă un anumit șir de caractere conține sau nu un alt șir de caractere, dar în această secțiune vom învăța cum să verificăm dacă un interval de șiruri de caractere conține sau nu subșiruri, având ca exemplu următorul set de date.
Pași:
- Deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
- În fereastra de cod, copiați următorul cod și lipiți-l.
Public Sub ContainsSub() If InStr(ActiveSheet.Select, "Hulk")> 0 Then MsgBox "Movie found" Else MsgBox "Movie not found" End If End Sub
Codul dumneavoastră este acum gata de a fi executat.
- Rulați codul.
În cazul în care intervalul dvs. de șirul conține subșirul atunci veți obține o potrivire găsită, în caz contrar, nu va returna nicio potrivire găsită.
6. VBA pentru a extrage șiruri de caractere din șiruri de caractere
În această secțiune, vom vedea cum să verificăm dacă șirurile de caractere conțin anumite subșiruri și cum să le extragem într-o altă celulă.
Vom extrage informațiile despre numele care încep cu " Chris " din următorul set de date.
Pași :
- Deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
- În fereastra de cod, copiați următorul cod și lipiți-l.
Sub SearchSub() Dim lastrow As Long Dim i As Integer, count As Integer lastrow = ActiveSheet.Range("A30000").End(xlUp).Row For i = 1 To lastrow If InStr(1, LCase(Range("C" &; i))), "Chris") 0 Then count = count + 1 Range("F" & count & ":H" & count) = Range("B" & i & ":D" & i).Value End If Next i End Sub
Codul dumneavoastră este acum gata de a fi executat.
- Rulați codul.
Numai numele care încep cu " Chris " vor fi stocate în celulele predefinite.