Note: The other languages of the website are Google-translated. Back to English

Cum se compară două șiruri pentru asemănare sau evidențiază diferențele în Excel?

În unele cazuri, este posibil să fie nevoie să comparați doar două celule adiacente de șiruri și să le marcați asemănările sau diferențele în Excel. Acest articol vă oferă două metode pentru ao realiza.

Comparați două șiruri cu formula
Comparați două șiruri pentru similaritate sau evidențiați diferențele cu codul VBA


Comparați două șiruri cu formula

După cum se arată mai jos, dacă doriți doar să știți dacă șirurile comparate sunt sau nu potrivite, puteți aplica următoarea formulă.

1. Selectați o celulă necompletată C2, introduceți formula = EXACT (A2, B2) în bara de formule, apoi apăsați tasta Enter. Vedeți captura de ecran:

notițe: În formulă, A2 și B2 sunt celulele care conțin șirurile de comparare.

2. Continuați să selectați celula de rezultat, apoi trageți mânerul de umplere în celule până când obțineți toate rezultatele comparate.

Rezultatul FALS înseamnă că șirurile comparate sunt diferite, iar rezultatul TRUE indică că cele două șiruri comparate sunt potrivite. Vedeți captura de ecran:


Comparați două șiruri pentru similaritate sau evidențiați diferențele cu codul VBA

Dacă doriți să comparați două șiruri și să evidențiați asemănările sau diferențele dintre ele. Următorul cod VBA vă poate ajuta.

1. presa Alt + F11 tastele simultan pentru a deschide Microsoft Visual Basic pentru aplicații fereastră.

2. În Microsoft Visual Basic pentru aplicații fereastră, faceți clic pe Insera > Module. Apoi copiați și lipiți următorul cod în fereastra Cod.

Cod VBA: comparați două șiruri de coloane pentru diferențe de asemănare sau evidențiere

Sub highlight()
    Dim xRg1 As Range
    Dim xRg2 As Range
    Dim xTxt As String
    Dim xCell1 As Range
    Dim xCell2 As Range
    Dim I As Long
    Dim J As Integer
    Dim xLen As Integer
    Dim xDiffs As Boolean
    On Error Resume Next
    If ActiveWindow.RangeSelection.Count > 1 Then
      xTxt = ActiveWindow.RangeSelection.AddressLocal
    Else
      xTxt = ActiveSheet.UsedRange.AddressLocal
    End If
lOne:
    Set xRg1 = Application.InputBox("Range A:", "Kutools for Excel", xTxt, , , , , 8)
    If xRg1 Is Nothing Then Exit Sub
    If xRg1.Columns.Count > 1 Or xRg1.Areas.Count > 1 Then
        MsgBox "Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
        GoTo lOne
    End If
lTwo:
    Set xRg2 = Application.InputBox("Range B:", "Kutools for Excel", "", , , , , 8)
    If xRg2 Is Nothing Then Exit Sub
    If xRg2.Columns.Count > 1 Or xRg2.Areas.Count > 1 Then
        MsgBox "Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
        GoTo lTwo
    End If
    If xRg1.CountLarge <> xRg2.CountLarge Then
       MsgBox "Two selected ranges must have the same numbers of cells ", vbInformation, "Kutools for Excel"
       GoTo lTwo
    End If
    xDiffs = (MsgBox("Click Yes to highlight similarities, click No to highlight differences ", vbYesNo + vbQuestion, "Kutools for Excel") = vbNo)
    Application.ScreenUpdating = False
    xRg2.Font.ColorIndex = xlAutomatic
    For I = 1 To xRg1.Count
        Set xCell1 = xRg1.Cells(I)
        Set xCell2 = xRg2.Cells(I)
        If xCell1.Value2 = xCell2.Value2 Then
            If Not xDiffs Then xCell2.Font.Color = vbRed
        Else
            xLen = Len(xCell1.Value2)
            For J = 1 To xLen
                If Not xCell1.Characters(J, 1).Text = xCell2.Characters(J, 1).Text Then Exit For
            Next J
            If Not xDiffs Then
                If J <= Len(xCell2.Value2) And J > 1 Then
                    xCell2.Characters(1, J - 1).Font.Color = vbRed
                End If
            Else
                If J <= Len(xCell2.Value2) Then
                    xCell2.Characters(J, Len(xCell2.Value2) - J + 1).Font.Color = vbRed
                End If
            End If
        End If
    Next
    Application.ScreenUpdating = True
