Cum să găsiți o potrivire exactă utilizând VBA în Excel (5 moduri)

  • Imparte Asta
Hugh West

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ă.xlsm

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

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.