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

كيف تقارن سلسلتين للتشابه أو تسليط الضوء على الاختلافات في Excel؟

في بعض الحالات ، قد تحتاج فقط إلى مقارنة خليتين متجاورتين من السلاسل وتمييز أوجه التشابه أو الاختلافات بينهما في Excel. توفر لك هذه المقالة طريقتين لتحقيق ذلك.

قارن بين سلسلتين مع الصيغة
قارن بين سلسلتين للتشابه أو تمييز الاختلافات مع تعليمات VBA البرمجية


قارن بين سلسلتين مع الصيغة

كما هو موضح أدناه ، إذا كنت تريد فقط معرفة ما إذا كانت السلاسل المقارنة متطابقة أم لا ، فيمكنك تطبيق الصيغة التالية.

1. حدد خلية فارغة C2 ، أدخل الصيغة = دقيق (A2، B2) في شريط الصيغة ، ثم اضغط على مفتاح Enter. انظر لقطة الشاشة:

ملاحظة: في الصيغة ، A2 و B2 هي الخلايا التي تحتوي على سلاسل المقارنة.

2. استمر في تحديد خلية النتيجة ، ثم اسحب مقبض التعبئة إلى الخلايا حتى تحصل على جميع النتائج المقارنة.

تعني نتيجة FALSE أن السلاسل المقارنة مختلفة ، والنتيجة TRUE تشير إلى تطابق السلاسل المقارنة. انظر لقطة الشاشة:


قارن بين سلسلتين للتشابه أو تمييز الاختلافات مع تعليمات VBA البرمجية

إذا كنت تريد مقارنة سلسلتين وإبراز أوجه التشابه أو الاختلافات بينهما. يمكن أن يساعدك رمز VBA التالي.

1. صحافة قديم + F11 مفاتيح في نفس الوقت لفتح ميكروسوفت فيسوال باسيك للتطبيقات نافذة.

2. في ال ميكروسوفت فيسوال باسيك للتطبيقات الإطار، انقر فوق إدراج > وحدة. ثم انسخ الكود التالي والصقه في نافذة Code.

كود فبا: قارن بين سلاسل عمودين للتشابه أو تمييز الاختلافات

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 مفتاح لتشغيل الكود. في الاول كوتولس ل إكسيل في مربع الحوار ، حدد العمود الأول من السلاسل النصية التي تريد مقارنتها ، ثم انقر فوق OK .

4. ثم الثانية كوتولس ل إكسيل ينبثق مربع الحوار ، يرجى تحديد سلاسل العمود الثاني ، والنقر فوق OK .

5. في الماضي كوتولس ل إكسيل مربع الحوار ، إذا كنت تريد مقارنة السلاسل من أجل التشابه ، فانقر فوق نعم زر. ولتمييز الاختلافات بين السلاسل المقارنة ، انقر فوق لا زر. انظر لقطة الشاشة:

ثم يمكنك رؤية النتائج المقارنة كما هو موضح أدناه.


مقالات ذات صلة:


أفضل أدوات إنتاجية المكتب