End Sub

3. apasă pe F5 tasta pentru a rula codul. In primul Kutools pentru Excel caseta de dialog, selectați prima coloană de șiruri de text pe care trebuie să le comparați, apoi faceți clic pe OK butonul.

4. Apoi al doilea Kutools pentru Excel se afișează caseta de dialog, selectați a doua șir de coloane și faceți clic pe OK butonul.

5. În ultimul Kutools pentru Excel casetă de dialog, dacă doriți să comparați șirurile pentru similaritate, faceți clic pe Da buton. Și pentru a evidenția diferențele șirurilor comparate, faceți clic pe Nu buton. Vedeți captura de ecran:

Apoi, puteți vedea rezultatele comparate, așa cum se arată în imaginea de mai jos.


Legate de articole:


Cele mai bune instrumente de productivitate Office

Kutools pentru Excel vă rezolvă majoritatea problemelor și vă crește productivitatea cu 80%

  • reutilizarea: Introduceți rapid formule complexe, diagrame și orice ai folosit anterior; Criptați celulele cu parola; Creați o listă de corespondență și trimiteți e-mailuri ...
  • Super Formula Bar (editați cu ușurință mai multe linii de text și formulă); Layout de citire (citiți și editați cu ușurință un număr mare de celule); Lipiți la interval filtrat...
  • Merge celule / rânduri / coloane fără a pierde date; Conținut de celule divizate; Combinați rânduri / coloane duplicate... Prevenirea celulelor duplicate; Comparați gamele...
  • Selectați Duplicat sau Unic Rânduri; Selectați Rânduri goale (toate celulele sunt goale); Super Find și Fuzzy Find în multe cărți de lucru; Selectare aleatorie ...
  • Copie exactă Mai multe celule fără modificarea referinței formulelor; Creați automat referințe la foi multiple; Introduceți gloanțe, Casete de selectare și multe altele ...
  • Extrageți textul, Adăugați text, eliminați după poziție, Eliminați spațiul; Creați și imprimați subtotaluri de paginare; Convertiți conținutul dintre celule și comentarii...
  • Super Filtru (salvați și aplicați scheme de filtrare altor foi); Sortare avansată după lună / săptămână / zi, frecvență și multe altele; Filtru special cu bold, italic ...
  • Combinați cărți de lucru și foi de lucru; Merge Tables pe baza coloanelor cheie; Împărțiți datele în mai multe foi; Conversia în loturi xls, xlsx și PDF...
  • Peste 300 de funcții puternice. Suportă Office / Excel 2007-2021 și 365. Acceptă toate limbile. Implementare ușoară în întreprinderea sau organizația dvs. Funcții complete Probă gratuită de 30 de zile. Garanție de returnare a banilor de 60 de zile.
fila kte 201905

Fila Office aduce interfața cu file în Office și vă face munca mult mai ușoară

  • Activați editarea și citirea cu file în Word, Excel, PowerPoint, Publisher, Access, Visio și Project.
  • Deschideți și creați mai multe documente în filele noi ale aceleiași ferestre, mai degrabă decât în ​​ferestrele noi.
  • Vă crește productivitatea cu 50% și reduce sute de clicuri de mouse pentru dvs. în fiecare zi!
