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

Hur jämför jag två strängar för likhet eller markerar skillnader i Excel?

I vissa fall kan du bara behöva jämföra två intilliggande strängceller och markera deras likheter eller skillnader i Excel. Den här artikeln innehåller två metoder för att uppnå det.

Jämför två strängar med formeln
Jämför två strängar för likhet eller markera skillnader med VBA-kod


Jämför två strängar med formeln

Som nedanstående skärmdump visas, om du bara vill veta om de jämförda strängarna matchas eller inte, kan du använda följande formel.

1. Välj en tom cell C2, ange formel = EXAKT (A2, B2) in i formelfältet och tryck sedan på Enter. Se skärmdump:

Anmärkningar: I formeln är A2 och B2 cellerna som innehåller de jämförande strängarna.

2. Fortsätt att välja resultatcellen och dra sedan Fill Handle till cellerna tills du får alla jämförda resultat.

FALSE-resultatet betyder att de jämförda strängarna är olika, och det Sanna resultatet indikerar att de två jämförda strängarna matchas. Se skärmdump:


Jämför två strängar för likhet eller markera skillnader med VBA-kod

Om du vill jämföra två strängar och markera likheterna eller skillnaderna mellan dem. Följande VBA-kod kan hjälpa dig.

1. Tryck andra + F11 samtidigt för att öppna Microsoft Visual Basic för applikationer fönster.

2. I Microsoft Visual Basic för applikationer fönstret klickar Insert > Modulerna. Kopiera och klistra sedan in följande kod i kodfönstret.

VBA-kod: Jämför två kolumnsträngar för likhet eller markera skillnader

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. tryck på F5 för att köra koden. I den första Kutools för Excel Välj den första kolumnen med textsträngar du behöver jämföra och klicka sedan på OK knapp.

4. Sedan den andra Kutools för Excel dialogrutan dyker upp, välj de andra kolumnsträngarna och klicka på OK knapp.

5. I det sista Kutools för Excel dialogrutan, om du vill jämföra strängar för likhet, klicka på Ja knapp. Och för att markera skillnaderna i de jämförda strängarna, klicka på Nej knapp. Se skärmdump:

Då kan du se de jämförda resultaten som visas nedan.


Relaterade artiklar:


De bästa Office-produktivitetsverktygen

Kutools för Excel löser de flesta av dina problem och ökar din produktivitet med 80%

  • återanvändning: Sätt snabbt i komplexa formler, diagram och allt som du har använt tidigare; Kryptera celler med lösenord; Skapa e-postlista och skicka e-post ...
  • Super Formula Bar (enkelt redigera flera rader med text och formel); Läslayout (enkelt läsa och redigera ett stort antal celler); Klistra in i filtrerat intervall...
  • Sammanfoga celler / rader / kolumner utan att förlora data; Delat cellinnehåll; Kombinera duplicerade rader / kolumner... Förhindra duplicerade celler; Jämför intervall...
  • Välj Duplicera eller Unikt Rader; Välj tomma rader (alla celler är tomma); Super Find och Fuzzy Find i många arbetsböcker; Slumpmässigt val ...
  • Exakt kopia Flera celler utan att ändra formelreferens; Skapa referenser automatiskt till flera ark; Sätt in kulor, Kryssrutor och mer ...
  • Extrahera text, Lägg till text, ta bort efter position, Ta bort mellanslag; Skapa och skriva ut personsökningstalsatser; Konvertera mellan celler innehåll och kommentarer...
  • Superfilter (spara och tillämpa filterscheman på andra ark); Avancerad sortering efter månad / vecka / dag, frekvens och mer; Specialfilter av fet, kursiv ...
  • Kombinera arbetsböcker och arbetsblad; Sammanfoga tabeller baserat på nyckelkolumner; Dela data i flera ark; Batchkonvertera xls, xlsx och PDF...
  • Mer än 300 kraftfulla funktioner. Stöder Office / Excel 2007-2021 och 365. Stöder alla språk. Enkel implementering i ditt företag eller organisation. Fullständiga funktioner 30 dagars gratis provperiod. 60 dagars pengarna tillbaka-garanti.
kte-flik 201905

Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare

  • Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
  • Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
  • Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!