Kutools for Excel يحل معظم مشاكلك ويزيد إنتاجيتك بنسبة 80٪

  • إعادة استخدام: أدخل بسرعة الصيغ المعقدة والرسوم البيانية وأي شيء استخدمته من قبل ؛ تشفير الخلايا مع كلمة السر إنشاء قائمة بريدية وإرسال رسائل البريد الإلكتروني ...
  • سوبر فورميولا بار (بسهولة تحرير أسطر متعددة من النص والصيغة) ؛ تخطيط القراءة (قراءة وتحرير أعداد كبيرة من الخلايا بسهولة) ؛ لصق في النطاق المصفى
  • دمج الخلايا / الصفوف / الأعمدة دون فقدان البيانات ؛ تقسيم محتوى الخلايا ؛ ادمج الصفوف / الأعمدة المكررة... منع تكرار الخلايا؛ قارن النطاقات
  • حدد مكرر أو فريد صفوف حدد صفوف فارغة (جميع الخلايا فارغة) ؛ البحث الفائق والبحث الغامض في العديد من المصنفات. تحديد عشوائي ...
  • نسخة طبق الأصل خلايا متعددة بدون تغيير مرجع الصيغة ؛ إنشاء المراجع تلقائيًا إلى أوراق متعددة أدخل الرموز النقطية، مربعات الاختيار والمزيد ...
  • استخراج النص، إضافة نص ، إزالة حسب الموضع ، إزالة الفضاء؛ إنشاء وطباعة المجاميع الفرعية لترحيل الصفحات ؛ التحويل بين محتوى الخلايا والتعليقات
  • سوبر تصفية (حفظ وتطبيق مخططات التصفية على أوراق أخرى) ؛ فرز متقدم حسب الشهر / الأسبوع / اليوم ، التكرار والمزيد ؛ مرشح خاص بواسطة bold، italic ...
  • اجمع بين المصنفات وأوراق العمل؛ دمج الجداول على أساس الأعمدة الرئيسية ؛ تقسيم البيانات إلى أوراق متعددة; تحويل دفعة xls و xlsx و PDF
  • أكثر من 300 ميزة قوية. يدعم Office / Excel 2007-2021 و 365. يدعم جميع اللغات. سهولة النشر في مؤسستك أو مؤسستك. الميزات الكاملة نسخة تجريبية مجانية لمدة 30 يومًا. ضمان استرداد الأموال لمدة 60 يومًا.
علامة تبويب kte 201905

يجلب Office Tab الواجهة المبوبة إلى Office ، ويجعل عملك أسهل بكثير

  • تمكين التحرير والقراءة المبوبة في Word و Excel و PowerPointوالناشر والوصول و Visio والمشروع.
  • فتح وإنشاء مستندات متعددة في علامات تبويب جديدة من نفس النافذة ، بدلاً من النوافذ الجديدة.
  • يزيد من إنتاجيتك بنسبة 50٪ ، ويقلل مئات النقرات بالماوس كل يوم!
أوفيسيتاب القاع
فرز التعليقات حسب
التعليقات (19)
لا يوجد تقييم. كن أول من يقيم!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
سيدي العزيز ، شكرًا جزيلاً لك على كود VBA الخاص بك. انه مفيد جدا في الواقع ليس لدي أي معرفة بالبرمجة. لذلك ، حتى لتعديل جزء صغير من الترميز وفقًا لمتطلباتي ، فأنا عاجز لديّ طلب واحد حول هذا الترميز لجعله أكثر كفاءة وسهولة في الاستخدام. هلاّ ساعدتني من فضلك؟؟ الهدف الرئيسي من الترميز أعلاه هو إيجاد وتسليط الضوء على الاختلافات بين البيانات في عمودين لسهولة الرجوع إليها. لكن هذا الترميز معقد قليلاً حيث يتعلق الأمر بالموضوع. لأنه يفكر في "المسافات" بين المحتوى ويتم إبراز البيانات بأكملها على الرغم من أن السلاسل متشابهة. لذلك ، إذا تمكنا من مقارنة البيانات بدون مسافات ، فيمكننا تصفية جزء البيانات المميزة. أيضًا ، بدلاً من تمييز السلاسل غير المتشابهة فقط ، يتم تسليط الضوء على البيانات بأكملها مباشرةً من السلسلة الأولى المختلفة إلى البيانات حتى نهاية الخلية. ومن ثم ، أود أن أنهي طلبي على النحو التالي نقطتين. 2) يرجى تعديل الترميز لمقارنة الخلايا دون مراعاة المسافات. شكرا جزيلا لك على مساعدتك. تحياتي ، سوريا
تم تصغير هذا التعليق بواسطة المشرف على الموقع
لدي نفس طلب suryateja.
2) يرجى تعديل الترميز بطريقة يمكن من خلالها إبراز سلاسل مختلفة فقط ولكن دون إبراز الفقرة بأكملها من أول نقطة سلسلة مختلفة.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
لا تعمل جرعة الكود أعلاه إذا كانت أي خلية تحتوي على صيغة.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
شكرا!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
أحتاج إلى معرفة كيف يمكنني تحديد السلاسل بنفس تنسيق النص حتى أتمكن من ربط حساب بكل هذه السلاسل. على سبيل المثال ، إذا كان لدي 1,000 خلية بمحتوى مختلف ، فأنا أرغب في فصل تلك التي تحتوي على تنسيق 042-XXX-XX-00 لربطها بحساب #.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا
كيف يمكنني نسخ Column1 إلى جانب Column2 إذا كان عنصر واحد أو أكثر في العمود 1 مشابهًا / مطابقًا لعنصر واحد أو أكثر في Column2؟
أنا آسف ولكني كنت أعمل مع Excel VBA لفترة من الوقت ولا يمكنني العثور على إجابة لهذا السؤال.
نشكر لك مقدما على إجابتك.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا
كيف يمكنني نسخ Column1 إلى جانب Column2 إذا كان عنصر واحد أو أكثر في العمود 1 مشابهًا / مطابقًا لعنصر واحد أو أكثر في Column2؟
أنا آسف ولكني كنت أعمل مع Excel VBA لفترة من الوقت ولا يمكنني العثور على إجابة لهذا السؤال.
نشكر لك مقدما على إجابتك.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
نص مفيد جدا! شكرًا
تم تصغير هذا التعليق بواسطة المشرف على الموقع
كيف يمكنني الحصول على رقم الفرق بين سلسلتين؟