fundul officetab
Comentarii (19)
Încă nu există evaluări. Fii primul care evaluează!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Stimate domnule, Vă mulțumesc foarte mult pentru codul dvs. VBA. Este foarte util. De fapt, nu am cunoștințe despre codificare. Deci, chiar și pentru a modifica o mică parte din codificare în funcție de cerințele mele, sunt neajutorat, am o solicitare cu privire la această codificare pentru a o face mai eficientă și mai ușor de utilizat. Mă puteți ajuta , vă rog?? Obiectivul principal al codificării de mai sus este de a găsi și evidenția diferențele dintre date în două coloane pentru o referire ușoară. Dar, această codificare este puțin complicată ca obiectiv. Deoarece, are în vedere „spațiile” dintre conținut și evidențiază toate datele, chiar dacă șirurile sunt aceleași. Deci, dacă putem compara datele fără spații, atunci putem filtra porțiunea de date evidențiate. De asemenea, în loc să evidențieze doar șirurile de caractere care nu sunt similare, evidențiază datele întregi chiar de la primul șir diferit până la date până la sfârșitul celulei. Prin urmare, aș dori să-mi închei cererea cu mai jos 2 puncte. 1) vă rugăm să editați codarea pentru a compara celulele fără a lua în considerare spațiile 2) vă rugăm să editați codarea în așa fel încât să poată evidenția doar șiruri diferite, dar să nu evidențieze întregul para de la primul punct de șir diferit. Vă mulțumesc foarte mult pentru ajutor. Cu respect, Surya
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am aceeași cerere ca suryateja.
2) vă rugăm să editați codarea în așa fel încât să poată evidenția numai șiruri diferite, dar să nu evidențieze întregul para din primul punct diferit al șirului.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Doza de mai sus cod nu funcționează dacă orice celulă conține formula.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Trebuie să știu cum pot identifica șiruri cu același format de text, astfel încât să pot conecta un cont la toate acele șiruri. De exemplu, dacă am 1,000 de celule cu conținut diferit, vreau să le separ pe cele care au formatul 042-XXX-XX-00 pentru a le lega la un cont #.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Hei
Cum copiez Coloana1 lângă Coloana2 dacă unul sau mai multe elemente din Coloana 1 seamănă/este identice cu unul sau mai multe elemente din Coloana2?
Îmi pare rău, dar lucrez cu Excel VBA de ceva vreme și nu găsesc răspunsul la această întrebare.
Vă mulțumesc în avans pentru răspunsul dumneavoastră.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Hei
Cum copiez Coloana1 lângă Coloana2 dacă unul sau mai multe elemente din Coloana 1 seamănă/este identice cu unul sau mai multe elemente din Coloana2?
Îmi pare rău, dar lucrez cu Excel VBA de ceva vreme și nu găsesc răspunsul la această întrebare.
Vă mulțumesc în avans pentru răspunsul dumneavoastră.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Script foarte util! Mulțumiri
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cum pot obține numărul de diferență între două șiruri?

Exemplu: „123456” și „213456” ==> 2 diferență
Acest comentariu a fost redus la minimum de moderatorul de pe site
vreau doar să spun mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Speram atât de mult că asta va funcționa. Se pare că compară celule întregi și nu caractere din celule. Pur și simplu comparând Candy într-o celulă cu Andy într-o altă celulă nu găsește asemănări. Și când compar diferențele, întregul nume Andy este evidențiat în roșu.
Acest comentariu a fost redus la minimum de moderatorul de pe site
În primul rând..MULȚUMIM Oameni de la Extend Office pentru codul bun!!

Încercați această modificare. Pur și simplu extinde bucla de verificare pe caracter pentru a include formatarea culorii fontului, adaugă un „Negru” implicit și, de asemenea, compară caracterele cu cea mai lungă dintre cele două celule comparate.

Sub highlight()
    Dim xRg1 As Range
    Dim xRg2 As Range
    Dim xTxt As String
    Dim xCell1 As Range
    Dim xCell2 As Range
    Dim I As Long
    Dim J As Integer
    Dim xLen As Integer
    Dim xDiffs As Boolean
    On Error Resume Next
    If ActiveWindow.RangeSelection.Count > 1 Then
      xTxt = ActiveWindow.RangeSelection.AddressLocal
    Else
      xTxt = ActiveSheet.UsedRange.AddressLocal
    End If
lOne:
    Set xRg1 = Application.InputBox("Range A:", "Kutools for Excel", xTxt, , , , , 8)
    If xRg1 Is Nothing Then Exit Sub
    If xRg1.Columns.Count > 1 Or xRg1.Areas.Count > 1 Then
        MsgBox "Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
        GoTo lOne
    End If
