Cuprins
Dacă sunteți în căutarea unora dintre cele mai simple modalități de a găsi o potrivire exactă folosind VBA , atunci veți găsi acest articol util. Așadar, să începem cu articolul și să cunoaștem modalitățile de a găsi o potrivire exactă.
Descărcați caietul de lucru
VBA Găsește potrivire exactă.xlsm5 moduri de a găsi corespondența exactă utilizând VBA
Am folosit următorul tabel care conține înregistrările rezultatelor unor elevi. Voi explica diferite modalități de a găsi corespondența exactă folosind acest tabel cu ajutorul VBA.
În acest scop, am folosit versiunea Microsoft Excel 365, dar puteți folosi orice altă versiune în funcție de confortul dumneavoastră.
Metoda-1: Găsirea potrivirii exacte într-o gamă de celule
Dacă doriți să găsiți o potrivire exactă a unui șir de caractere, cum ar fi numele unui student, și apoi să găsiți poziția în celulă a acestui student, atunci puteți face acest lucru urmând această metodă.
Aici, voi găsi o potrivire exactă pentru elevul numit "Joseph Micahel" .
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 searchtxt() Dim rng As Range Dim str As String Set rng = Sheets("exact match").Range("B5:B10").Find("Joseph Michael", LookIn:=xlValues) If Not rng Is Nothing Then str = rng.Address MsgBox (rng & " in " & str) End If End Sub
Aici, "potrivire exactă" este numele foii și "B5:B10" este intervalul de nume ale elevilor, iar "Joseph Michael" este numele elevului care trebuie aflat.
rng este declarat ca un obiect de interval și str ca o variabilă de tip șir de caractere pentru a stoca adresa elementului căutat.
The IF va atribui adresa elementului la rubrica str variabilă.
➤Presa F5
Rezultat :
După aceea, veți obține următoarele Caseta de mesaje care conține poziția în celulă a elevului numit "Joseph Michael" .
Citește mai mult: Căutarea într-un interval cu VBA în Excel: Includerea corespondențelor exacte și parțiale
Metoda 2: Găsirea potrivirii exacte și înlocuirea acesteia utilizând VBA
Vă voi arăta cum să găsiți numele elevului indicat și apoi să-l înlocuiți cu un alt nume, deoarece cumva din greșeală acest nume a fost scris aici. Puteți găsiți șirul dorit și înlocuiți-l urmând această metodă.
Etapa-01 :
➤Follow Etapa-01 de Metoda-1
Sub FindandReplace() Dim rng As Range Dim str As String With Worksheets("find&replace").Range("B5:B10") Set rng = .Find("Donald Paul", LookIn:=xlValues) If Not rng Is Nothing Then str = rng.Address Do rng.Value = Replace(rng.Value, "Donald Paul", "Henry Jackson") Set rng = .FindNext(rng) Loop While Not rng Is Nothing End If End With End With End Sub
Aici, "find&replace" este numele foii și "B5:B10" este intervalul de nume ale elevilor, iar "Donald Paul" este numele elevului care trebuie aflat și apoi "Henry Jackson" va fi numele elevului în loc de cel anterior.
CU va evita repetarea bucății de cod în fiecare instrucțiune.
The IF va atribui adresa elementului la rubrica str și variabila DO bucla va înlocui toate aparițiile cuvântului căutat.
➤Presa F5
Rezultat :
După aceea, veți obține numele noului elev ca fiind "Henry Jackson" .
Metoda 3: Găsirea potrivirii exacte și a celor mai sensibile la majuscule și minuscule
Dacă doriți să găsiți o potrivire sensibilă la majuscule și minuscule, atunci urmați această metodă. Aici, am două nume asemănătoare, dar există o diferență de majuscule și, în funcție de aceasta, voi înlocui numele ultimului student.
Etapa-01 :
➤Follow Etapa-01 de Metoda-1
Sub exactmatch() Dim rng As Range Dim str As String With Worksheets("case-sensitive").Range("B5:B10") Set rng = .Find("Donald Paul", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True) If Not rng Is Nothing Then str = rng.Address Do rng.Value = Replace(rng.Value, "Donald Paul", "Henry Jackson") Set rng = .FindNext(rng) Loop While Not rng Is Nothing End If End With End EndSub
Aici, "case-sensitive" este numele foii și "B5:B10" este intervalul de nume ale elevilor, iar "Donald Paul" este numele elevului care trebuie aflat, iar apoi "Henry Jackson" va fi numele elevului în loc de cel anterior.
CU va evita repetarea bucății de cod în fiecare instrucțiune.
The IF va atribui adresa elementului la rubrica str și variabila DO bucla va înlocui toate aparițiile cuvântului căutat.
➤Presa F5
Rezultat :
Acum, conform cazului, numele elevului va fi schimbat în "Henry Jackson" .
Lecturi similare:
- Cum să găsiți șirul într-o celulă utilizând VBA în Excel (2 metode)
- VBA Găsiți în coloană în Excel (7 abordări)
- Cum să găsiți un șir de caractere cu VBA în Excel (8 exemple)
Metoda 4: Utilizarea funcției InStr
Să presupunem că doriți să potriviț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 acest șir în fișierul Coloana de rezultate și scrieți "A trecut" în Coloana de stare pentru studenții care au promovat examenul, puteți folosi funcția InStr .
Etapa-01 :
➤Follow Etapa-01 de Metoda-1
Sub Checkstring() 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 = " " " 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 ELSE se va executa și va da valoarea de ieșire în celula adiacentă sub forma Gol .
Această buclă va continua pentru fiecare celulă.
➤Presa F5
Rezultat :
Apoi, veți obține "A trecut" pentru studenții care au promovat.
Metoda-5: Găsirea potrivirii exacte și extragerea datelor
Dacă doriți să extrageți datele corespunzătoare pentru un elev numit "Michael James" atunci puteți urma 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 James")> 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 (puteți folosi orice interval în funcție de utilizare).
InStr(1, Range("B" & i), "Michael James")> 0 este condiția pentru a verifica dacă celula din coloana B conține Michael James .
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 coloana B la D .
➤Presa F5
Rezultat :
Ulterior, veți obține următoarele date extrase pentru elevii cu numele Michael James .
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ă vă prezint cele mai simple modalități de a găsi o potrivire exactă 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.