مثال: فرق "123456" و "213456" ==> 2
تم تصغير هذا التعليق بواسطة المشرف على الموقع
فقط أريد أن أقول شكرا!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
كنت أتمنى أن ينجح هذا. يبدو أنه يقارن الخلايا بأكملها وليس الأحرف داخل الخلايا. ببساطة مقارنة كاندي في خلية بآندي في خلية أخرى لا تجد أي تشابه. وعندما أقارن الاختلافات ، يتم تمييز اسم Andy بالكامل باللون الأحمر.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
أولا .. شكرا لك تمديد المكتب من أجل الكود الجيد !!

جرب هذا التعديل. إنه يوسع ببساطة حلقة التحقق لكل حرف لتشمل تنسيق لون الخط ، ويضيف افتراضيًا "أسود" ، ويقارن أيضًا الأحرف بأطول خليتين تتم مقارنتهما.

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 في حلقة if endif على النحو التالي:
إذا لم يكن ((تصاعدي (xCell1.Characters (J، 1) .Text) = 32 أو تصاعديًا (xCell1.Characters (J، 1) .Text) = 160) و (Asc (xCell2.Characters (J، 1). ) = 32 أو تصاعديًا (xCell2.Characters (J، 1) .Text) = 160)) ثم
(السطر 46 إذا لم يكن xCell1.Characters (J، 1) .Text = xCell2.Characters (J، 1). Text ثم Exit For)
إنهاء حالة

مع ذلك شكرا على الكود.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
كيف أضيف هذا بشكل صحيح؟ لقد تلقيت خطأ عندما حاولت استبدال السطر 46. شكرًا لك
تم تصغير هذا التعليق بواسطة المشرف على الموقع
في المثال الخاص بك ، الكلمات "Let's try" متشابهة ولكن لا يمكن تمييزها في التعليمات البرمجية.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
المواجهة مع لا سيلا فيا روما 1 مع السيللا من خلال RROMA 1 il programma Evidenzia in rosso sia RROMA che 1. non si può fare in modo che evidenzi solo la lettera variousiversa e quindi R؟ جراتسي
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا،
كيف يمكنني تحرير الكود بحيث يقارن عمودين ويبرز الاختلافات في كلا العمودين؟
على سبيل المثال:
عمود 1
A1، A2، A3، A4: تمييز A1 و A3
عمود 2
A2,A4,A5,A6,A7: Highlight A5,A6,A7
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا لالا ،
سيكون من الرائع تحميل لقطة شاشة لبياناتك والنتيجة التي تريد الحصول عليها.
لا توجد تعليقات منشورة هنا حتى الآن
اترك تعليقاتك
النشر كضيف
×
قيم المنشور:
0   الشخصيات
المواقع المقترحة

تواصل معنا

حقوق التأليف والنشر © 2009 - شبكة الاتصالات العالمية.extendoffice.com. | كل الحقوق محفوظة. مشغل بواسطة ExtendOffice. | | خريطة الموقع
Microsoft وشعار Office هما علامتان تجاريتان أو علامتان تجاريتان مسجلتان لشركة Microsoft Corporation في الولايات المتحدة و / أو دول أخرى.
محمي بواسطة Sectigo SSL