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

วิธีเปรียบเทียบสองสตริงเพื่อความเหมือนหรือเน้นความแตกต่างใน Excel

ในบางกรณีคุณอาจต้องเปรียบเทียบเซลล์ของสตริงที่อยู่ติดกันสองเซลล์และทำเครื่องหมายความเหมือนหรือความแตกต่างใน Excel บทความนี้มีสองวิธีเพื่อให้คุณบรรลุเป้าหมาย

เปรียบเทียบสองสตริงด้วยสูตร
เปรียบเทียบสองสตริงเพื่อความเหมือนหรือเน้นความแตกต่างด้วยรหัส VBA


เปรียบเทียบสองสตริงด้วยสูตร

ตามภาพหน้าจอด้านล่างหากคุณต้องการทราบว่าสตริงที่เปรียบเทียบตรงกันหรือไม่คุณสามารถใช้สูตรต่อไปนี้ได้

1. เลือกเซลล์ว่าง C2 ป้อนสูตร = แน่นอน (A2, B2) ลงในแถบสูตรแล้วกดปุ่ม Enter ดูภาพหน้าจอ:

หมายเหตุ: ในสูตร A2 และ B2 คือเซลล์ที่มีสตริงเปรียบเทียบ

2. เลือกเซลล์ผลลัพธ์ต่อไปจากนั้นลาก Fill Handle ไปยังเซลล์จนกว่าจะได้ผลลัพธ์ที่เปรียบเทียบทั้งหมด

ผลลัพธ์ FALSE หมายความว่าสตริงที่เปรียบเทียบแตกต่างกันและผลลัพธ์ TRUE บ่งชี้ว่าสตริงที่เปรียบเทียบทั้งสองตรงกัน ดูภาพหน้าจอ:


เปรียบเทียบสองสตริงเพื่อความเหมือนหรือเน้นความแตกต่างด้วยรหัส VBA

หากคุณต้องการเปรียบเทียบสตริงสองสตริงและเน้นความเหมือนหรือความแตกต่างระหว่างสตริงเหล่านั้น รหัส VBA ต่อไปนี้สามารถช่วยคุณได้

1 กด อื่น ๆ + F11 พร้อมกันเพื่อเปิดไฟล์ Microsoft Visual Basic สำหรับแอปพลิเคชัน หน้าต่าง

2 ใน Microsoft Visual Basic สำหรับแอปพลิเคชัน หน้าต่างคลิก สิ่งที่ใส่เข้าไป > โมดูล. จากนั้นคัดลอกและวางรหัสต่อไปนี้ลงในหน้าต่างรหัส

รหัส VBA: เปรียบเทียบสตริงสองคอลัมน์เพื่อความเหมือนหรือเน้นความแตกต่าง

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 กด F5 กุญแจสำคัญในการเรียกใช้รหัส ในครั้งแรก Kutools สำหรับ Excel กล่องโต้ตอบเลือกคอลัมน์แรกของสตริงข้อความที่คุณต้องการเปรียบเทียบจากนั้นคลิกไฟล์ OK ปุ่ม

4. จากนั้นครั้งที่สอง Kutools สำหรับ Excel กล่องโต้ตอบปรากฏขึ้นโปรดเลือกสตริงคอลัมน์ที่สองและคลิกที่ OK ปุ่ม

5. ในช่วงสุดท้าย Kutools สำหรับ Excel กล่องโต้ตอบหากคุณต้องการเปรียบเทียบสตริงเพื่อความคล้ายคลึงกันให้คลิก ใช่ ปุ่ม. และหากต้องการเน้นความแตกต่างของสตริงที่เปรียบเทียบให้คลิก ไม่ ปุ่ม. ดูภาพหน้าจอ:

จากนั้นคุณจะเห็นผลการเปรียบเทียบตามภาพด้านล่างที่แสดง


บทความที่เกี่ยวข้อง:


เครื่องมือเพิ่มประสิทธิภาพการทำงานในสำนักงานที่ดีที่สุด