officetab botten
Sortera kommentarer efter
Kommentarer (19)
Inga betyg än. Bli först med att betygsätta!
Denna kommentar minimerades av moderatoren på webbplatsen
Bäste herr, Tack så mycket för din VBA-kod. Det är väldigt användbart. Jag har faktiskt ingen kunskap om kodning. Så, även för att ändra en liten del av kodningen enligt mina krav, jag är hjälplös, jag har en begäran om denna kodning för att göra den mer effektiv och användarvänlig. Kan du snälla hjälpa mig?? Huvudsyftet med ovanstående kodning är att hitta och markera skillnaderna mellan data i två kolumner för enkel referens. Men denna kodning är lite komplicerad när det gäller objektiv. Eftersom det tar hänsyn till "mellanrummen" mellan innehållet och det markerar hela data även om strängarna är samma. Så om vi kan jämföra data utan mellanslag kan vi filtrera delen av markerade data. Istället för att bara markera strängarna som inte liknar varandra, markeras hela data från den första olika strängen till data till slutet av cellen. Därför skulle jag vilja avsluta min begäran som nedan 2 punkter. 1) vänligen redigera kodningen för att jämföra cellerna utan att ta hänsyn till mellanslagen 2) vänligen redigera kodningen på ett sådant sätt att den bara kan markera olika strängar men inte markera hela paragrafen från den första olika strängpunkten. Tack så mycket för hjälpen. Hälsningar, Surya
Denna kommentar minimerades av moderatoren på webbplatsen
jag har samma begäran som suryateja.
2) redigera kodningen på ett sådant sätt att den bara kan markera olika strängar men inte markera hela paragrafen från den första olika strängpunkten.
Denna kommentar minimerades av moderatoren på webbplatsen
Ovan koddos fungerar inte om någon cell innehåller formel.
Denna kommentar minimerades av moderatoren på webbplatsen
Tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Behöver veta hur jag kan identifiera strängar med samma textformat så att jag kan länka en acct till alla dessa strängar. Till exempel, om jag har 1,000 042 celler med olika innehåll, vill jag separera de som har formatet 00-XXX-XX-XNUMX för att länka dem till ett kontonummer.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej
Hur kopierar jag Kolumn1 bredvid Kolumn2 om ett eller flera objekt i Kolumn 1 liknar / är identiska med ett eller flera objekt i Kolumn2?
Jag är ledsen men jag har arbetat med Excel VBA ett tag och jag kan inte hitta svaret på denna fråga.
Tack på förhand för ditt svar.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej
Hur kopierar jag Kolumn1 bredvid Kolumn2 om ett eller flera objekt i Kolumn 1 liknar / är identiska med ett eller flera objekt i Kolumn2?
Jag är ledsen men jag har arbetat med Excel VBA ett tag och jag kan inte hitta svaret på denna fråga.
Tack på förhand för ditt svar.
Denna kommentar minimerades av moderatoren på webbplatsen
Mycket användbart script! tack
Denna kommentar minimerades av moderatoren på webbplatsen
Hur kan jag få skillnadsnummer mellan två strängar?

Exempel: "123456" och "213456" ==> 2 skillnad
Denna kommentar minimerades av moderatoren på webbplatsen
vill bara säga tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Jag hoppades så att detta skulle fungera. Det verkar jämföra hela celler och inte tecken i cellerna. Att helt enkelt jämföra Candy i en cell med Andy i en annan finner inga likheter. Och när jag jämför för skillnader är hela namnet Andy markerat i rött.
Denna kommentar minimerades av moderatoren på webbplatsen
Först och främst..TACK Extend Office gott folk för den bra koden!!

Prova denna modifiering. Den utökar helt enkelt kontrollslingan per tecken för att inkludera teckensnittets färgformatering, lägger till en standard "svart" och jämför också tecken med den längsta av de två celler som jämförs.

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
Denna kommentar minimerades av moderatoren på webbplatsen
TACK! det här är precis vad jag behövde!
Denna kommentar minimerades av moderatoren på webbplatsen
För att undvika problem med den här koden med mellanslag som ska vara i ASCII-värde 32 eller 160 (särskilt om strängen kommer från HTML) måste du inkludera testrad 46 i en if endif-loop enligt nedan:
Om inte ((Asc(xCell1.Characters(J, 1).Text) = 32 Eller Asc(xCell1.Characters(J, 1).Text) = 160) Och (Asc(xCell2.Characters(J, 1).Text ) = 32 Eller Asc(xCell2.Characters(J, 1).Text) = 160)) Sedan
( rad 46 Om inte xCell1.Characters(J, 1).Text = xCell2.Characters(J,1).Text Then Exit For)
End If

Men tack för koden.
Denna kommentar minimerades av moderatoren på webbplatsen
Hur lägger jag till detta på rätt sätt? Jag får ett felmeddelande när jag försökte byta ut linje 46. Tack
Denna kommentar minimerades av moderatoren på webbplatsen
i ditt exempel är orden "låt oss försöka" liknande men din kod kan inte markera den.
Denna kommentar minimerades av moderatoren på webbplatsen
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? Grazie
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,
Hur kan jag redigera koden så att den kommer att jämföra 2 kolumner och markera skillnaderna i båda kolumnerna?
T.ex:
Kolonnen 1
A1,A2,A3,A4: Markera A1 & A3
Kolonnen 2
A2,A4,A5,A6,A7: Highlight A5,A6,A7
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Lala,
Det skulle vara trevligt om du kunde ladda upp en skärmdump av din data och det resultat du vill få.
Det finns inga kommentarer här ännu
Lämna dina kommentarer
Postar som gäst
×
Betygsätt detta inlägg:
0   Tecken
Föreslagna platser

Följ oss

Copyright © 2009 - www.extendoffice.com. | Alla rättigheter förbehållna. Drivs av ExtendOffice. | | Sitemap
Microsoft och Office-logotypen är varumärken eller registrerade varumärken som tillhör Microsoft Corporation i USA och / eller andra länder.
Skyddad av Sectigo SSL