الصفوف ليست مفقودة دائماً. في Excel، يبدو ملفّا CSV غير متوافقَين في الغالب لأن ترتيب الصفوف تغيّر، أو تغيّر تنسيق المفتاح، أو لأن أحد الملفَّين لا يغطّي النطاق الزمني نفسه الذي يغطّيه الآخر.
لهذا تفشل المقارنة صفاً بصف بهذه السرعة. تصديرات CSV المالية لا تحفظ المعنى حسب رقم الصف، بل حسب مفتاح ثابت: معرّف المعاملة، أو معرّف الدفعة، أو رقم الفاتورة، أو مزيج من التاريخ والمبلغ حين لا يوجد معرّف واحد.
ماذا تعني «الصفوف المفقودة» في الغالب
| العَرَض | ما يعنيه في الغالب | الفحص الأول |
|---|---|---|
| كل شيء يتوقف عن التطابق بعد الصف 214 | أحد الملفَّين مرتَّب بشكل مختلف | افحص مفتاح المطابقة، لا رقم الصف |
| صف يبدو مفقوداً في أحد الملفَّين | المفتاح مخزّن بشكل مختلف | قارن TYPE() وLEN() على المفتاحَين |
| الأعداد تختلف ببضعة صفوف | عوامل تصفية، أو صفوف فارغة، أو نطاق زمني مختلف | افحص عدد الصفوف وأقدم تاريخ وأحدثه |
| أحد الملفَّين به صفوف زائدة في الأعلى | انزياح العناوين أو أسطر تمهيدية | حدِّد أين يبدأ صف العنوان الحقيقي |
| صف يبدو مفقوداً بعد الاستيراد | السجلّ مكرّر بتنسيق مفتاح آخر | ابحث عن أصفار بادئة أو مسافات أو تحويل تاريخ |
إذا اعتمدت موضع الصف وحدةً للمقارنة، فإن سجلاً واحداً منزاحاً يجعل كل صف تحته يبدو خاطئاً. هذه ليست مشكلة صفوف مفقودة، بل مشكلة في منهج المقارنة.
قبل أن تلمس أي معادلة
ابدأ من بنية الملف. هذه الفحوصات تستغرق وقتاً أقل من إعادة بناء معادلات وُجِّهت إلى الهدف الخطأ.
| الفحص | ما يجب التأكد منه |
|---|---|
| مفتاح المطابقة | أي عمود يحدّد المعاملة بشكل فريد في كلا الملفَّين |
| صف العنوان | هل يبدأ الملفّان من صف العنوان الحقيقي نفسه |
| عدد الصفوف | هل أحد الملفَّين أقصر قبل أي تصفية |
| النطاق الزمني | هل يغطّي التصديران التاريخ الأول والأخير نفسهما |
| عوامل التصفية | هل هناك صفوف مخفية تجعل أحد الملفَّين يبدو ناقصاً |
| نوع المفتاح | هل المفتاح نص في ملف ورقم في الآخر |
في الملفات البنكية وملفات دفتر الأستاذ، نادراً ما يكون المفتاح «الصف 237». بل هو مرجع معاملة، أو معرّف سطر في كشف الحساب، أو مرجع دفعة، أو رقم فاتورة، أو مفتاح مركّب مقصود مثل date|amount|reference.
إذا كانت عمليات البحث تفشل أصلاً لأن تنسيقات المفاتيح غير متوافقة، فإن لماذا تُرجع VLOOKUP الخطأ #N/A عند تعارض تنسيقات CSV يغطّي أولاً فحوص النوع وخطوات التنظيف الدقيقة.
طابِق الأعمدة قبل أن تطابق الصفوف
ملفّا CSV من نظامَين مختلفَين نادراً ما يستخدمان أسماء الأعمدة نفسها، حتى حين يقصدان الشيء نفسه.
| عنوان الملف A | عنوان الملف B | المعنى نفسه؟ |
|---|---|---|
| Transaction ID | Reference | نعم |
| Posting Date | Value Date | غالباً |
| Gross Amount | Credit | أحياناً |
| Description | Memo | أحياناً |
| Payout ID | Batch Ref | نعم |
إذا لم تتطابق العناوين بوضوح، فتوقّف عند ذلك وقرّر أي الحقول ستحدّد المطابقة. لا تمضِ ببحث يفترض أن Reference وDescription قابلان للتبادل.
أسرع مقارنة موثوقة تقوم على:
- مفتاح مطابقة موحَّد واحد في الملف A
- المفتاح الموحَّد نفسه في الملف B
- عمود حالة يصنّف كل صف: متطابق، أو مفقود، أو مكرّر
وحِّد المفتاح قبل البحث عن الصفوف المفقودة
من هنا تأتي معظم الصفوف المفقودة الزائفة. المعاملة موجودة في كلا الملفَّين، لكن المفتاح مخزّن بشكل مختلف.
| ما تراه | ما يخزّنه الملف A | ما يخزّنه الملف B | النتيجة |
|---|---|---|---|
| 0001842 | نص بأصفار بادئة | رقم 1842 | صف مفقود زائف |
| 2026-05-10 | تاريخ كنص | رقم Excel تسلسلي | صف مفقود زائف |
| INV-7721 | INV-7721 بمسافة في النهاية | INV-7721 | صف مفقود زائف |
| REF-0091 | نص بأحرف كبيرة | نص بأحرف صغيرة في عملية حسّاسة لحالة الأحرف | اختلاف زائف |
استخدم أصغر تصحيح يُثبت المشكلة:
=TRIM(CLEAN(SUBSTITUTE(A2,CHAR(160)," ")))لمشكلات المسافات والأحرف المخفية=TEXT(A2,"0")حين يجب أن يبقى المفتاح الرقمي نصاً=VALUE(A2)حين يجب أن يصبح المفتاح رقماً حقيقياً=TEXT(A2,"yyyy-mm-dd")حين يجب أن يقارن الملفّان على مفتاح التاريخ نفسه
لا تستبدل المفتاح الخام. ابنِ بجانبه عموداً مساعداً موحَّداً لترى ما الذي تغيّر.
مثال عملي صغير قبل أن تمسح الملف كله
افترض أن الملف A يحتوي على مفاتيح المعاملات هذه:
| المفتاح الخام للملف A |
|---|
0001842 |
0001843 |
0001844 |
والملف B يحتوي على:
| المفتاح الخام للملف B |
|---|
1842 |
1843 |
1845 |
إذا قارنت المفاتيح الخام، يخبرك Excel أن الصفوف الثلاثة كلها خاطئة. لكن هذه ليست الإجابة الحقيقية.
بعد توحيد المفتاح بشكل صحيح، تصبح النتيجة:
| المفتاح الموحَّد | حالة الملف A | حالة الملف B | ما المعنى |
|---|---|---|---|
0001842 | موجود | مفقود | الملف B فقد الأصفار البادئة أو يستخدم تنسيق مفتاح آخر |
0001843 | موجود | مفقود | المشكلة نفسها أعلاه |
0001844 | موجود | مفقود | غائب فعلاً إذا لم يوجد مفتاح بديل |
1845 | مفقود | موجود | الملف B به صف لا يملكه الملف A |
يبيّن هذا المثال أن البحث عن الصفوف المفقودة هو في جوهره توحيد للمفاتيح أولاً. وما لم يتحدث الملفّان لغة المعرّفات نفسها، تبقى نتيجة «مفقود» غير جديرة بالثقة.
اكشف الصفوف المفقودة فعلاً بفحص عكسي
أسرع طريقة لإثبات أن صفاً غائب فعلاً هي الفحص في الاتجاهَين.
1. ابنِ عمود مفتاح منظَّف في كل ملف
افترض أن الملف A يستخدم العمود E للمفتاح المنظَّف والملف B يستخدم العمود J.
2. علِّم صفوف الملف A غير الموجودة في الملف B
=IF(COUNTIF($J$2:$J$5000,E2)=0,"Missing from File B","Matched")هذا أفضل من فحص بصري صفاً بصف، لأنه يتجاهل الترتيب ويتحقق من الوجود عبر المفتاح.
3. شغِّل الفحص العكسي في الملف B
=IF(COUNTIF($E$2:$E$5000,J2)=0,"Missing from File A","Matched")الفحص العكسي مهم. معادلة باتجاه واحد لا تكشف إلا جانباً واحداً من الفرق.
4. علِّم المكرّرات قبل أن تثق بالنتيجة
=IF(COUNTIF($E$2:$E$5000,E2)>1,"Duplicate key","Unique")إذا كان المفتاح مكرّراً، فقد يبدو صف مفقوداً بينما المشكلة الحقيقية أن مفتاح المقارنة ليس فريداً بما يكفي.
ما الذي يتغيّر حين لا يوجد معرّف معاملة واحد
بعض الملفات المالية لا تمنحك عمود مفتاح نظيفاً واحداً. ملفات CSV البنكية، وتصديرات الدفعات، ودفاتر الأستاذ المُمسوكة يدوياً تجبرك غالباً على بناء واحد.
في هذه الحالة، لا تستخدم مفتاحاً مركّباً إلا بعد أن تقرّر أي الحقول ثابتة بما يكفي للوثوق بها:
| مفتاح ضعيف | لماذا يفشل |
|---|---|
| المبلغ وحده | التكرارات شائعة |
| التاريخ وحده | صفوف كثيرة تشترك في التاريخ نفسه |
| الوصف وحده | الأوصاف تتغيّر أو تُقتطع |
| مفتاح مركّب أفضل | لماذا يعمل بشكل أفضل | ||
|---|---|---|---|
| `date | amount | reference` | يحتفظ بأقوى معرّف حين يوجد |
| `date | amount | type` | مفيد حين تغيب المراجع لكن شكل الصف ثابت |
| `payout_id | net_amount` | مفيد لملفات الدفعات المجمّعة |
ابنِ المفتاح بالطريقة نفسها في كلا الملفَّين حتى ينتج الجانبان سلاسل متطابقة:
=A2&"|"&TEXT(C2,"yyyy-mm-dd")&"|"&TEXT(D2,"0.00")أجبر التاريخ والمبلغ على صيغ ثابتة داخل المفتاح. إذا ترك جانب المبلغ 1250 وترك الآخر 1,250.00، فلن تتطابق المفاتيح المركّبة حتى لو تطابقت الصفوف.
هنا أيضاً تظهر مشكلات «واحد إلى متعدّد». صف دفعة واحد قد يمثّل عدة مبيعات. وتصدير دفتر أستاذ واحد قد يقسم حركة بنكية واحدة إلى قيدَين محاسبيَّين. إذا كان الملفّان يسجّلان الحدث نفسه على مستويَين مختلفَين، فالصف ليس مفقوداً. شكله هو المختلف.
افصل الصفوف المفقودة عن الصفوف غير المتطابقة
مقارنة الملفات لا تنفع إلا حين تخبرك بنوع المشكلة التي بين يديك.
| الحالة | ما المعنى |
|---|---|
| متطابق | المفتاح الموحَّد موجود في كلا الملفَّين |
| مفقود من الملف A | المفتاح موجود في الملف B فقط |
| مفقود من الملف B | المفتاح موجود في الملف A فقط |
| مفتاح مكرّر | المفتاح المختار لا يحدّد الصفوف بشكل فريد |
| اختلاف في المبلغ أو التاريخ | الصف موجود في كلا الملفَّين، لكن حقل مقارنة يختلف |
هنا يضيع الناس الوقت مع VLOOKUP. يستخدمون بحثاً واحداً للإجابة عن سؤالَين مختلفَين:
- هل الصف موجود؟
- وإن كان موجوداً، هل تتوافق بقية الحقول؟
هذان فحصان منفصلان. أثبت الوجود أولاً. وبعد ذلك فقط قارن أعمدة المبلغ أو التاريخ أو الحالة.
إذا احتجت إلى تمريرة ثانية على اختلافات الحقول بعد إثبات الوجود، فإن كيفية مقارنة قائمتَي Excel وكشف الفروقات هي الخطوة التالية.
النتيجة التي يمكنك الوثوق بها
في النهاية، يجب ألا تقول ورقتك «بعض الصفوف مفقودة» فحسب. يجب أن تنتج نتيجة يمكنك التصرّف بناءً عليها.
| فئة النتيجة | ما يجب أن تحصل عليه |
|---|---|
| الصفوف المتطابقة | عدد ومجموع الصفوف الموجودة في كلا الملفَّين |
| المفقودة من الملف A | قائمة دقيقة بالمفاتيح الغائبة عن الملف A |
| المفقودة من الملف B | قائمة دقيقة بالمفاتيح الغائبة عن الملف B |
| المفاتيح المكرّرة | قائمة مراجعة منفصلة قبل المقارنة النهائية |
| الحقول غير المتطابقة | صفوف موجودة في كلا الملفَّين لكنها تختلف في المبلغ أو التاريخ أو الحالة |
تخبرك هذه النتيجة ما إذا كانت المشكلة معاملة مفقودة فعلاً، أو اختلافاً في نطاق الملفات، أو مفتاحاً معطوباً.