Kutools สำหรับ Excel แก้ปัญหาส่วนใหญ่ของคุณและเพิ่มผลผลิตของคุณได้ถึง 80%

  • นำมาใช้ใหม่: ใส่อย่างรวดเร็ว สูตรที่ซับซ้อนแผนภูมิ และสิ่งที่คุณเคยใช้มาก่อน เข้ารหัสเซลล์ ด้วยรหัสผ่าน; สร้างรายชื่อผู้รับจดหมาย และส่งอีเมล ...
  • ซุปเปอร์ฟอร์มูล่าบาร์ (แก้ไขข้อความและสูตรหลายบรรทัดได้อย่างง่ายดาย); การอ่านเค้าโครง (อ่านและแก้ไขเซลล์จำนวนมากได้อย่างง่ายดาย); วางลงในช่วงที่กรองแล้ว...
  • ผสานเซลล์ / แถว / คอลัมน์ โดยไม่สูญเสียข้อมูล แยกเนื้อหาของเซลล์ รวมแถว / คอลัมน์ที่ซ้ำกัน... ป้องกันเซลล์ซ้ำ; เปรียบเทียบช่วง...
  • เลือกซ้ำหรือไม่ซ้ำ แถว; เลือกแถวว่าง (เซลล์ทั้งหมดว่างเปล่า); Super Find และ Fuzzy Find ในสมุดงานจำนวนมาก สุ่มเลือก ...
  • สำเนาถูกต้อง หลายเซลล์โดยไม่เปลี่ยนการอ้างอิงสูตร สร้างการอ้างอิงอัตโนมัติ ถึงหลายแผ่น ใส่สัญลักษณ์แสดงหัวข้อย่อย, กล่องกาเครื่องหมายและอื่น ๆ ...
  • แยกข้อความ, เพิ่มข้อความ, ลบตามตำแหน่ง, ลบ Space; สร้างและพิมพ์ผลรวมย่อยของเพจ แปลงระหว่างเนื้อหาของเซลล์และความคิดเห็น...
  • ซุปเปอร์ฟิลเตอร์ (บันทึกและใช้โครงร่างตัวกรองกับแผ่นงานอื่น ๆ ); การเรียงลำดับขั้นสูง ตามเดือน / สัปดาห์ / วันความถี่และอื่น ๆ ตัวกรองพิเศษ โดยตัวหนาตัวเอียง ...
  • รวมสมุดงานและแผ่นงาน; ผสานตารางตามคอลัมน์สำคัญ แยกข้อมูลออกเป็นหลายแผ่น; Batch แปลง xls, xlsx และ PDF...
  • คุณสมบัติที่ทรงพลังมากกว่า 300 รายการ. รองรับ Office/Excel 2007-2021 และ 365 รองรับทุกภาษา ง่ายต่อการปรับใช้ในองค์กรหรือองค์กรของคุณ คุณสมบัติเต็มรูปแบบ ทดลองใช้ฟรี 30 วัน รับประกันคืนเงินภายใน 60 วัน
kte แท็บ 201905

แท็บ Office นำอินเทอร์เฟซแบบแท็บมาที่ Office และทำให้งานของคุณง่ายขึ้นมาก

  • เปิดใช้งานการแก้ไขและอ่านแบบแท็บใน Word, Excel, PowerPoint, ผู้จัดพิมพ์, Access, Visio และโครงการ
  • เปิดและสร้างเอกสารหลายรายการในแท็บใหม่ของหน้าต่างเดียวกันแทนที่จะเป็นในหน้าต่างใหม่
  • เพิ่มประสิทธิภาพการทำงานของคุณ 50% และลดการคลิกเมาส์หลายร้อยครั้งให้คุณทุกวัน!
