الصفوف نادراً ما تكون المشكلة. Excel يفشل لأن القائمتين تستخدمان مفاتيح مختلفة، أو أنواع بيانات مختلفة، أو معياراً مختلفاً لما يُعدّ سجلاً واحداً.
لهذا يمكن للتنسيق الشرطي أن يضيء نصف الورقة دون أن يعطيك أي إجابة. إذا أردت مقارنة قائمتين في Excel واكتشاف الفروقات، فابدأ بتحديد ما تبحث عنه: هل تبحث عن عناصر مفقودة، أم قيم غير متطابقة، أم سجلات بلا نظير؟ هذه ثلاثة أعمال مختلفة. حين تُدمجها في معادلة واحدة، تحصل على نتائج خاطئة.
قبل أن تبني أي شيء، حدِّد نوع الفروقات التي أمامك فعلاً.
ما يبدو عليه الفرق قبل أن تفتح المصنف
| ما تراه على الشاشة | كيف تخزّنه القائمة A | كيف تخزّنه القائمة B | ما يحدث عند المطابقة |
|---|---|---|---|
001245 في كلتا الورقتين | نص يحتوي أصفاراً بادئة | الرقم 1245 | القيمتان تبدوان لك متماثلتين لكن ليس لـ Excel، فتفشل المطابقة |
01/05/2026 في كلتا الورقتين | تاريخ بصيغة نص dd/mm/yyyy | تاريخ Excel حقيقي (رقم تسلسلي) | أحد الجانبين نص والآخر تاريخ حقيقي، فتفشل عمليات البحث والمقارنة |
INV-8842 يظهر مرتين | رقم الفاتورة نفسه على صفين منفصلين | رقم فاتورة واحد بإجمالي موحّد | بحث واحد لواحد يُرجع الصف الخاطئ أو يخفي تكراراً |
| العملاء أنفسهم في القائمتين لكن بترتيب مختلف | قائمة مرتّبة بالتاريخ | قائمة أخرى مرتّبة بالاسم | المقارنة صفاً بصف تعلِّم صفوفاً صحيحة على أنها مختلفة |
1,250.00 يبدو متطابقاً في الملفين | نص يحتوي مسافة غير قابلة للكسر مخفية | رقم حقيقي | المبلغ يبدو نظيفاً لكن Excel يعامل أحد الجانبين كنص والآخر كرقم |
Bank fee غائب من إحدى القائمتين | أحد الملفين المصدَّرَين يتضمن صفوف ضبط أو تحكم | الملف الآخر يستثنيها | الفرق هيكلي، لا علاقة له بمعادلة خاطئة |
إذا لم تكن متأكداً من حالتك، طبِّق =TYPE(A2) على خلية مشبوهة في كل قائمة. TYPE() يُرجع 1 للأرقام و2 للنص. هذا يخبرك فوراً إن كان الفرق اختلافاً حقيقياً في المحتوى، أم أنه مجرد اختلاف في طريقة التخزين يحوّله Excel إلى تباين وهمي.
حدِّد نوع المقارنة التي تجريها فعلاً
معظم نتائج البحث حول هذا الموضوع تفترض أن المشكلة عمود واحد نظيف في مقابل عمود نظيف آخر. أحياناً يصح هذا. في الغالب لا يصح.
| عملك الحقيقي | أنسب طريقة | ما يُعدّ فرقاً |
|---|---|---|
| التحقق من وجود قيم عمود في عمود آخر | COUNTIF أو MATCH أو FILTER | عنصر مفقود |
| مقارنة السجلات ذاتها بين قائمتين متعددتَي الأعمدة | المطابقة بمفتاح ثابت ثم مقارنة الحقول | صف مفقود أو اختلاف في قيمة |
| مقارنة السجلات حين لا يوجد معرّف فريد | بناء مفتاح مركّب من حقلين أو ثلاثة | مطابقات زائفة، مرشحون مكرَّرون، أو سجلات مفقودة |
| مقارنة ملفين مصدَّرَين بترتيب وعناوين وبنية مختلفة | ربط الأعمدة بدورها قبل المطابقة | تباين هيكلي لا تباين في الصفوف |
هذا التمييز مهم لأن موضع الصف ليس مفتاح المقارنة الصحيح في أغلب الأحوال. إذا كانت إحدى القائمتين مرتّبة بالتاريخ والأخرى بالعميل، فلا سبب يجعل الصف 84 في إحداهما يقابل الصف 84 في الأخرى. المعادلة صفاً بصف لا تكتشف الفروقات هناك. هي تخترعها.
إذا كانت القائمتان بسيطتين فعلاً، استخدم المعادلة المختصرة وأوقف عندها
إذا كانت كل قائمة في عمود واحد نظيف وسؤالك الوحيد هو «ما الموجود في A وغير موجود في B؟»، فالإجابة السريعة كافية.
لإصدارات Excel الحديثة:
=FILTER(A2:A5000,COUNTIF($D$2:$D$5000,A2:A5000)=0)تُرجع هذه المعادلة القيم الموجودة في القائمة A والغائبة عن القائمة B.
للاتجاه العكسي:
=FILTER(D2:D5000,COUNTIF($A$2:$A$5000,D2:D5000)=0)لإصدارات Excel الأقدم، استخدم عمود نتائج مساعداً:
=IF(COUNTIF($D$2:$D$5000,A2)=0,A2,"")هذا يكفي حين:
- كل قائمة تملك عمود مقارنة واحداً
- التكرارات لا تهمّ
- ترتيب الصفوف لا يهمّ
- يعنيك فقط الوجود أو الغياب
حين يمتد السجل نفسه على أعمدة متعددة، أو حين تظهر القيمة ذاتها أكثر من مرة، تتوقف هذه المعادلة البسيطة عن الإجابة الكاملة. إذا أصبح عملك «أيّ صفوف مصدَّرة مفقودة أو بلا مقابل بين ملفين»، فمقالة إيجاد الصفوف المفقودة بين ملفَّي CSV في Excel تعالج النمط الأقرب لمشكلتك.
اختَر مفتاح مطابقة قبل مقارنة القيم
تقرير الفروقات لا يكون أفضل من المفتاح المستخدم في محاذاة السجلات.
| المفتاح المرشح | استخدمه حين | أين يفشل |
|---|---|---|
| رقم الفاتورة، معرّف المعاملة، مرجع الطلب | كلتا القائمتين تحتفظ بالمعرّف الفريد ذاته | أحد الجانبين يحذف المعرّف أو يقصّره أو يكرّره |
| التاريخ + المبلغ | كل عملية فريدة بهذين الحقلين | المبالغ المتكررة في اليوم ذاته تنشئ أزواجاً خاطئة |
| العميل + رقم الفاتورة | حقل واحد ليس فريداً لكن الثنائي فريد | أسماء العملاء تتفاوت أو أرقام الفواتير غير متسقة |
| الوصف وحده | لا يوجد حقل أفضل | الاقتطاع والمسافات واختلاف الصياغة تجعله غير موثوق |
إذا لم يكن حقل واحد فريداً بما يكفي، ابنِ مفتاحاً مركّباً. النمط الشائع: المرجع ثم التاريخ ثم المبلغ:
=A2&"|"&TEXT(C2,"yyyy-mm-dd")&"|"&TEXT(D2,"0.00")ينجح هذا لأن كل جزء يؤدي دوراً مختلفاً:
- المرجع يُعرِّف المعاملة
- التاريخ يُميّز المراجع المعاد استخدامها بين الفترات
- المبلغ يُميّز القيود المجزّأة أو الجزئية
حين تشترك القائمتان في المفتاح ذاته، يمكنك مقارنة بقية السجل بالرجوع إليه. مثلاً إذا كان العمود H هو مفتاحك المركّب في الورقتين:
=XLOOKUP($H2,Sheet2!$H$2:$H$5000,Sheet2!$J$2:$J$5000,"Missing")تجلب هذه المعادلة الحقل من القائمة B المنتمي إلى المفتاح ذاته في القائمة A. يمكنك حينئذٍ مقارنة القيمة المُرجَعة بالحقل الأصلي، بدلاً من مقارنة مواضع الصفوف.
تحقق من التكرارات في المفتاح قبل الثقة بالنتيجة:
=COUNTIF($H$2:$H$5000,H2)إذا أرجعت شيئاً أعلى من 1، فمفتاحك ليس واحداً لواحد بعد. XLOOKUP ستُرجع أول تطابق وتخفي الباقي. هذا ليس نجاحاً للمعادلة. هو إخفاق في المقارنة متنكّر في هيئة نتيجة.
طبِّع القيم التي تبدو متساوية لكنها مخزّنة بشكل مختلف
هنا يتوقف معظم أدلة مقارنة جداول البيانات مبكراً. تعرض معادلة المطابقة، لكنها لا تعرض تنظيف البيانات الذي تعتمد عليه هذه المعادلة.
نص في أحد الجانبين ورقم في الآخر
إذا كانت القائمة A تخزّن 1245 كنص والقائمة B كرقم، أكّد ذلك أولاً بـ TYPE():
=TYPE(A2)إذا أرجعت A القيمة 2 والخلية المقابلة في القائمة B أرجعت 1، حوِّل داخل البحث قبل بناء عمود مساعد.
إذا كان يجب أن تكون القيمة رقمية:
=XLOOKUP(VALUE(A2),Sheet2!$F$2:$F$5000,Sheet2!$G$2:$G$5000,"Missing")إذا كان يجب أن تبقى نصاً ذا عرض ثابت مع أصفار بادئة، أجبر الجانبين على تنسيق نصي متماثل:
=XLOOKUP(TEXT(A2,"000000"),TEXT(Sheet2!$F$2:$F$5000,"000000"),Sheet2!$G$2:$G$5000,"Missing")المهم ليس القناع الدقيق. المهم أن يُقارَن الجانبان بوصفهما النوع نفسه.
المسافات المخفية و CHAR(160)
ملفات CSV المصدَّرة والبيانات المنسوخة من الويب كثيراً ما تحتوي مسافة غير قابلة للكسر يمثّلها Excel بـ CHAR(160). تبدو كمسافة عادية على الشاشة، لكن TRIM() وحدها لا تحذفها دائماً.
طبِّعها مباشرة داخل المقارنة:
=XLOOKUP(TRIM(SUBSTITUTE(A2,CHAR(160)," ")),TRIM(SUBSTITUTE(Sheet2!$F$2:$F$5000,CHAR(160)," ")),Sheet2!$G$2:$G$5000,"Missing")تُزيل هذه المعادلة المسافات في البداية والنهاية، وتستبدل أولاً CHAR(160) المخفية بمسافة عادية.
التواريخ النصية المبهمة
إذا خزّنت إحدى القائمتين التواريخ كنص، لا تقفز مباشرة إلى DATEVALUE(). تاريخ نصي مثل 01/05/2026 مبهم. نظام ما قد يقصد 5 يناير. آخر قد يقصد 1 مايو.
لنص مخزَّن بصيغة dd/mm/yyyy، استخرج مكوّناته صراحةً:
=DATE(RIGHT(A2,4),MID(A2,4,2),LEFT(A2,2))لنص مخزَّن بصيغة mm/dd/yyyy، استخدم:
=DATE(RIGHT(A2,4),LEFT(A2,2),MID(A2,4,2))بعد تحويل التاريخ النصي إلى تاريخ Excel حقيقي، قارِنه كتاريخ أو طبِّعه داخل مفتاح بـ TEXT(real_date,"yyyy-mm-dd").
الغموض مهم لأن المعادلة قد تحوّل النص بنجاح وتعطيك مع ذلك إجابة خاطئة إذا افترضت ترتيباً خاطئاً لعناصر التاريخ.
قارِن السجلات كاملة، لا الخلايا المعزولة
حين يصبح مفتاح المطابقة ثابتاً وأنواع البيانات منظَّمة، قارِن حقول السجل حقلاً بحقل.
افترض أن القائمة A تحتوي:
- العمود A: معرّف المعاملة
- العمود B: التاريخ
- العمود C: المبلغ
- العمود D: الحالة
والقائمة B تحتوي الحقول ذاتها في مواضع أعمدة مختلفة.
سير العمل هو:
- طابِق القائمة A بالقائمة B عبر المفتاح الثابت.
- اجلب القيمة المقابلة من القائمة B.
- صنِّف النتيجة: متطابقة، أو مختلفة، أو مفقودة.
مثلاً، إذا أرجع العمود K في القائمة A المبلغَ من القائمة B:
=XLOOKUP($H2,Sheet2!$H$2:$H$5000,Sheet2!$C$2:$C$5000,"Missing")ثم صنِّف النتيجة:
=IF(K2="Missing","Missing from List B",IF(C2<>K2,"Amount difference","Matched"))افعل الشيء ذاته مع التاريخ والحالة وأي حقل آخر يهمّك.
هذا يمنحك تقرير فروقات مفيداً لأنه يُميّز ثلاث حالات مختلفة تماماً:
- السجل موجود في القائمتين ومتطابق
- السجل موجود في القائمتين لكن حقلاً ما يختلف
- السجل غائب تماماً من الجانب الآخر
عند هذا المستوى تصبح النتيجة قابلة للتصرف.
صنِّف الفروقات بدلاً من تلوين الورقة
المقارنة الجيدة لا تنتهي بخلايا ملوّنة. تنتهي بأنواع استثناءات مسمّاة.
| نوع الفرق | ما يعنيه في الغالب | ما تفعله بعد ذلك |
|---|---|---|
| غائب من القائمة A | السجل موجود في القائمة B فقط | راجع الفلاتر ونطاق التواريخ واكتمال الملف المصدَّر |
| غائب من القائمة B | السجل موجود في القائمة A فقط | ابحث عن صفوف محذوفة، أو سجلات ممسوحة، أو مفتاح خاطئ |
| اختلاف في القيمة | المفتاح واحد لكن المبلغ أو الحالة يختلف | راجع الحقل المصدر وحدِّد أيّ القائمتين هي المرجع |
| مفتاح مكرَّر | إحدى القائمتين أو كلتاهما أعادت استخدام المفتاح ذاته | عزِّز المفتاح بالتاريخ أو المبلغ أو حقل آخر |
| تعارض في النوع | القيم تبدو متساوية لكن أحد الجانبين نص | طبِّع بـ VALUE أو TEXT أو تحويل التاريخ |
| تباين هيكلي | الملف المصدَّر يتضمن عناوين أو رسوماً أو أرصدة أو صفوف ملخّص لا تملكها القائمة الأخرى | استثنِ هذه الصفوف أو أعِد ربطها قبل المقارنة |
هذه أيضاً هي النقطة التي يتحوّل فيها التنسيق الشرطي إلى دور مساند. يفيد في المراجعة البصرية بعد تحديد فئات الفروقات. ليس هو الطريقة التي تحدّدها.
إذا كانت قائمتاك في الحقيقة ملفَّي معاملات بعناوين متزاحة وأسماء أعمدة مختلفة وتباينات في التاريخ أو الإشارة، فـ مقارنة ملفَّي كشف حساب بنكي CSV بدون معادلات يعالج المشكلة ذاتها على مستوى الملف لا على مستوى ورقة واحدة.
حين يصنع Excel عملاً بدلاً من تقليصه
Excel مناسب للمقارنات الصغيرة. يتحوّل إلى عبء حين تبدو الروتينة هكذا في كل مرة:
- استيراد قائمتين جديدتين
- إعادة التحقق من المفتاح
- تطبيع التواريخ مجدداً
- حذف المسافات المخفية مجدداً
- اختبار التكرارات مجدداً
- إصلاح المقارنة لأن أحد الملفات المصدَّرة تغيّر شكله
عند هذه النقطة، المشكلة ليست أنك لا تعرف كيف تقارن القوائم. المشكلة أن القوائم تصل دائماً بصيغ تحتاج إصلاحاً قبل أن تبدأ المقارنة أصلاً.
لهذا كثير من مسارات «مقارنة قائمتين في Excel وعرض الفروقات» تبدو غير مستقرة. المعادلة نادراً ما تكون الجزء الصعب. الجزء غير المستقر هو تنظيف الملفات المتكرر، واختيار المفتاح، وفرز الاستثناءات حول المعادلة في كل مرة.