lTwo:
    Set xRg2 = Application.InputBox("Range B:", "Kutools for Excel", "", , , , , 8)
    If xRg2 Is Nothing Then Exit Sub
    If xRg2.Columns.Count > 1 Or xRg2.Areas.Count > 1 Then
        MsgBox "Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
        GoTo lTwo
    End If
    If xRg1.CountLarge <> xRg2.CountLarge Then
       MsgBox "Two selected ranges must have the same numbers of cells ", vbInformation, "Kutools for Excel"
       GoTo lTwo
    End If
    xDiffs = (MsgBox("Click Yes to highlight similarities, click No to highlight differences ", vbYesNo + vbQuestion, "Kutools for Excel") = vbNo)
    Application.ScreenUpdating = False
    xRg2.Font.ColorIndex = xlAutomatic
    For I = 1 To xRg1.Count
        Set xCell1 = xRg1.Cells(I)
        Set xCell2 = xRg2.Cells(I)
        If xCell1.Value2 = xCell2.Value2 Then
            If Not xDiffs Then xCell2.Font.Color = vbRed
        Else
            xLen = Application.WorksheetFunction.Max(Len(xCell1.Value2), Len(xCell2.Value2))
            For J = 1 To xLen
                xCell2.Characters(J, Len(xCell2.Value2) - J + 1).Font.Color = vbBlack
                If Not xCell1.Characters(J, 1).Text = xCell2.Characters(J, 1).Text Then
                    If Not xDiffs Then
                        If J <= Len(xCell2.Value2) And J > 1 Then
                            xCell2.Characters(1, J - 1).Font.Color = vbRed
                        End If
                    Else
                        If J <= Len(xCell2.Value2) Then
                            xCell2.Characters(J, Len(xCell2.Value2) - J + 1).Font.Color = vbRed
                        End If
                    End If
                End If
            Next J
        End If
    Next
    Application.ScreenUpdating = True
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
MULȚUMESC! tocmai de asta aveam nevoie!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Pentru a evita orice problemă a acestui cod cu spațiile care ar trebui să fie în valoarea ASCII 32 sau 160 (mai ales dacă șirul provine din HTML), trebuie să includeți linia de testare 46 într-o buclă if endif, ca mai jos:
Dacă nu ((Asc(xCell1.Characters(J, 1).Text) = 32 Sau Asc(xCell1.Characters(J, 1).Text) = 160) Și (Asc(xCell2.Characters(J, 1).Text) ) = 32 Sau Asc(xCell2.Characters(J, 1).Text) = 160)) Apoi
( rândul 46 Dacă nu xCell1.Characters(J, 1).Text = xCell2.Characters(J, 1).Text Then Exit For)
Final, dacă

Cu toate acestea, mulțumesc pentru cod.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cum adaug asta corect? Primesc o eroare când am încercat să înlocuiesc linia 46. Mulțumesc
Acest comentariu a fost redus la minimum de moderatorul de pe site
în exemplul tău, cuvintele „hai să încercăm” sunt similare, dar codul tău nu îl poate evidenția.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Confrontando la cella VIA ROMA 1 con la cella VIA RROMA 1 il programma evidenzia in rosso sia RROMA che 1. Non si può fare in modo che evidenzi solo la lettera diversa e quindi R? Merci
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,
Cum pot edita codul astfel încât să compare 2 coloane și să evidențieze diferențele din ambele coloane?
De exemplu:
Coloana 1
A1,A2,A3,A4: Evidențiați A1 și A3
Coloana 2
A2,A4,A5,A6,A7: Highlight A5,A6,A7
Acest comentariu a fost redus la minimum de moderatorul de pe site
Buna Lala,
Ar fi bine dacă ați putea încărca o captură de ecran a datelor dvs. și a rezultatului pe care doriți să-l obțineți.
Nu există comentarii postate aici încă
Lăsa comentarii
Postare ca invitat
×
Evaluează această postare:
0   Caractere
Locații sugerate

Urmărește-ne

Copyright © 2009 - www.extendoffice.com. | Toate drepturile rezervate. Cu sprijinul ExtendOffice. | Harta site-ului
Microsoft și sigla Office sunt mărci comerciale sau mărci comerciale înregistrate ale Microsoft Corporation în Statele Unite și / sau în alte țări.
Protejat de Sectigo SSL