ด้านล่าง officetab
จัดเรียงความคิดเห็นโดย
ความคิดเห็น (19)
ยังไม่มีการให้คะแนน เป็นคนแรกที่ให้คะแนน!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ท่านที่รัก ขอบคุณมากสำหรับรหัส VBA ของคุณ เป็นประโยชน์อย่างมาก อันที่จริงฉันไม่มีความรู้เกี่ยวกับการเข้ารหัส ดังนั้น แม้จะแก้ไขส่วนเล็ก ๆ ของการเขียนโค้ดตามความต้องการของฉัน ฉันก็ทำอะไรไม่ถูก ฉันมีคำขอหนึ่งข้อเกี่ยวกับการเขียนโค้ดนี้เพื่อให้มีประสิทธิภาพและเป็นมิตรกับผู้ใช้มากขึ้น คุณช่วยฉันหน่อยได้ไหม?? วัตถุประสงค์หลักของการเขียนโค้ดข้างต้นคือการค้นหาและเน้นความแตกต่างระหว่างข้อมูลในสองคอลัมน์เพื่อให้ง่ายต่อการอ้างอิง แต่การเข้ารหัสนี้ซับซ้อนเล็กน้อยเนื่องจากเกี่ยวข้องกับวัตถุประสงค์ เนื่องจากกำลังพิจารณา "ช่องว่าง" ระหว่างเนื้อหาและเน้นข้อมูลทั้งหมดแม้ว่าสตริงจะเหมือนกัน ดังนั้น หากเราสามารถเปรียบเทียบข้อมูลโดยไม่มีช่องว่าง เราก็สามารถกรองข้อมูลส่วนที่ไฮไลต์ได้ นอกจากนี้ แทนที่จะเน้นเฉพาะสตริงที่ไม่เหมือนกัน แต่จะเน้นข้อมูลทั้งหมดตั้งแต่สตริงแรกที่แตกต่างกันไปจนถึงข้อมูลจนถึงจุดสิ้นสุดของเซลล์ ข้าพเจ้าจึงขอสรุปคำขอดังนี้ ๒ คะแนน 2) โปรดแก้ไขการเข้ารหัสเพื่อเปรียบเทียบเซลล์โดยไม่พิจารณาช่องว่าง 1) โปรดแก้ไขการเข้ารหัสในลักษณะที่สามารถเน้นเฉพาะสตริงที่แตกต่างกัน แต่ไม่เน้นพาราทั้งหมดจากจุดสตริงที่ต่างกันจุดแรก ขอบคุณมากสำหรับความช่วยเหลือ ขอแสดงความนับถือ Surya
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันมีคำขอเช่นเดียวกับ suryateja
2) โปรดแก้ไขการเข้ารหัสในลักษณะที่สามารถเน้นเฉพาะสตริงที่แตกต่างกัน แต่ไม่เน้นทั้งพาราจากจุดสตริงที่ต่างกันแรก
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ปริมาณโค้ดข้างต้นจะไม่ทำงานหากเซลล์ใดมีสูตร
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอขอบคุณ!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ต้องการทราบว่าฉันสามารถระบุสตริงที่มีรูปแบบข้อความเดียวกันได้อย่างไร เพื่อให้สามารถเชื่อมโยงบัญชีกับสตริงเหล่านั้นทั้งหมดได้ ตัวอย่างเช่น ถ้าฉันมี 1,000 เซลล์ที่มีเนื้อหาต่างกัน ฉันต้องการแยกเซลล์ที่มีรูปแบบ 042-XXX-XX-00 เพื่อลิงก์ไปยังบัญชี #
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี
ฉันจะคัดลอก Column1 ถัดจาก Column2 ได้อย่างไรหากอย่างน้อยหนึ่งรายการในคอลัมน์ 1 คล้ายกับ / เหมือนกับหนึ่งรายการขึ้นไปใน Column2
ขออภัย ฉันใช้ Excel VBA มาระยะหนึ่งแล้ว และไม่พบคำตอบสำหรับคำถามนี้
ขอขอบคุณล่วงหน้าสำหรับคำตอบของคุณ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี
ฉันจะคัดลอก Column1 ถัดจาก Column2 ได้อย่างไรหากอย่างน้อยหนึ่งรายการในคอลัมน์ 1 คล้ายกับ / เหมือนกับหนึ่งรายการขึ้นไปใน Column2
ขออภัย ฉันใช้ Excel VBA มาระยะหนึ่งแล้ว และไม่พบคำตอบสำหรับคำถามนี้
ขอขอบคุณล่วงหน้าสำหรับคำตอบของคุณ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สคริปต์ที่มีประโยชน์มาก! ขอบใจ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันจะหาค่าความแตกต่างระหว่างสองสตริงได้อย่างไร

ตัวอย่าง: "123456" และ "213456" ==> 2 ข้อแตกต่าง
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
แค่อยากจะบอกว่าขอบคุณ!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันหวังเป็นอย่างยิ่งว่าจะได้ผล ดูเหมือนว่าจะเปรียบเทียบทั้งเซลล์และไม่ใช่อักขระภายในเซลล์ เพียงเปรียบเทียบ Candy ในช่องหนึ่งกับ Andy ในอีกช่องหนึ่งก็ไม่พบความคล้ายคลึงกัน และเมื่อฉันเปรียบเทียบความแตกต่าง ชื่อทั้งหมด Andy จะถูกเน้นด้วยสีแดง
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ก่อนอื่น..ขอบคุณ ขยายเวลา Office สำหรับรหัสดีๆ !!

ลองใช้การปรับเปลี่ยนนี้ มันเพียงขยายลูปการตรวจสอบต่ออักขระเพื่อรวมการจัดรูปแบบสีฟอนต์ เพิ่ม "สีดำ" เริ่มต้น และยังเปรียบเทียบอักขระกับเซลล์ที่ยาวที่สุดในสองเซลล์ที่กำลังเปรียบเทียบ

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
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอบคุณ! นี่คือสิ่งที่ฉันต้องการ!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เพื่อหลีกเลี่ยงปัญหาใดๆ ของโค้ดนี้ที่มีช่องว่างซึ่งควรอยู่ในค่า ASCII 32 หรือ 160 (โดยเฉพาะถ้าสตริงมาจาก HTML) คุณต้องรวมบรรทัดทดสอบ 46 ใน a if endif loop ดังนี้:
ถ้าไม่ ((Asc(xCell1.Characters(J, 1).Text) = 32 หรือ Asc(xCell1.Characters(J, 1).Text) = 160) และ (Asc(xCell2.Characters(J, 1).Text ) = 32 หรือ Asc(xCell2.Characters(J, 1).Text) = 160)) จากนั้น
( บรรทัดที่ 46 ถ้าไม่ใช่ xCell1.Characters(J, 1).Text = xCell2.Characters(J, 1).Text แล้ว Exit For)
End If

อย่างไรก็ตาม ขอบคุณสำหรับรหัส
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันจะเพิ่มสิ่งนี้อย่างถูกต้องได้อย่างไร ฉันได้รับข้อผิดพลาดเมื่อพยายามเปลี่ยนบรรทัดที่ 46 ขอบคุณ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ในตัวอย่างของคุณ คำว่า "มาลองกันเถอะ" จะคล้ายกันแต่โค้ดของคุณไฮไลต์ไม่ได้
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
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? เกรซี่
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี
ฉันจะแก้ไขโค้ดเพื่อเปรียบเทียบ 2 คอลัมน์และเน้นความแตกต่างในทั้งสองคอลัมน์ได้อย่างไร
เช่น:
1 คอลัมน์
A1,A2,A3,A4: ไฮไลท์ A1 & A3
2 คอลัมน์
A2,A4,A5,A6,A7: Highlight A5,A6,A7
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีลาล่า
คงจะดีถ้าคุณสามารถอัปโหลดภาพหน้าจอของข้อมูลและผลลัพธ์ที่คุณต้องการได้
มีความคิดเห็นยังไม่มีการโพสต์ที่นี่
แสดงความคิดเห็นของคุณ
โพสต์ในฐานะแขก
×
ให้คะแนนโพสต์นี้:
0   ตัวอักษร
สถานที่แนะนำ

ช่องทางอื่นๆ

ลิขสิทธิ์© 2009 - wwwextendoffice.com | สงวนลิขสิทธิ์. ขับเคลื่อนโดย ExtendOffice. | แผนผังเว็บไซต์
Microsoft และโลโก้ Office เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Microsoft Corporation ในสหรัฐอเมริกาและ / หรือประเทศอื่น ๆ
ได้รับการปกป้องโดย Sectigo SSL