تحليل البياناتمايكروسوفت إكسل

إكسل: كيفية استخدام XLOOKUP لإرجاع كافة التطابقات

دليل أكاديمي متقدم يشرح كيفية تجاوز قيود دالة XLOOKUP في إكسل وإرجاع كافة التطابقات المتعددة باستخدام تقنيات FILTER والمصفوفات الديناميكية وأعمدة المساعدة.

تاريخ النشر

يمثل استرجاع البيانات وتحليل العلاقات المتبادلة بين الجداول الرقمية حجر الزاوية في نماذج الأعمال المعاصرة؛ إذ يعتمد صناع القرار والمحللون الماليون ومهندسو البيانات بصورة جوهرية على برمجيات الجداول الحسابية لاستخلاص الرؤى التشغيلية والاستراتيجية من كميات هائلة من المدخلات الخام. ومع التطور المتسارع الذي شهدته بيئة مايكروسوفت إكسل (Microsoft Excel)، برزت دالة XLOOKUP كواحدة من أقوى الأدوات وأكثرها مرونة لمعالجة إشكاليات الاستعلام التقليدي، حيث وفرت حلولاً جذرية للقيود الهيكلية التي لطالما كبلت النماذج المعتمدة على الدوال القديمة. إلا أن هذا التطور التقني حمل في طياته تحدياً مفاهيمياً يتمثل في السلوك الافتراضي للدالة، والمصمم بنيوياً لاسترجاع تطابق أحادي مفرد والتوقف عند أول سجل يواجهه محرك البحث داخل المصفوفة المستهدفة.

تنشأ الفجوة التحليلية الكبرى عندما تواجه المؤسسات سيناريوهات واقعية تتطلب تتبع سجلات متكررة لمعرف موحد، مثل حركات الحسابات البنكية لعميل معين، أو المبيعات المتعددة لمندوب تجاري، أو تكرار المنتجات ذات الأرقام التعريفية المتشابهة عبر مستودعات مختلفة. في هذه البيئات الديناميكية، يؤدي الاعتماد على السلوك الأحادي القياسي لدالة XLOOKUP إلى بتر البيانات واستبعاد كافة السجلات اللاحقة، مما يترتب عليه نتائج مضللة وقراءات إحصائية منقوصة قد تكلف المؤسسات خسائر مالية وإدارية فادحة. ومن هنا، تبرز الحاجة المعرفية والتطبيقية الملحة لتفكيك هذه المعضلة الرياضية، وفهم الآليات المتقدمة التي تمكن مهندس البيانات من تطويع منظومة الاستعلام في إكسل لإرجاع كافة التطابقات بلا استثناء.

يهدف هذا المرجع الأكاديمي والعملي الشامل إلى تأصيل المفاهيم البرمجية والرياضية الكامنة خلف عمليات البحث متعددة النتائج في برنامج إكسل. سنناقش بعمق البنية الخوارزمية لدالة XLOOKUP وحدودها التشغيلية، ونسلط الضوء على البدائل المعيارية المباشرة وعلى رأسها دالة FILTER، كما سنبحث في آليات التوليف الهجين بين الدوال المتقدمة، وهندسة أعمدة المساعدة التراكمية، ومقارنتها بالحلول التقليدية الكلاسيكية. ومن خلال استعراض نماذج تطبيقية معمقة في إدارة المخزون وتحليل المبيعات وتدقيق كشوف الحسابات، يرسم هذا الدليل خارطة طريق احترافية تضمن سلامة النمذجة المالية ودقة استرجاع البيانات المؤسسية وفق أرقى المعايير التقنية العالمية.

1. مقدمة تأصيلية لدالة XLOOKUP وسلوك البحث الافتراضي

1.1 تطور دوال البحث في بيئة مايكروسوفت إكسل

شهدت منظومة الحسابات المجدولة في بيئة مايكروسوفت إكسل تحولاً جذرياً في بنيتها المعمارية على مدار العقود الثلاثة الماضية. في البدايات الأولى، شكلت دالتا VLOOKUP و HLOOKUP حجر الأساس لعمليات البحث المرجعي والاسترجاع الرأسي والأفقي. ومع ذلك، عانت تلك الدوال التقليدية من أوجه قصور هيكلية متأصلة في تصميمها البرمجي الأولي؛ فقد فرضت دالة VLOOKUP قيداً صارماً يلزم بوجود مفتاح البحث في العمود الأول (أقصى اليمين أو أقصى اليسار بحسب اتجاه واجهة المصنف)، مما جعل البحث العكسي نحو الخلف مستحيلاً دون إعادة هيكلة الأعمدة أو اللجوء إلى حيل التبديل المعقدة. بالإضافة إلى ذلك، فإن اعتمادها على إدخال رقم فهرس العمود (Column Index Number) كقيمة عددية ثابتة جعل النماذج المحاسبية عرضة للانهيار المفاجئ والتحريف الحسابي بمجرد إدراج عمود جديد أو حذفه من جدول البيانات الأساسي.

ولمعالجة هذه التحديات، لجأ المحترفون لعقود إلى دمج دالتي INDEX و MATCH، وهي صيغة ثنائية حققت المرونة المطلوبة في تحرير اتجاه البحث وفصل مصفوفة البحث عن مصفوفة الإرجاع، مما أتاح حصانة كاملة ضد تغير مواقع الأعمدة. غير أن هذا الحل، ورغم كفاءته، اتسم بتعقيد تركيبي يصعب على المستخدم العادي فهمه أو صيانته، ناهيك عن استهلاكه المرتفع لموارد المعالجة في قواعد البيانات الضخمة. وانطلاقاً من الرغبة في توحيد هذه المعايير المتفرقة وتبسيط النمذجة، أطلقت مايكروسوفت دالة XLOOKUP في إصدار Microsoft 365 كمعيار مرن وشامل يدمج مزايا كافة الحلول السابقة في إطار هيكلي موحد يتسم بالوضوح البرمجي والأداء الحسابي الفائق.

تتميز البنية التركيبية لدالة XLOOKUP بتوفير ستة معاملات تشغيلية مدروسة بعناية فائقة، ثلاثة منها إلزامية وثلاثة اختيارية. تشمل المعاملات الإلزامية: قيمة البحث، ومصفوفة البحث، ومصفوفة الإرجاع. هذا الفصل الصريح بين نطاق البحث ونطاق النتائج أتاح إمكانية الاستعلام الرأسي والأفقي والبحث المعاكس بسلاسة غير مسبوقة دون الاعتماد على الأرقام الفهرسية. أما المعاملات الاختيارية، فقد غطت معالجة حالات عدم العثور على القيمة تلقائياً دون الحاجة إلى تغليف الدالة بدالة IFERROR، وضبط أوضاع المطابقة التامة والتقريبية وتطابق الرموز البديلة (Wildcards)، وتحديد اتجاه البحث من الأعلى إلى الأسفل أو العكس، ومن ثم مثلت الدالة قفزة معمارية غير مسبوقة في هندسة برمجيات التحليل الكمي.

1.2 مفهوم التطابق الأحادي والسلوك الافتراضي للدالة

على الرغم من القوة التعبيرية الهائلة لدالة XLOOKUP، إلا أنها صُممت في جوهرها البرمجي لتنفيذ عمليات البحث الفردية الموجهة؛ أي تحديد أول ظهور للمدخلات المطلوبة واسترجاع القيمة المقابلة لها ثم إنهاء دورة المعالجة فوراً. تتبع خوارزمية الدالة مساراً خطياً يبدأ من أول عنصر في مصفوفة البحث ويتحرك بالترتيب التسلسلي عنصراً تلو الآخر حتى يتحقق شرط التساوي المنطقي. في اللحظة الزمنية التي يكتشف فيها المحرك الحسابي هذا التطابق، يتم إيقاف المؤشر واسترجاع الخلية المناظرة من مصفوفة الإرجاع، وتتجاهل الدالة تماماً ما تبقى من بيانات داخل النطاق، بصرف النظر عما إذا كانت هناك سجلات أخرى متطابقة تلي هذا السجل أم لا.

هذا السلوك الافتراضي، المسمى البحث التتابعي من البداية إلى النهاية، يعد مثالياً عند التعامل مع المفاتيح الأساسية غير القابلة للتكرار (Primary Keys)، مثل الأرقام القومية للهوية الوطنية، أو الأرقام التعريفية الفريدة للموظفين، أو الرموز التسلسلية للقطع المصنعية (Serial Numbers). في هذه الحالات، لا يمكن منطقياً وجود أكثر من سجل واحد يحمل نفس الرمز، وبالتالي فإن توقف الدالة عند أول تطابق يحقق الكفاءة الحسابية المثلى عبر توفير وقت المعالجة وتفادي المسح غير الضروري لبقية أجزاء الجدول. غير أن هذا الافتراض البنيوي يتحول إلى عائق تحليلي جسيم عندما تنتقل بيئة العمل إلى دراسة جداول المعاملات والأحداث التراكمية اليومية.

تتطلب السيناريوهات التحليلية في قطاعات الأعمال فحص البيانات القائمة على العلاقات متعددة الأطراف (One-to-Many Relationships). فعلى سبيل المثال، يمتلك العميل الواحد حسابات فرعية متعددة ويسجل عشرات الحركات الشرائية على مدار الشهر، كما يُسند إلى المشروع الواحد قائمة طويلة من المهام التشغيلية الموزعة على فترات زمنية متفرقة. في مثل هذه البيئات، يصبح السلوك الأحادي لدالة XLOOKUP غير قادر على تلبية متطلبات التحليل الإحصائي أو الرقابي الدقيق، نظراً لأن الاكتفاء بمطابقة القيمة الأولى يعزل باقي عناصر المنظومة ويحجب الصورة الكلية عن صانع القرار، مما يفرض ضرورة التمييز الحاسم بين مطابقة السجلات المتفردة واستعلام الكيانات المتعددة.

1.3 تحديات استرجاع السجلات المكررة في قواعد البيانات المجدولة

تمثل إشكالية فقدان البيانات الثانوية غير المسترجعة واحداً من أبرز المخاطر الخفية في هندسة جداول البيانات المؤسسية. فعندما يعتمد المحلل على صيغة استعلام أحادية مثل XLOOKUP لجلب قيمة مستحقة لعميل معين يمتلك خمس فواتير مستحقة، فإن الصيغة ستُرجع دائماً الفاتورة الأولى فقط وتتجاهل الفواتير الأربع المتبقية. هذا الإهمال لا يتوقف عند مجرد فقدان أرقام إيضاحية، بل يؤدي إلى تشويه مباشر في القوائم المالية، حيث تظهر الأرصدة المدينة بصورة مجتزأة، ويتم تضليل مدققي الحسابات الذين يبنون استنتاجاتهم على صحة شمولية السجلات المنسوخة عبر المعادلات المرجعية.

يمتد هذا الأثر السلبي المباشر إلى النماذج المالية والتحليلات الكمية التراكمية؛ فالنماذج التنبؤية واختبارات الضغط المحاسبية تتطلب تغذية متكاملة بكافة التدفقات النقدية السابقة دون استثناء. وإذا بُني نموذج لتقييم التدفق النقدي على دالة تقطع السجلات عند أول ظهور، فإن مصفوفات الإهلاك والتدفقات الصافية ستسجل انحرافاً حاداً يقود بالضرورة إلى قرارات استثمارية كارثية. علاوة على ذلك، في تحليلات سلاسل الإمداد ومراقبة الجودة، يؤدي عجز الصيغ عن رصد كافة الشحنات المعيبة للمورد الواحد إلى تصنيفه خطأً ضمن الموردين الملتزمين، مما يعطل منظومات الإنذار المبكر في خطوط الإنتاج والتشغيل.

تتطلب هذه التحديات المعقدة تحولاً منهجياً في طريقة بناء الصيغ الرياضية؛ إذ لم يعد مقبولاً في بيئات التحليل الاحترافية الاعتماد على محاولات الاستعلام الموضعي المقيدة بالخلايا الفردية. إن الضرورة تقتضي تطوير صيغ برمجية قادرة على قراءة المصفوفات الشاملة، والتفاعل مع محركات الحساب التلقائي، والانسكاب عبر الأبعاد المتعددة لتفريغ كافة النتائج المتطابقة ضمن مساحة التحليل المستهدفة دون تشويه أو اجتزاء، وهو ما يفتح الباب أمام استيعاب آليات الحساب المتقدمة التي توفرها مصفوفات الانسكاب الديناميكي الحديثة.

2. البنية التركيبية والمحددات التقنية لدالة XLOOKUP

2.1 تحليل المعاملات التشغيلية لدالة XLOOKUP

لتشريح دالة XLOOKUP بصورة منهجية، يتعين فحص وسائطها الستة بالتفصيل المعماري الدقيق. تتخذ الصيغة العامة للدالة التركيب التالي:

=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])

المعامل الأول lookup_value يمثل القيمة المطلوب الاستعلام عنها، سواء كانت قيمة نصية، أو عدداً، أو تاريخاً، أو مرجع خلية، أو مصفوفة منسلبة من دالة أخرى. أما المعامل الثاني lookup_array فيشير إلى المتجه المرجعي (نطاق أحادي البعد عمودياً أو أفقياً) الذي سيجري مسحه للعثور على قيمة البحث. ويأتي المعامل الثالث return_array ليمثل المتجه أو المصفوفة التي تحتوي على القيم المستهدف استرجاعها، ويتميز بمرونة فائقة تسمح بتحديد نطاق ذي أبعاد متعددة، مما يتيح إرجاع صف أو عمود كامل بالتوازي مع نقطة الالتقاء المكتشفة.

تنتقل الدالة بعد ذلك إلى وسائطها الاختيارية شديدة التأثير، حيث يحدد المعامل الرابع if_not_found القيمة أو النص الذي يجب إرجاعه في حال عدم تحقق أي تطابق، وهو ما يلغي الحاجة إلى دمج دوال الحماية التقليدية مثل IFNA، ويمنع ظهور رموز الأخطاء التي تشوه واجهات التقارير. أما المعامل الخامس match_mode فيتحكم في منطق التطابق عبر أربعة خيارات أساسية: (0) للمطابقة التامة الافتراضية، و (-1) للمطابقة التامة أو العنصر الأصغر التالي، و (1) للمطابقة التامة أو العنصر الأكبر التالي، و (2) لتفعيل مطابقة الأحرف البديلة مثل علامة النجمة وعلامة الاستفهام لاستعلام النصوص الجزئية.

أما المعامل السادس والأخير search_mode فيتحكم في التوجيه الاتجاهي والخوارزمي لعملية البحث؛ حيث يتيح الخيار الافتراضي (1) إجراء بحث تتابعي يبدأ من العنصر الأول وينتهي بالعنصر الأخير، بينما يتيح الخيار (-1) عكس اتجاه المسح ليبدأ من العنصر الأخير رجوعاً إلى العنصر الأول، مما يفيد في جلب أحدث الحركات الزمنية دون تعديل ترتيب الجدول. كما يوفر المعامل الخيارين (2) و (-2) لتنفيذ خوارزميات البحث الثنائي (Binary Search) في الجداول المصنفة تصاعدياً أو تنازلياً، وهي ميزة تحقق سرعات معالجة استثنائية تقترب من التعقيد الزمني اللوغاريتمي في قواعد البيانات الضخمة، ولكنها تشترط تنظيماً صارماً للبيانات المسبقة.

2.2 المحددات الرياضية لعدم قدرة XLOOKUP المنفردة على إرجاع مصفوفة متكررة

يرجع عجز دالة XLOOKUP عن إرجاع كافة السجلات المتطابقة في مصفوفة مكررة إلى طبيعة تصميمها الخوارزمي ونموذج المؤشر الأحادي الذي تبنى عليه. من الناحية الحسابية، تعمل الدالة على إيجاد تقاطع إحداثي بين موقع المؤشر المنطقي في مصفوفة البحث والمتجه المناظر له في مصفوفة الإرجاع. وبما أن الخوارزمية مبرمجة لإنهاء حلقة التكرار (Loop Termination) بمجرد تقييم الشرط المنطقي إلى TRUE للمرة الأولى، فإن بنية الدالة لا تحتوي على ذاكرة تكديس داخلية لتخزين الفهارس اللاحقة التي قد ينطبق عليها نفس الشرط.

يترتب على هذا التصميم استحالة تمدد دالة XLOOKUP عمودياً لتشمل صفوفاً متفرقة متباعدة بناءً على شرط واحد يحمل تكرارات متعددة. فحتى لو تم إدخال مصفوفة متعددة الصفوف في وسيط مصفوفة الإرجاع، فإن الدالة ستُرجع فقط الصف الأفقي المناظر للتطابق الأول، ولن تتمكن من القفز وتجميع الصفوف الثالث والسابع والعاشر مثلاً التي يتكرر فيها نفس المعيار. إن المعمارية الداخلية للدالة لا تسمح بإعادة هيكلة أبعاد المخرجات لضغط المسافات البينية بين السجلات المتطابقة، وهو ما يُعرف في علم هياكل البيانات بعدم القدرة على التجميع الشرطي غير المتصل (Non-contiguous Conditional Aggregation).

يلجأ بعض المحللين أحياناً إلى استغلال وضع البحث العكسي (search_mode = -1) كمحاولة للالتفاف على هذا القيد، حيث يمكنهم من خلال وضعين مختلفين استرجاع السجل الأول والسجل الأخير لنفس المعيار المكرر. ورغم نجاح هذه الحيلة الجزئية في استخلاص طرفي السلسلة الزمنية لحركات عميل معين، إلا أنها تظل قاصرة تماماً عن جلب أي سجلات تقع بين السجلين الأول والأخير. فإذا تكرر المعيار عشر مرات، تظل الحركات الثماني الوسطى محجوبة كلياً عن التحليل، مما يثبت أن محاولة استخدام XLOOKUP بمفردها لاسترجاع مصفوفات متكررة كاملة هي مغالطة رياضية تصطدم بحدود التصميم البرمجي الأصيل للدالة.

2.3 المقارنة الفنية بين دالة XLOOKUP ومفهوم مصفوفات الانسكاب الديناميكي

أحدث إطلاق محرك الحساب المعتمد على مصفوفات الانسكاب الديناميكي (Dynamic Spill Arrays) في إصدارات إكسل الحديثة ثورة مفاهيمية في كيفية تفاعل الصيغ مع شبكة الخلايا. في البيئة التقليدية، كانت الخلية الفردية مقيدة باحتواء قيمة واحدة فقط، وكان تطبيق صيغ المصفوفات يتطلب تحديد النطاق مسبقاً والضغط على التركيبة الثلاثية الشهيرة Ctrl+Shift+Enter. أما في ظل المحرك الحديث، فإن أي دالة تُرجع مصفوفة من القيم يمكنها تلقائياً “الانسكاب” عبر الخلايا المجاورة رأسياً وأفقياً من خلال صيغة مدخلة في خلية رئيسية واحدة فقط.

تتمتع دالة XLOOKUP بالقدرة على الانسكاب الديناميكي، ولكن انسكابها مقيد ببعد محدد؛ إذ تستطيع الدالة إرجاع مصفوفة أفقية من عدة أعمدة إذا تم تحديد نطاق إرجاع يشمل أعمدة متعددة، مثل صياغة المعادلة لاسترجاع الاسم والراتب وتاريخ التعيين في آن واحد بناءً على الرقم الوظيفي. في هذا السيناريو، تنسكب الدالة أفقياً عبر ثلاثة أعمدة بكل سلاسة. ولكن الحد الفاصل يكمن في عجزها عن تفعيل الانسكاب الرأسي التكراري لنفس المعيار؛ فالانسكاب الرأسي لـ XLOOKUP لا يتحقق إلا إذا تم تمرير مصفوفة من قيم البحث المتعددة في المعامل الأول، وحينها تُرجع الدالة التطابق الأول لكل قيمة بحث على حدة، ولا ترجع أبداً تطابقات متعددة لقيمة بحث فردية واحدة.

يقود هذا التحليل التقني الدقيق إلى حقيقة منهجية لا مفر منها: إن دالة XLOOKUP ليست الأداة المناسبة لمعالجة عمليات الاستعلام الشامل متعدد الصفوف بمفردها. ولتحقيق هذه الغاية التحليلية بنجاح، يجب إما الاستعانة بدوال مصفوفية متخصصة ومصممة خصيصاً للغربلة الشرطية مثل دالة FILTER، أو بناء صيغ هجينة تدمج مرونة XLOOKUP مع قدرات التصفية التوزيعية، أو اللجوء إلى تقنيات هندسة المفاتيح الاصطناعية المساعدة لتجاوز القيود البنيوية للمؤشر الأحادي.

3. التشخيص التحليلي لمشكلة المطابقة الأولى عبر الأمثلة العملية

3.1 دراسة حالة: سجلات الفرق الرياضية والنقاط التراكمية

لتوضيح خطورة المشكلة بالأرقام العملية، نفترض وجود جدول بيانات يسجل نتائج بطولة رياضية، حيث يتضمن الجدول ثلاثة أعمدة رئيسية: “اسم الفريق”، و”رقم الجولة”، و”النقاط المكتسبة”. يتكرر اسم الفريق الواحد (وليكن “فريق الأمل”) في عدة صفوف غير متتالية تعكس مشاركته في الجولات الأولى والثالثة والسابعة، وقد حقق في تلك المباريات 3 نقاط، و 1 نقطة، و 3 نقاط على التوالي. تقع هذه البيانات في النطاق A2:C15، حيث يحتوي العمود A على أسماء الفرق، والعمود B على أرقام الجولات، والعمود C على النقاط المسجلة.

عندما يقوم محلل الأداء بكتابة صيغة XLOOKUP التقليدية في خلية مستقلة لاسترجاع نقاط “فريق الأمل” على النحو التالي:

=XLOOKUP("فريق الأمل", A2:A15, C2:C15)

فإن محرك الحساب سيبدأ مسح العمود A من الخلية A2 هبوطاً، وسيتوقف فور مواجهة أول ظهور لاسم “فريق الأمل” في الخلية A2، ليعيد النتيجة (3 نقاط) فقط. وعند محاولة المحلل استخدام نتيجة هذه الخلية لقياس الأداء التراكمي أو دراسة تذبذب مستوى الفريق عبر الجولات، سيحدث تشويه إحصائي جسيم؛ إذ تضيع نتيجتا الجولتين الثالثة والسابعة بالكامل، ويُحسب أداء الفريق بنسبة خطأ تتجاوز 57% من إجمالي نقاطه الحقيقية البالغة 7 نقاط.

إذا حاول المحلل تصحيح المسار عبر تغيير اتجاه البحث ليصبح عكسياً من الأسفل إلى الأعلى باستخدام المعامل السادس:

=XLOOKUP("فريق الأمل", A2:A15, C2:C15, "غير موجود", 0, -1)

فإن الصيغة ستتوقف عند السجل الأخير في الخلية A12 وتُرجع القيمة (3 نقاط) الخاصة بالجولة السابعة، متجاهلة تماماً نتيجة الجولة الثالثة (نقطة واحدة) والنتيجة الأولى أيضاً. يوضح هذا التوثيق البرمجي العملي أن التبديل بين أوضاع البحث لا يعالج جوهر الأزمة، بل ينقل فقط نقطة الانحياز والاقتطاع من بداية المصفوفة إلى نهايتها دون توفير الرؤية الشاملة المطلوبة.

3.2 الآثار المالية والإدارية لاقتطاع البيانات المتعددة

تتضاعف خطورة هذا السلوك الأحادي عندما ينتقل التطبيق إلى البيئات المالية والمحاسبية الحساسة. لنعتبر سيناريو محاسبياً داخل شركة تجارية تستخدم دالة XLOOKUP لترحيل الدفعات المالية من دفتر اليومية العام إلى سجل الموردين؛ حيث أصدر أحد الموردين الرئيسيين أربع فواتير توريد خلال أسبوع واحد بأرقام وقيم مختلفة مسجلة جميعها تحت اسم المورد نفسه. إذا استخدم مدقق الحسابات صيغة XLOOKUP لجلب قيمة الفواتير المستحقة، فسيتم استدعاء قيمة الفاتورة الأولى فقط وتكرارها أو اعتمادها كإجمالي للمديونية، مما يتسبب في إغفال سداد باقي المستحقات، وتعريض الشركة لغرامات تأخير أو فقدان الثقة الائتمانية مع المورد.

وفي إدارة الموارد البشرية، يبرز التحدي نفسه عند مراجعة سجلات التدريب والتطوير أو الحركات الوظيفية؛ فالموظف الواحد قد يحصل على عدة ترقيات أو يسجل مخالفات إدارية متعددة على مدار سنوات خدمته. وإذا بُني تقرير تقييم الأداء السنوي على استعلامات أحادية قاصرة، فسيتم جلب المخالفة الأولى فقط دون النظر إلى التزام الموظف اللاحق، أو استدعاء أول ترقية دون احتساب الترقيات اللاحقة وتعديلاتها على سلم الرواتب والمزايا، مما يخلق بيئة عمل غير عادلة ويؤسس لنزاعات عمالية كان يمكن تفاديها ببناء معادلات استعلام شاملة.

تفرض هذه التداعيات الإدارية والمالية ضرورة إرساء حوكمة صارمة لتصميم الصيغ الرياضية داخل المنظمات؛ حيث يتعين التخلي كلياً عن منطق “الاستعلام بالمصادفة” الذي تفترضه دوال البحث الأحادية في سياق البيانات التراكمية، واستبداله بمنهج “التصفية الشاملة” (Comprehensive Filtering). إن التحول نحو استدعاء الكيانات المتطابقة كافة يضمن سلامة القيود المزدوجة، ويحمي التقارير التنفيذية من الأخطاء التراكمية القاتلة، ويوفر بيئة تدقيق شفافة تتطابق فيها مخرجات الشاشات التحليلية مع الواقع المالي والتشغيلي للمنشأة.

4. البديل المعياري المباشر: توظيف دالة FILTER لإرجاع كافة المطابقات

4.1 البنية التركيبية المتقدمة لدالة FILTER

تعتبر دالة FILTER، التي طرحتها مايكروسوفت بالتزامن مع محرك الحساب الديناميكي الحديث، الحل المعياري المباشر والأكثر أناقة لمعضلة استرجاع كافة المطابقات. صُممت هذه الدالة هندسياً لمعالجة المصفوفات الكاملة وتصفيتها بناءً على اختبارات منطقية متعددة، ثم سكب النتائج دفعة واحدة دون الحاجة إلى حلقات تكرارية معقدة. تتخذ الدالة التركيب النحوي التالي:

=FILTER(array, include, [if_empty])

يتكون هذا التركيب من ثلاثة وسائط دقيقة؛ المعامل الأول array يمثل مصفوفة أو نطاق البيانات الأصلي المراد استخلاص النتائج منه، سواء كان عموداً فردياً أو عدة أعمدة متجاورة تمثل جدولاً كاملاً. المعامل الثاني include هو الوسيط الحاسم في الدالة، حيث يستقبل مصفوفة منطقية ثنائية (Boolean Array) تتألف من قيم TRUE و FALSE بنفس طول النطاق المستهدف، ويتم توليدها عادة عبر صياغة شرط منطقي يقارن نطاق المعايير بقيمة محددة. أما المعامل الثالث if_empty فيوفر مخرجاً آمناً يظهر تلقائياً عندما تكون كافة نتائج التقييم المنطقي FALSE، مما يمنع انسكاب خطأ الحساب الشهير #CALC!.

تعتمد الآلية الداخلية لدالة FILTER على التقييم المنطقي الثنائي (Boolean Logic) فائق السرعة؛ فعندما نقوم بصياغة الشرط A2:A100 = "الرياض"، يقوم المحرك الحسابي في الذاكرة بإنشاء متجه مؤقت يحتوي على قيم الصواب والخطأ لكل صف في النطاق. بعد ذلك، تقوم الدالة بمسح مصفوفة البيانات الأصلية array واستخراج كافة الصفوف التي يقابلها المؤشر المنطقي TRUE فقط، مع استبعاد تام لكافة الصفوف التي يقابلها FALSE. وبفضل هذا المنطق، لا تتوقف الدالة عند أول تطابق كما تفعل XLOOKUP، بل تستمر في فحص المصفوفة حتى نهايتها، مجمعةً كافة الصفوف المستحقة في مصفوفة مخرجات موحدة ومستمرة.

4.2 التطبيق العملي لصيغة FILTER الموازية لـ XLOOKUP

لتطبيق دالة FILTER كبديل مباشر وفعال لـ XLOOKUP في سيناريو استرجاع كافة المطابقات، نعود إلى مثال سجلات المبيعات؛ حيث لدينا عمود لأسماء المناديب في النطاق A2:A50، وعمود لقيم المبيعات في النطاق C2:C50، ونرغب في استرجاع كافة مبيعات المندوب “أحمد” المكتوب اسمه في الخلية F2. في هذه الحالة، بدلاً من استخدام XLOOKUP التي ستعطي عملية بيع واحدة فقط، نقوم بكتابة صيغة FILTER في الخلية G2 على النحو التالي:

=FILTER(C2:C50, A2:A50 = F2, "لا توجد مبيعات مسجلة")

بمجرد الضغط على زر الإدخال Enter، يقوم محرك الإكسل بحساب المعادلة وسكب كافة المبيعات المحققة للمندوب أحمد عمودياً في الخلايا المتتالية (G2, G3, G4…) دون الحاجة لسحب مقبض التعبئة يدوياً. وإذا أردنا استرجاع سجل المعاملة كاملاً بما يشمل تاريخ البيع واسم العميل وقيمة الصفقة (ولنفرض أنها تقع في الأعمدة B و C و D)، فإننا نكتفي بتوسيع المعامل الأول ليشمل النطاق متعدد الأعمدة:

=FILTER(B2:D50, A2:A50 = F2, "لا توجد مبيعات مسجلة")

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

تتفوق هذه المقاربة بشكل ساحق على أي محاولة لتقليد السلوك باستخدام XLOOKUP من حيث سرعة المعالجة الحاسوبية واستهلاك الذاكرة. تعمل دالة FILTER كعملية مصفوفية مجمعة (Vectorized Operation)، مما يعني أن محرك الحساب ينفذ المقارنة المنطقية والتصفية في دورة معالجة واحدة داخل الذاكرة العشوائية السريعة، في حين أن محاولات تركيب XLOOKUP المتكررة تفرض استدعاءات متتالية للمؤشرات وتستهلك موارد المعالج بصورة مضاعفة، مما يجعل FILTER المعيار الذهبي المعتمد للأداء السريع والنتائج الدقيقة.

4.3 إدارة سلوك الانسكاب التلقائي وخطأ التدفق (#SPILL!)

يرتبط استخدام دالة FILTER بمفهوم “نطاق الانسكاب” (Spill Range)، وهو الحيز المكاني في ورقة العمل الذي تشغله المخرجات المتعددة المسترجعة. ومع ذلك، قد يواجه المستخدمون رسالة الخطأ الشهيرة #SPILL!، وهي رسالة تحذيرية يطلقها الإكسل عندما يعجز عن تمديد مصفوفة النتائج بسبب وجود عائق مادي في طريق الانسكاب. قد يكون هذا العائق نصاً عشوائياً في إحدى الخلايا السفلية، أو صيغة حسابية أخرى، أو خلية مدمجة (Merged Cell)، أو حتى مسافة فارغة غير مرئية تم إدخالها بالخطأ في المسار المتوقع للمخرجات.

لحل ومعالجة هذا الخطأ بصورة منهجية، يوفر الإكسل مؤشراً بصرياً يحيط بنطاق الانسكاب المقترح بحدود منقطة؛ ويتعين على المحلل تحديد المسار بالكامل وحذف أي بيانات تعترض تمدد النتائج. كما يجب الالتزام الصارم بتجنب دمج الخلايا في أي نطاق يُتوقع أن يستقبل بيانات منسكبة، نظراً لأن البنية الهيكلية للخلايا المدمجة تتعارض جذرياً مع الآلية البرمجية لتوزيع المصفوفات المنسكبة. بالإضافة إلى ذلك، ينبغي تصميم الجداول التحليلية بحيث تترك مساحات أمان سفلية كافية تتسع لأقصى عدد محتمل من المخرجات المنسكبة لتفادي الاصطدام بالجداول المجاورة أو التذييلات الثابتة.

للاستفادة القصوى من المخرجات المنسكبة، وفر إكسل مشغل النطاق المنسكب المرموز له بعلامة المربع (#). فإذا كانت صيغة FILTER مكتوبة في الخلية G2 وانسكبت عبر عشرة صفوف، يمكن لأي معادلة أخرى الإشارة إلى كامل نتائج هذه التصفية ببساطة عبر كتابة مرجع الخلية متبوعاً بالرمز: G2#. يتيح هذا المشغل بناء تحليلات لاحقة فائقة الديناميكية؛ فلو أردنا حساب إجمالي مبيعات المندوب المنسكبة، نكتب بكل بساطة:

=SUM(G2#)

وستقوم الدالة SUM بتحديث نطاق جمعها ذاتياً ليتوسع أو يتقلص كلما تغيرت نتائج التصفية في G2، مما يمثل قمة المرونة في إدارة مسارات البيانات المؤتمتة.

5. الدمج المتقدم بين XLOOKUP و FILTER في صيغ هجينة

5.1 توظيف FILTER كمدخل لنطاق الإرجاع في دالة XLOOKUP

على الرغم من أن دالة FILTER توفر استرجاعاً شاملاً، إلا أن هناك متطلبات تحليلية متقدمة تفرض دمج قدرات XLOOKUP الاستعلامية مع قوة التصفية الشاملة لدالة FILTER في صيغة هجينة واحدة. يتجلى هذا النموذج عندما نحتاج إلى استخراج كافة السجلات التي تنطبق عليها شروط معينة، ثم تطبيق استعلام انتقائي دقيق على تلك المصفوفة المصفاة بناءً على معايير ثانوية متطورة تتيحها معاملات XLOOKUP مثل أوضاع المطابقة التقريبية أو البحث العكسي داخل النطاق المصفى.

في هذا التركيب، يتم تغذية دالة XLOOKUP بمصفوفة ناتجة عن FILTER لتكون هي مصفوفة البحث أو مصفوفة الإرجاع. لنفترض أننا نريد تصفية حركات فرع تجاري معين أولاً للحصول على كافة عملياته، ثم نريد تطبيق XLOOKUP على هذه العمليات المحددة فقط للبحث عن معاملة تقترب من حد مالي معين. تتخذ الصيغة المركبة الشكل التالي:

=XLOOKUP(Target_Value, FILTER(Amounts, Branches = "فرع الشمال"), FILTER(Invoice_IDs, Branches = "فرع الشمال"), "غير متوفر", 1)

يقوم المحرك الحسابي هنا بمعالجة دالتي FILTER أولاً في الذاكرة المؤقتة لتقليص نطاقي المبالغ وأرقام الفواتير ليقتصرا حصرياً على “فرع الشمال”، ثم تنفذ XLOOKUP بحثها التقريبي (Match Mode = 1) داخل هذه المصفوفة المصغرة فائقة الاستهداف.

يحقق هذا التكامل البرمجي التوافق التشغيلي الكامل بين مصفوفات الذاكرة، ويوفر بيئة استعلام متعددة الطبقات دون الحاجة لإنشاء جداول وسيطة تشغل مساحة المصنف وتزيد من حجمه. إن توظيف ناتج التصفية كمدخل مرجعي لدوال البحث ينقل النمذجة المالية إلى مستوى متقدم من الأتمتة الموثوقة، حيث يتم حصر نطاق البحث ديناميكياً قبل تنفيذ المطابقة النهائية، مما يقلل احتمالات الخطأ ويضمن توجيه العمليات الاستعلامية نحو الشريحة المستهدفة بدقة متناهية.

5.2 إرجاع كافة المطابقات مع تخصيص أعمدة النتائج ديناميكياً

من أكثر التطبيقات الهجينة إبهاراً في بناء التقارير المحاسبية المتقدمة هو الجمع بين FILTER لتصفية الصفوف و XLOOKUP لاختيار الأعمدة المسترجعة ديناميكياً بناءً على رؤوس الأعمدة المتغيرة. في الجداول المالية الموسعة التي تحتوي على عشرات الحقول (مثل: كود المنتج، الوصف، سعر الشراء، سعر البيع، الضريبة، الخصم، المورد، تاريخ الاستلام)، قد يحتاج التقرير إلى تصفية كافة صفوف صنف معين، ولكن مع إظهار عمودين فقط يختارهما المستخدم من خلال قوائم منسدلة في واجهة التقرير.

لتحقيق ذلك، يتم استخدام FILTER لتصفية صفوف الجدول كالمعتاد، بينما تُستخدم XLOOKUP لتحديد المتجه العمودي المراد إرجاعه من خلال مطابقة عنوان العمود المختار مع صف العناوين في الجدول الرئيسي. لنفترض أن جدول المبيعات يقع في النطاق A2:J100 وعناوينه في النطاق A1:J1، واسم العميل المطلوب تصفيته في الخلية L2، بينما اسم العمود المطلوب إظهاره (مثلاً “صافي الربح”) مكتوب في الخلية M1. تصاغ المعادلة الهجينة العبقرية كالتالي:

=FILTER(XLOOKUP(M1, A1:J1, A2:J100), A2:A100 = L2, "لا توجد بيانات")

في هذه المعادلة المركبة، تبحث XLOOKUP عن اسم العمود المكتوب في M1 داخل شريط العناوين A1:J1، وتُرجع العمود المقابل له بالكامل من النطاق A2:J100. بعد ذلك، تستلم دالة FILTER هذا العمود المختار وتجري عليه عملية التصفية الرأسية بناءً على شرط العميل A2:A100 = L2. وبهذه الطريقة، أصبح القالب الحسابي مستقلاً تماماً عن الترتيب المادي للأعمدة؛ فإذا قام المستخدم بتغيير الخلية M1 من “صافي الربح” إلى “تاريخ الفاتورة”، ستتغير مخرجات التصفية فوراً لتعرض التواريخ الخاصة بهذا العميل لكافة معاملاته، مما يوفر مرونة استثنائية للوحات القيادة التفاعلية.

5.3 تحليل كفاءة الصيغ المركبة ومفاضلتها الأكاديمية

عند تقييم هذه الصيغ المركبة من منظور أكاديمي وهندسي، يتعين على محلل النظم الموازنة بين المرونة الوظيفية والعبء التشغيلي الواقع على وحدة المعالجة المركزية (CPU) والذاكرة العشوائية (RAM). إن تداخل الدوال المصفوفية، مثل وضع دالة FILTER داخل دالة XLOOKUP أو العكس، يُلزم محرك الحساب بتخصيص مساحات تخزين مؤقتة متعددة لإدارة المتجهات الوسيطة قبل إنتاج المصفوفة النهائية، وهو ما قد يؤدي إلى تباطؤ طفيف في الاستجابة اللحظية إذا كانت الجداول المستهدفة تحتوي على مئات الآلاف من الصفوف المتشابكة.

بالإضافة إلى الأداء، يبرز معيار “قابلية الصيانة والتدقيق” (Code Maintainability & Auditability)؛ فالصيغ الهجينة المفرطة في التعقيد غالباً ما يصعب فك شفرتها وتتبع منطقها الحسابي بواسطة مدققي الحسابات الخارجيين أو المستخدمين الجدد للمصنف، مما قد يرفع من مخاطر استمرار الأخطاء الحسابية غير المكتشفة لفترات طويلة. ومن هنا تنص الإرشادات الأكاديمية لهندسة البرمجيات المحاسبية على تفضيل استخدام “الصيغة النقية” لدالة FILTER المستقلة كلما كان الغرض مجرد استرجاع بيانات مصفاة بسيطة، وعدم اللجوء إلى التراكيب الهجينة مع XLOOKUP إلا في الحالات التي تتطلب حركية متقدمة في انتقاء الأبعاد لا يمكن إنجازها بالوسائل المباشرة.

توضح المصفوفة التحليلية التالية المقارنة التقنية بين النماذج المختلفة لاسترجاع البيانات المتعددة لمساعدة مهندسي النماذج على اتخاذ القرار الأمثل:

النمط التركيبي التعقيد الحسابي مرونة انتقاء الأعمدة سهولة التدقيق والصيانة أفضل سيناريو للاستخدام
FILTER المباشرة منخفض جداً ثابتة حسب النطاق عالية جداً وواضحة استرجاع كافة السجلات لأعمدة محددة مسبقاً
FILTER + XLOOKUP الهجينة متوسط ديناميكية بالكامل متوسطة وتتطلب فهماً متقدماً لوحات التحكم التفاعلية والقوالب متغيرة الرؤوس
XLOOKUP المنفردة منخفض جداً أفقية فقط بسيطة للغاية المفاتيح الأساسية غير المكررة والتطابق الأحادي

6. تجميع كافة المطابقات في خلية واحدة باستخدام دالة TEXTJOIN

6.1 إدارة المساحات المكانية وحاجة التجميع الخلوي الموحد

في كثير من متطلبات إعداد التقارير التنفيذية ولوحات التحكم الرقمية (Executive Dashboards)، يمثل الانسكاب التلقائي للمصفوفات عبر عدة خلايا تحدياً تصميمياً يعوق تنظيم الصفحة؛ حيث يتطلب تصميم اللوحة تخصيص صف مفرد لكل كيان أو عميل لعرض ملخص مؤشراته، ولا يمكن السماح لعميل واحد باحتلال عشرين صفاً لانسكاب تفاصيل معاملاته لأن ذلك سيمزق الهيكل البصري للتقرير. في مثل هذه البيئات المكانية المقيدة، تبرز الحاجة الماسة إلى تقنية “التجميع الخلوي الموحد” (Cellular Aggregation)، والتي تهدف إلى جلب كافة السجلات المتطابقة وحشرها بنظام وتنسيق جمالي داخل خلية جدولية واحدة فقط.

تاريخياً، حاولت برمجيات الجداول الحسابية تلبية هذا المطلب عبر دوال الدمج النصي، بدءاً من دالة CONCATENATE القديمة التي كانت تفتقر للقدرة على التعامل مع النطاقات وتتطلب سرد كل خلية على حدة مع فواصلها يدوياً، مروراً بدالة CONCAT التي قبلت النطاقات المجمعة ولكنها افتقرت كلياً إلى معامل تحديد الفواصل التلقائية بين العناصر المدمجة وإهمال الفراغات. وجاء الحل الهندسي المتكامل مع تقديم دالة TEXTJOIN، التي صُممت برمجياً لدمج سلاسل النصوص من نطاقات ومصفوفات متعددة مع إمكانية إدراج فاصل مخصص وتخطي الخلايا الفارغة بمرونة فائقة.

تكتسب هذه التقنية أهمية استراتيجية بالغة عند إعداد تقارير الوضع التشغيلي؛ مثل رغبة الإدارة في رؤية اسم مدير المشروع في عمود، وفي العمود المجاور قائمة بكافة المشاريع النشطة المسندة إليه مفصولة بفواصل منقطة أو أسطر جديدة، أو رغبة قسم المخازن في إدراج كود الصنف وبجواره كافة أرقام الحاويات التي تحوي هذا الصنف داخل الخلية المجاورة. يتيح هذا الدمج تكثيف المعلومات وعرض علاقات الأطراف المتعددة في جداول مدمجة سهلة القراءة والطباعة، مما يوفر على الإدارة العليا عناء تصفح مئات الصفحات المتفرقة.

6.2 توليف الصيغة المتكاملة: TEXTJOIN مع FILTER و XLOOKUP

لتحقيق التجميع الخلوي لكافة المطابقات، يتم بناء معادلة متكاملة تستخدم دالة TEXTJOIN كغلاف خارجي يستقبل في وسيطه الخاص بالمحتوى مصفوفة البيانات المصفاة بواسطة دالة FILTER. تتألف دالة TEXTJOIN من المعاملات التالية:

=TEXTJOIN(delimiter, ignore_empty, text1, [text2], ...)

حيث يمثل delimiter الفاصل المخصص (مثل فاصلة عادية، أو شرطة، أو مسافة)، ويمثل ignore_empty قيمة منطقية (TRUE لتجاهل أي مدخلات فارغة)، بينما يستقبل text1 المصفوفة المطلوب دمجها.

إذا افترضنا وجود جدول يحتوي على أسماء الأقسام في النطاق A2:A100 وأسماء الموظفين التابعين لتلك الأقسام في النطاق B2:B100، ونريد استخراج كافة الموظفين التابعين لقسم “المحاسبة” ودمجهم في الخلية D2، فإن الصيغة التكاملية تُصاغ كالتالي:

=TEXTJOIN(" ، ", TRUE, FILTER(B2:B100, A2:A100 = "المحاسبة", "لا يوجد موظفون"))

تقوم دالة FILTER في هذه الصيغة بتحديد كافة أسماء الموظفين في قسم المحاسبة واستخراجهم كمصفوفة نصية في الذاكرة المؤقتة، وتلتقط دالة TEXTJOIN هذه المصفوفة فوراً وتقوم بدمج أسمائهم واحداً تلو الآخر مفصولين بفاصلة عربية ومسافة، لتخرج النتيجة النهائية في صورة نص منسق: “محمد أحمد ، سمير علي ، فاطمة حسن” داخل الخلية D2 بمفردها ودون إحداث أي انسكاب خارجي.

ويمكن رفع كفاءة هذه الصيغة بدمج XLOOKUP عند الرغبة في استدعاء قيمة البحث نفسها ديناميكياً من جدول رئيسي آخر أو تطبيق شروط استعلام معقدة تعتمد على معايير متقاطعة. كما يمكن استخدام الدوال الشرطية المتعددة داخل وسيط التضمين لدالة FILTER (عبر مشغلات الضرب والجمع المنطقي) لجلب القيم التي تستوفي أكثر من معيار ودمجها نصياً في خطوة واحدة، مما يمنح المحلل أداة جبارة لتلخيص قواعد البيانات المعقدة في عبارات موجزة ودقيقة.

6.3 تنسيق المخرجات النصية المجمعة وضبط قابلية القراءة

لا تتوقف الاحترافية في إدارة التجميع النصي عند مجرد سرد الكلمات بجوار بعضها البعض، بل تمتد إلى التنسيق الطباعي وضبط قابلية القراءة البصرية (Readability). من أفضل الممارسات في هذا المجال استخدام فاصل السطر البرمجي المرمز برقم الآسكي (ASCII) الخاص به، وذلك عبر إدراج الدالة CHAR(10) لنظام ويندوز أو CHAR(13) لنظام ماك كفاصل نصي داخل دالة TEXTJOIN. تصاغ المعادلة لإدراج كل تطابق في سطر جديد ومستقل داخل الخلية ذاتها على النحو التالي:

=TEXTJOIN(CHAR(10), TRUE, FILTER(B2:B100, A2:A100 = D2, "لا توجد سجلات"))

ولكي يظهر هذا التنسيق بنجاح، يشترط تفعيل خاصية “التفاف النص” (Wrap Text) على الخلية الهدف من شريط الأدوات الرئيسي لإكسل؛ وبذلك يتحول محتوى الخلية الواحدة إلى قائمة نقطية منظمة عمودياً تتسع وتضيق بتغير حجم الصف، مما يمنح التقرير مظهراً فائق الاحترافية.

بالإضافة إلى ذلك، يمكن دمج دالة SORT لإعادة ترتيب المطابقات المسترجعة أبجدياً أو رقمياً قبل دمجها، مما يسهل على القارئ العثور على الأسماء المطلوبة بسرعة. تصبح المعادلة المتقدمة:

=TEXTJOIN(" | ", TRUE, SORT(FILTER(B2:B100, A2:A100 = D2, "لا يوجد")))

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

7. تقنية أعمدة المساعدة المُرقمة لتمكين XLOOKUP من جلب كافة التكرارات

7.1 هندسة عمود المساعدة باستخدام دالة COUNTIF التراكمية

في بيئات الأعمال التي تفرض استخدام دالة XLOOKUP دون سواها، أو في الحالات التي تتطلب دعماً استثنائياً للتوافقية مع منصات لا تدعم دوال الانسكاب التلقائي مثل FILTER، يتم اللجوء إلى حل هندسي ذكي يُعرف باسم “تقنية عمود المساعدة المُرقم” (Numbered Helper Column). تقوم الفلسفة الرياضية لهذه التقنية على تحويل القيم المتكررة إلى مفاتيح فريدة مصطنعة غير قابلة للتكرار، مما يسمح لدالة XLOOKUP بتطبيق خوارزميتها المعتادة للبحث الأحادي ولكن مع استهداف كل تكرار بصورة مستقلة وموجهة.

تتحقق هذه الهندسة من خلال دمج القيمة النصية الأصلية برقم تسلسلي تراكمي يمثل ترتيب ظهور هذا السجل بين نظرائه المتطابقين. ولتوليد هذا الترقيم التراكمي، نستخدم دالة COUNTIF بالاعتماد على أسلوب “النطاق شبه الثابت أو المتمدد” (Expanding Range). إذا كانت أسماء العملاء تقع في العمود B بدءاً من الخلية B2، نقوم بإنشاء عمود مساعدة في العمود A، ونكتب في الخلية A2 الصيغة التالية ثم نسحبها للأسفل:

=B2 & "_" & COUNTIF($B$2:B2, B2)

يعتمد سحر هذه الصيغة على تثبيت الحد الأعلى للنطاق $B$2 كمرجع مطلق وترك الحد الأدنى B2 كمرجع نسبي. فعندما تكون المعادلة في الخلية A2، فإنها تعد تكرار الاسم في النطاق B2:B2 فقط، فتعطي الرقم 1 ليصبح المفتاح مثلاً “أحمد_1”. وعندما ننسخ الصيغة إلى الخلية A10 التي يظهر فيها اسم “أحمد” للمرة الثانية، يتوسع النطاق تلقائياً ليصبح $B$2:B10، وحينها ستجد الدالة أن الاسم ظهر مرتين حتى هذا الصف، فتعطي المفتاح التركيبي “أحمد_2”. وبذلك، يتحول كل تكرار لاسم الموظف أو العميل إلى معرف مستقل فريد يمكن استهدافه مباشرة بواسطة معادلات البحث.

7.2 بناء شبكة استعلام XLOOKUP متعددة الصفوف بالاعتماد على الترقيم

بمجرد إنشاء عمود المساعدة التراكمي بنجاح، يمكن بناء شبكة استعلام مرنة قادرة على جلب كافة السجلات المتطابقة واحداً تلو الآخر عبر صفوف متتالية. لبناء هذه الشبكة، نقوم بتصميم جدول النتائج بحيث يحتوي على عمود ترقيم تسلسلي يدوي أو مولد تلقائياً بالأرقام (1، 2، 3، 4، …)، ولنفرض أن هذه الأرقام التسلسلية تقع في النطاق E2:E10، وأن اسم العميل المطلوب استرجاع كافة سجلاته مكتوب في الخلية F1.

نقوم الآن بصياغة معادلة XLOOKUP في الخلية F2 مستهدفين دمج اسم العميل مع الرقم التسلسلي المقابل في الخلية E2 لإنشاء قيمة بحث تطابق المفاتيح المصطنعة في عمود المساعدة:

=XLOOKUP($F$1 & "_" & E2, $A$2:$A$100, $C$2:$C$100, "", 0)

في هذا التركيب، ستبحث الصيغة في الصف الأول عن المفتاح “أحمد_1” داخل عمود المساعدة A2:A100، وتسترجع القيمة المناظرة له من عمود المبالغ C2:C100. وعند سحب الصيغة إلى الأسفل إلى الخلية F3، ستتحول قيمة البحث ذاتياً إلى “أحمد_2″، فتبحث عنها XLOOKUP وتعيد الحركة المالية الثانية للعميل نفسه، وهكذا دواليك في كل صف يتم الانتقال إليه.

تتجلى قوة دالة XLOOKUP هنا في وسيطها الرابع if_not_found، حيث قمنا بوضع علامتي اقتباس فارغتين ""؛ فعندما تنتهي الحركات الفعلية للعميل “أحمد” (ولنفرض أنها 3 حركات فقط)، ستصل الصيغة في الصف الرابع إلى البحث عن “أحمد_4” الذي ليس له وجود في عمود المساعدة. وبدلاً من إظهار خطأ #N/A المزعج، ستُرجع الدالة خلية فارغة تماماً وتبقى نظيفة، مما يمنح جدول الاستعلام مظهراً احترافياً يستوعب تباين أعداد النتائج بين عميل وآخر بكل انسيابية.

7.3 التقييم الفني لأسلوب أعمدة المساعدة

يمثل أسلوب أعمدة المساعدة المُرقمة حلاً هندسياً يتمتع بمزايا جوهرية وعيوب تقنية واضحة، ويجب على مهندس البيانات الموازنة بينهما بدقة قبل اعتماده في النماذج التشغيلية. من أبرز مزايا هذا الأسلوب هو تحقيقه للتوافقية الشاملة؛ فهو يعمل بكفاءة عبر إصدارات إكسل المختلفة ولا يشترط توفر محرك مصفوفات الانسكاب الديناميكي، مما يجعله آمناً تماماً عند مشاركة المصنفات عبر شبكات العمل المحلية التي تستخدم إصدارات متباينة، أو عند تصدير البيانات إلى تطبيقات أخرى لا تدعم صيغ الانسكاب.

في المقابل، تكمن العيوب التقنية في زيادة التعقيد الهيكلي للمصنف؛ فإضافة أعمدة مساعدة تزيد من حجم الملف وتستهلك مساحة إضافية من ورقة العمل قد تربك المستخدمين النهائيين في حال لم يتم إخفاؤها بعناية. علاوة على ذلك، يمثل استخدام دالة COUNTIF بنطاق متمدد $B$2:B2 عبئاً حسابياً هائلاً من حيث استهلاك موارد المعالج في قواعد البيانات الكبيرة؛ نظراً لأن الدالة تُجبر على إعادة فحص النطاق المتراكم عند كل صف، مما يؤدي إلى تعقيد زمني من الرتبة التربيعية (O(N²))، وهو ما يسبب تجمد شاشة إكسل وبطءاً شديداً عند تجاوز البيانات عشرات الآلاف من الصفوف.

وبناءً على هذه المعطيات، يُنصح بتطبيق نمط أعمدة المساعدة المُرقمة حصرياً في النماذج محدودة ومتوسطة الحجم التي لا تتجاوز بضعة آلاف من الصفوف، وفي الحالات التي تكون فيها التوافقية العكسية مع الإصدارات القديمة للمصنفات شرطاً مؤسسياً صارماً. أما في قواعد البيانات الضخمة والنماذج السحابية الحديثة، فإن التوجه المعياري يقتضي تجنب هذا النمط كلياً والاعتماد المباشر على دوال التصفية المصفوفية الحديثة لتحقيق السرعة والكفاءة وخفة الوزن الهيكلي للمصنف.

8. معالجة الشروط المتعددة والتطابقات المتقاطعة (Multi-Criteria Matching)

8.1 التطابق المنطقي المتعدد باستخدام جبر المصفوفات المنطقية

في التطبيقات الواقعية، نادراً ما تقتصر متطلبات الاستعلام على مطابقة معيار فردي بسيط؛ ففي أغلب السيناريوهات المالية والإدارية، يُطلب استرجاع سجلات تتقاطع في عدة متغيرات في آن واحد، مثل استخراج كافة المعاملات الخاصة بعميل معين، والتي تمت في فرع محدد، وتجاوزت قيمتها حداً ائتمانياً معلوماً، ووقعت خلال ربع سنوي بعينه. لمعالجة هذه الشروط المتقاطعة، يعتمد مهندسو إكسل على تقنية متقدمة تُعرف باسم “جبر المصفوفات المنطقية” (Boolean Matrix Algebra).

يقوم هذا الجبر على محاكاة الدوال المنطقية التقليدية باستخدام مشغلات الحساب الرياضي الأساسية؛ حيث يُستخدم مشغل الضرب (*) لمحاكاة دالة المعيار المشترك (AND)، بينما يُستخدم مشغل الجمع (+) لمحاكاة دالة المعيار البديل (OR). ترجع الفلسفة الرياضية خلف ذلك إلى أن محرك إكسل يتعامل مع القيم المنطقية الصائبة TRUE كرقم (1)، ومع القيم الخاطئة FALSE كرقم (0). فعند ضرب مصفوفتين منطقيتين:

(A2:A100 = "الرياض") * (B2:B100 = "أجهزة إلكترونية")

فإن النتيجة لن تكون 1 (TRUE) إلا إذا تحقق الشرطان معاً في نفس الصف (1 * 1 = 1)، بينما إذا اختل أحدهما ستكون النتيجة حتماً صفراً (1 * 0 = 0 أو 0 * 1 = 0)، مما يحقق شرط المعيار المشترك AND بدقة متناهية ودون قيود الدوال التقليدية التي لا تدعم المصفوفات المنسكبة.

وعلى العكس من ذلك، عند استخدام مشغل الجمع (+):

(A2:A100 = "الرياض") + (A2:A100 = "جدة")

تكون النتيجة 1 أو أكثر بمجرد تحقق أي من الشرطين في الصف، مما يحاكي دالة المعيار البديل OR ويسمح بدمج سجلات متعددة الفروع أو متعددة التصنيفات ضمن استعلام استرجاع واحد وشامل، وهو ما يشكل الأساس النظري لمعالجة الاستعلامات الشرطية المركبة في بيئات البيانات الضخمة.

8.2 تنفيذ الاستعلام الشرطي المتعدد بالصيغة المزدوجة

لتطبيق هذا الجبر المنطقي عملياً لإرجاع كافة المطابقات المستوفية لعدة شروط، يتم تضمين عمليات الضرب المنطقي مباشرة داخل وسيط التضمين include التابع لدالة FILTER. إذا أردنا استخراج سجلات المبيعات من النطاق C2:C100 بشرط أن يكون اسم المندوب “خالد” في العمود A واسم المدينة “الدمام” في العمود B، فإن صيغة التصفية الشاملة متعددة المعايير تتخذ الشكل التالي:

=FILTER(C2:C100, (A2:A100 = "خالد") * (B2:B100 = "الدمام"), "لا توجد نتائج مطابقة")

تتألق هذه الصيغة في سكب كافة العمليات التي حققها خالد في الدمام تلقائياً عبر الخلايا السفلية دون أي نقص.

في المقابل، يمكن لدالة XLOOKUP أيضاً استخدام هذا المنطق المنطقي المتعدد عبر صياغة شهيرة تُعرف بـ “صيغة التطابق الثنائي لـ XLOOKUP”، حيث يتم البحث عن الرقم 1 داخل حاصل ضرب الشروط المنطقية:

=XLOOKUP(1, (A2:A100 = "خالد") * (B2:B100 = "الدمام"), C2:C100, "غير موجود", 0)

وهنا يبرز الفارق الحاسم الذي يجب على كل محلل إدراكه بوضوح؛ فصيغة XLOOKUP هذه، ورغم قدرتها الفائقة على معالجة المعايير المتقاطعة، فإنها ستتوقف كعادتها فور العثور على أول صف يُنتج حاصل ضربه الرقم 1، وتُرجع قيمة بيع واحدة فقط لخالد في الدمام. بينما تقوم صيغة FILTER بفحص المتجه بالكامل وإرجاع كافة الصفوف التي أنتجت الرقم 1، مما يؤكد أن دمج الشروط المتعددة لا يغير من السلوك الجوهري لكلتا الدالتين: الأولى تظل استعلاماً أحادياً، بينما تظل الثانية أداة استرجاع وتصفية مصفوفية شاملة لكافة التطابقات.

8.3 فرز وتصفية النتائج المسترجعة متعددة المعايير

بعد نجاح استرجاع كافة المطابقات المتقاطعة، تصبح المرحلة التحليلية التالية هي تنظيم وهيكلة تلك النتائج لتسهيل قراءتها واستخلاص المؤشرات منها. لا يكفي في بيئات الأعمال عرض مصفوفة بيانات عشوائية الترتيب، بل يجب التحكم في تسلسلها الزمني أو المالي. يتحقق ذلك بتغليف دالة FILTER بدالة SORT، والتي تتيح فرز النتائج المسترجعة تصاعدياً أو تنازلياً وفق مؤشر عمود محدد.

لنفترض أننا استرجعنا حركات العميل المتقاطعة ونريد ترتيب النتائج تنازلياً حسب قيمة المعاملة المالية الموجودة في العمود الثالث من مصفوفة النتائج؛ تصاغ المعادلة المنظمة كالتالي:

=SORT(FILTER(A2:D100, (B2:B100 = "معتمد") * (C2:C100 > 5000), "لا توجد حركات"), 3, -1)

يقوم المعامل الثاني (3) بتوجيه الفرز نحو العمود الثالث، بينما يحدد المعامل الثالث (-1) الترتيب التنازلي من الأكبر إلى الأصغر، مما يضع أهم العمليات المالية في مقدمة التقرير فور انسكاب البيانات.

علاوة على ذلك، قد تحتوي النتائج المصفاة على تكرارات إضافية غير مرغوب فيها داخل أحد الحقول (مثل تكرار أسماء المنتجات المشتراة من قبل العميل)، وللتخلص من هذه التكرارات وعرض قائمة فريدة لكافة الأصناف المتطابقة مع الشروط، نقوم بدمج دالة UNIQUE ضمن السلسلة البرمجية:

=UNIQUE(SORT(FILTER(D2:D100, (A2:A100 = "المنطقة الغربية") * (B2:B100 = "ممتاز"), "لا توجد سجلات")))

توضح هذه البنية المتسلسلة القوة الاستثنائية التي يتيحها تكامل دوال المصفوفات الديناميكية المعاصرة؛ حيث يتم في خطوة واحدة تصفية السجلات المتعددة، وترتيبها تصاعدياً، وتطهيرها من التكرارات غير اللازمة، مما يمنح متخذ القرار تقريراً تنفيذياً نقياً ومكثفاً يعكس الواقع التشغيلي بأعلى معايير الدقة.

9. الحلول الكلاسيكية المقارنة للنسخ القديمة: INDEX و MATCH و SMALL

9.1 تشريح صيغة المصفوفة الكلاسيكية لاسترجاع كافة المطابقات

قبل ظهور دالتي XLOOKUP و FILTER ومحرك الانسكاب الديناميكي، كان استرجاع كافة المطابقات في إكسل يمثل التحدي الأكبر لخبراء النمذجة المتقدمة. كان الحل المعياري التاريخي يعتمد على صياغة مصفوفية معقدة للغاية تدمج دوال INDEX و MATCH و SMALL و ROW، وكان تطبيقها يتطلب إدخال الصيغة بالضغط الإلزامي على Ctrl+Shift+Enter لتظهر محاطة بالأقواس المعقوفة {}. لفهم التطور التقني، يتعين تشريح البنية الخوارزمية لهذه الصيغة الكلاسيكية العريقة.

إذا كانت لدينا بيانات العملاء في النطاق A2:B50 ونريد استرجاع كافة المعاملات للعميل المكتوب في الخلية D2، كانت الصيغة الكلاسيكية في الخلية E2 تُكتب على النحو التالي:

{=IFERROR(INDEX($B$2:$B$50, SMALL(IF($A$2:$A$50 = $D$2, ROW($A$2:$A$50) - ROW($A$2) + 1), ROWS($E$2:E2))), "")}

تعمل هذه الصيغة عبر طبقات متعددة من المعالجة الرياضية؛ حيث تقوم دالة IF الداخلية باختبار شرط التساوي، فإذا تحقق الشرط، تُرجع رقم الصف النسبي عبر المعادلة ROW($A$2:$A$50) - ROW($A$2) + 1، وإذا لم يتحقق، تُرجع القيمة المنطقية FALSE. ينتج عن ذلك في الذاكرة مصفوفة أرقام صفوف تتخللها قيم FALSE (مثلاً: {1; FALSE; 3; FALSE; 5…}).

تستلم دالة SMALL هذه المصفوفة، ويقوم المعامل ROWS($E$2:E2) بدور العداد الديناميكي؛ فعندما تكون الخلية في الصف الأول، يعيد العداد الرقم 1 فتستخرج SMALL أصغر رقم صف (وهو 1). وعند نسخ الصيغة يدوياً إلى الخلية السفلية E3، يتسع العداد ليصبح ROWS($E$2:E3) معيداً الرقم 2، فتستخرج SMALL ثاني أصغر رقم صف (وهو 3)، متجاهلة تماماً قيم FALSE. بعد ذلك، تتغذى دالة INDEX بهذه الأرقام التتابعية للصفوف لتجلب القيمة المناظرة لها من العمود B. وأخيراً، عندما تنتهي السجلات المطابقة وتبدأ دالة SMALL في إرجاع خطأ #NUM!، تتدخل دالة IFERROR الخارجية لتحويل الخطأ إلى خلية فارغة ""، مما يضمن نظافة المظهر العام للتقرير.

9.2 استخدام دالة AGGREGATE كبديل متقدم بدون ضغط Ctrl+Shift+Enter

مع إطلاق إكسل 2010، قدمت مايكروسوفت دالة AGGREGATE كترقية نوعية خففت من وطأة تعقيد صيغ المصفوفات الثلاثية؛ حيث تميزت بقدرتها الفطرية على معالجة العمليات المصفوفية وتجاهل الأخطاء الحسابية تلقائياً دون الحاجة إلى تثبيت المعادلة عبر الضغط على Ctrl+Shift+Enter. وفرت هذه الدالة حلاً كلاسيكياً متقدماً لاسترجاع كافة المطابقات استمر لسنوات كمعيار ذهبي للنماذج المؤسسية المتوافقة.

تعتمد تركيبة استرجاع المطابقات باستخدام AGGREGATE على استخدام الوظيفة رقم 15 المخصصة لعمل دالة (SMALL)، واختيار الخيار رقم 6 المخصص لـ (تجاهل قيم الخطأ). تصاغ المعادلة للبحث عن سجلات العميل في الخلية D2 كالتالي:

=IFERROR(INDEX($B$2:$B$50, AGGREGATE(15, 6, (ROW($A$2:$A$50) - ROW($A$2) + 1) / ($A$2:$A$50 = $D$2), ROWS($E$2:E2))), "")

يكمن الابتكار الرياضي في هذه الصيغة في الجزء / ($A$2:$A$50 = $D$2)؛ فعندما يتحقق الشرط، تكون النتيجة TRUE أي (1)، وتقسيم رقم الصف على 1 يعطي رقم الصف ذاته. أما عندما يختل الشرط، تكون النتيجة FALSE أي (0)، وتنتج عن عملية القسمة على صفر رسالة الخطأ الرياضي الشهيرة #DIV/0!.

وهنا يتدخل خيار التجاهل (الخيار 6) في دالة AGGREGATE؛ إذ يتجاوز تلقائياً كافة أخطاء القسمة على صفر، وتبقى في المصفوفة أرقام الصفوف الصالحة فقط. وتتولى الوظيفة 15 ترتيب تلك الصفوف واستدعاء أصغرها بالتتابع مع سحب الصيغة للأسفل عبر العداد ROWS($E$2:E2). مثل هذا الحل قفزة هائلة في ثبات الأداء الحسابي وموثوقية النماذج مقارنة بصيغ SMALL التقليدية، حيث ألغى مخاطر نسيان المستخدم للضغط على المفاتيح الثلاثية، ولكنه ظل حلماً معقداً يتطلب فهماً رياضياً عميقاً يصعب على الغالبية العظمى من محللي الأعمال العاديين.

9.3 مقارنة معيارية شاملة بين الحلول القديمة ومقاربة XLOOKUP/FILTER

توضح المقارنة التحليلية بين الحلول الكلاسيكية القديمة والمقاربات المعاصرة حجم الثورة التقنية التي شهدتها بيئة إكسل. فمن حيث “سهولة الصيانة وفهم الكود الرياضي”، تمثل الصيغ الكلاسيكية (INDEX/MATCH/SMALL/AGGREGATE) كابوساً برمجياً للمراجعين والمدققين الماليين؛ إذ يتطلب فك رموز المعادلة تتبعاً معقداً لمصفوفات منطقية متداخلة وعمليات قسمة افتراضية، في حين تتميز مقاربة FILTER أو التوليف مع XLOOKUP ببنية نحوية مباشرة ومقروءة باللغة الطبيعية تعكس المعنى التجاري للعملية الاستعلامية بوضوح تام.

ومن منظور “سرعة المعالجة الحاسوبية وحجم الحمل المولد”، أثبتت الاختبارات المعيارية على قواعد البيانات الضخمة (التي تتجاوز 100,000 صف) أن الصيغ الكلاسيكية تتسبب في استهلاك جنوني لموارد المعالج وبطء ملحوظ في حساب المصنف؛ نظراً لأن كل خلية في عمود النتائج تضطر لإعادة تقييم مصفوفة الشروط بالكامل بصورة متكررة ومستقلة. في المقابل، تُجري دالة FILTER الحساب مرة واحدة على مستوى الذاكرة المركزية وتسكب كافة النتائج في أجزاء من الثانية، مما يحقق خفضاً في زمن المعالجة بنسب تتجاوز في كثير من الأحيان 85% مقارنة بالحلول القديمة.

تضع هذه الفروق الجوهرية مبررات قاطعة أمام المنظمات والمؤسسات المالية لتبني خطط ترقية شاملة نحو بيئات الحوسبة السحابية (Microsoft 365)؛ فالاستمرار في استخدام النماذج المحاسبية القديمة المعتمدة على صيغ المصفوفات الكلاسيكية لا يمثل فقط هدراً للوقت والموارد، بل يرفع من احتمالات الخطأ البشري أثناء تعديل وصيانة المعادلات، ويحرم المؤسسة من بناء لوحات تحكم ديناميكية تفاعلية ترتكز على القوة الخارقة لمصفوفات الانسكاب المعاصرة.

10. معالجة الأخطاء والتحقق من صحة المخرجات عند تعدد النتائج

10.1 التعامل مع حالات انعدام التطابق والشاشات الفارغة

من الركائز الأساسية في بناء النماذج المالية والتحليلية الاحترافية هي هندسة الحماية الوقائية ضد الأخطاء البرمجية وحالات انعدام التطابق. فعند بناء معادلة لاسترجاع كافة الحركات لعميل جديد لم يُسجل له أي نشاط في قاعدة البيانات بعد، سيؤدي الغياب التام للمطابقات إلى إطلاق رسائل الخطأ الافتراضية؛ حيث تُطلق دالة XLOOKUP المنفردة خطأ عدم التوافر الشهير #N/A، بينما تُطلق دالة FILTER خطأ الحساب الرياضي الفارغ #CALC!، وهو ما يعطي انطباعاً بوجود خلل برمجي ويفسد المظهر الجمالي للتقارير التنفيذية.

توفر كلتا الدالتين وسائط مدمجة لمعالجة هذا السيناريو بأناقة فائقة؛ ففي دالة XLOOKUP يُستخدم المعامل الرابع if_not_found، وفي دالة FILTER يُستخدم المعامل الثالث if_empty. يجب على مهندس البيانات استغلال هذه الوسائط لتخصيص رسائل نصية إيضاحية دقيقة تصف حالة السجل بدلاً من ترك رسائل مبهمة؛ فبدلاً من ترك الخلية تطلق خطأ #CALC!، يُفضل كتابة نصوص توجيهية مثل: "لا توجد حركات مسجلة لهذا الحساب" أو "العميل غير مدرج في قاعدة البيانات".

علاوة على ذلك، في النماذج المؤتمتة التي تعتمد على تغذية دوال أخرى بنتائج الاستعلام، يُنصح بإرجاع نص فارغ تماماً "" أو قيمة صفرية 0 لتفادي كسر المعادلات التابعة. كما يمكن استخدام دوال الفحص المنطقي مثل ISBLANK أو ISERROR داخل صيغ التحقق الشرطي لتأمين تدفق العمليات المحاسبية، والتأكد من أن انعدام السجلات لن يؤدي إلى توقف الأتمتة المبرمجة داخل المصنف.

10.2 تأمين تدفق الانسكاب ضد التداخل المكاني

تفرض الطبيعة الحركية لمصفوفات الانسكاب التلقائي تحديات هندسية تتعلق بالمساحة الجغرافية داخل ورقة العمل؛ فالبيانات المنسكبة ليست ثابتة الحجم، بل تتمدد وتتقلص لحظياً بحسب المعيار المختار وعدد السجلات المطابقة له في قاعدة البيانات. فإذا قام المستخدم باختيار عميل يمتلك 3 حركات، سيشغل الانسكاب 3 صفوف فقط، ولكن إذا قام بتبديل الاختيار إلى عميل يمتلك 40 حركة، فإن المصفوفة ستحاول التمدد فجأة لتشغل 40 صفاً، مما يجعلها عرضة للاصطدام بأي جداول سفلية أو مجاميع تالية، مؤديةً إلى ظهور خطأ #SPILL! وتعطل التقرير بالكامل.

لتأمين تدفق الانسكاب ضد هذا التداخل المكاني، تتبع منهجيات التصميم المؤسسي عدة قواعد ذهبية:

  • فصل طبقات العرض عن طبقات البيانات: تخصيص ورقة عمل مستقلة لعرض مصفوفات النتائج المنسكبة، مع إبقاء الجداول التلخيصية الأخرى في أوراق منفصلة، مما يتيح للنتائج التمدد لآلاف الصفوف دون عوائق.
  • ترتيب الجداول المتعددة أفقياً: وضع الجداول الاستعلامية المنسكبة بجوار بعضها البعض أفقياً (يفصل بينها عمودان فارغان على الأقل) بدلاً من رصها عمودياً فوق بعضها البعض، لتجنب حدوث أي حجب أو اصطدام رأسي بين نتائج التصفية المختلفة.
  • الحظر التام لدمج الخلايا: إلغاء دمج الخلايا في كافة أرجاء منطقة التقرير والاستعاضة عنها بخاصية “توسيط عبر التحديد” (Center Across Selection) التي تعطي نفس التأثير البصري دون كسر مسار انسكاب المصفوفات.
  • التنسيق الشرطي التلقائي: تطبيق قواعد التنسيق الشرطي المعتمدة على الدوال للتعرف على حدود النطاق المنسكب تلقائياً عبر المشغل #، وتلوين حدوده الخارجية ديناميكياً لتمييز منطقة المخرجات بصرياً عن باقي مساحة العمل.

10.3 التدقيق الرياضي ومطابقة المجاميع التراكمية

لا يكتمل نموذج استرجاع البيانات دون تأسيس منظومة رقابية داخلية للتدقيق الرياضي والمطابقة التراكمية (Reconciliation Controls). في البيئات المحاسبية، يجب التأكد بشكل قاطع من أن كافة السجلات المطابقة قد تم استرجاعها بالفعل، وأنه لم يحدث أي اقتطاع أو إسقاط غير مقصود لأي حركة مالية أثناء التصفية والاستعلام المرجعي.

تتمثل الخطوة الرقابية الأولى في التحقق من صحة عدد السجلات المسترجعة عبر مطابقة دالة ROWS للنطاق المنسكب مع دالة COUNTIF لقاعدة البيانات الأصلية. تصاغ معادلة التدقيق العددي في خلية مراقبة مخصصة كالتالي:

=IF(ROWS(G2#) = COUNTIF(A2:A1000, F2), "مطابق عددياً", "تنبيه: يوجد نقص في السجلات!")

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

تنتقل الرقابة بعد ذلك إلى المستوى المالي عبر مطابقة المجاميع النقدية؛ حيث يتم بناء خلية تدقيق توازن تقارن بين مجموع المبالغ المسترجعة في النطاق المنسكب ومجموع المبالغ المقيدة في دفتر اليومية الأصلي باستخدام دالة SUMIF:

=SUM(H2#) - SUMIF(A2:A1000, F2, C2:C1000)

يجب أن تكون نتيجة هذه المعادلة صفراً دائماً وأبداً. فإذا ظهر أي فرق مالي مهما كانت ضآلته، فإن النموذج يُطلق تنبيهاً باللون الأحمر الفاقع ينبه المراجع المالي إلى وجود خلل بنيوي، قد ينتج عن وجود مسافات نصية زائدة في بعض الخلايا، أو اختلافات في تنسيق البيانات تعوق محرك البحث عن رصد كافة المطابقات، مما يجعل التدقيق الآلي صمام الأمان الحقيقي لبيانات المؤسسة.

11. تطبيقات ونماذج عملية متقدمة في بيئات العمل الفعلية

11.1 نموذج إدارة وتتبع أداء المبيعات والمندوبين

تعتبر إدارة المبيعات من أكثر القطاعات اعتماداً على استرجاع السجلات المتعددة؛ حيث تحتاج إدارة المبيعات الإقليمية إلى تقييم حركات كل مندوب على حدة، ومتابعة الصفقات المبرمة وتواريخها وهوامش الربح المحققة في كل صفقة. في هذا النموذج العملي، نفترض وجود قاعدة بيانات للمبيعات تسمى SalesData تحتوي على الحقول: “اسم المندوب”، و”تاريخ الصفقة”، و”العميل”، و”القيمة”، و”الربح الصافي”.

لبناء لوحة متابعة تفاعلية، نقوم بإنشاء قائمة منسدلة (Data Validation Dropdown) في الخلية K2 تحتوي على قائمة فريدة بأسماء المناديب مستخرجة عبر الصيغة =UNIQUE(SalesData[المندوب]). وفي الخلية L5، نقوم بكتابة صيغة استرجاع كافة الصفقات التابعة للمندوب المختار عبر دالة FILTER مع ترتيبها زمنياً من الأحدث إلى الأقدم:

=SORT(FILTER(SalesData[[تاريخ الصفقة]:[الربح الصافي]], SalesData[المندوب] = K2, "لا توجد صفقات"), 1, -1)

بمجرد اختيار أي مندوب من القائمة المنسدلة، تنسكب تفاصيل كافة صفقاته فوراً في المساحة المخصصة، وتتحدث بطاقات الأداء العلوية التي تحسب “إجمالي المبيعات” و”متوسط قيمة الصفقة” و”إجمالي الأرباح” عبر دوال تشير مباشرة إلى النطاق المنسكب =SUM(INDEX(L5#, 0, 3))، مما يوفر لإدارة الشركة شاشة مراقبة لحظية تمكنها من تقييم كفاءة كل مندوب في ثوانٍ معدودة.

11.2 نموذج إدارة المخزون وتعدد المستودعات

في الشركات اللوجستية وإدارة سلاسل الإمداد، يشكل تتبع الصنف المخزني الواحد عبر مستودعات ومواقع جغرافية متعددة تحدياً مستمراً. قد يتواجد نفس كود المنتج (SKU) في خمسة مستودعات رئيسية وفرعية، وبكميات متفاوتة، وأرقام تشغيلات (Batch Numbers) وتواريخ صلاحية متباينة. يهدف النموذج إلى تمكين أمين المستودع من إدخال كود الصنف في خلية استعلام واحدة، لتظهر له فوراً كافة المواقع التفصيلية التي يتوفر فيها هذا الصنف وكمياته الحالية دون الحاجة للبحث في آلاف الصفوف.

لبناء هذا النموذج، يتم استخدام صيغة تصفية متعددة الأعمدة في جدول المخزون InventoryTable:

=FILTER(CHOOSECOLS(InventoryTable, 2, 4, 5, 6), InventoryTable[كود الصنف] = B2, "الصنف غير موجود في أي مستودع")

استخدمنا هنا دالة CHOOSECOLS الحديثة لتحديد الأعمدة الجوهرية فقط من جدول المخزون (اسم المستودع، رقم التشغيلة، تاريخ الانتهاء، الكمية المتاحة) لتنسكب أمام أمين المخزن بوضوح تام.

ولتعزيز الأمان اللوجستي، يتم تطبيق قواعد التنسيق الشرطي على عمود الكمية المنسكب؛ فإذا انخفضت الكمية في أي مستودع عن “حد إعادة الطلب” المحدد للصنف، يتم تمييز الصف بلون أحمر تحذيري ينبه إدارة المشتريات لضرورة إصدار أمر توريد جديد، أو نقل بضائع مناقلة من مستودع آخر تتوفر فيه كميات فائضة، مما يمنع انقطاع المخزون ويحسن كفاءة الدورة التشغيلية للمستودعات.

11.3 نموذج كشوف حسابات العملاء وحركات القيود المكررة

يمثل إعداد كشف حساب العميل التفصيلي (Detailed Customer Ledger) التطبيق المحاسبي الأهم والأكثر حساسية لعمليات إرجاع كافة التطابقات؛ فالمحاسب لا يكتفي بمعرفة الرصيد النهائي للعميل، بل يحتاج إلى تفريغ دفتر الأستاذ المساعد بالكامل ليرى كافة القيود المحاسبية الدائنة والمدينة وتواريخها وأرقام السندات والبيان التوضيحي لكل حركة على حدة خلال الفترة المالية المحددة.

في جدول دفتر اليومية العام GeneralLedger، تصاغ معادلة توليد كشف الحساب في خلية البداية A10 بناءً على رقم الحساب المختار في الخلية C2 والتاريخين المحددين للفترة في C3 و C4:

=FILTER(GeneralLedger[[التاريخ]:[الرصيد]], (GeneralLedger[رقم الحساب] = C2) * (GeneralLedger[التاريخ] >= C3) * (GeneralLedger[التاريخ] <= C4), "لا توجد حركات مالية للحساب خلال الفترة المحددة")

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

يكتمل النموذج بإضافة معادلة لحساب الرصيد التراكمي المتحرك (Running Balance) بجوار المصفوفة المنسكبة، مع دمج خانة تدقيق نهائية تقارن بين مجموع حركات كشف الحساب المنسكب ورصيد الحساب الظاهر في ميزان المراجعة الختامي. إن هذا التناغم بين التصفية الشرطية والمطابقة التراكمية يوفر للمؤسسة كشوف حسابات احترافية ومؤتمتة بالكامل وجاهزة للطباعة أو الإرسال بصيغة PDF للعملاء لمطابقة الأرصدة وإجراء المصادقات الدورية دون أي تدخل يدوي.

12. أفضل الممارسات المنهجية وتحسين الأداء الحسابي

12.1 تحسين كفاءة استهلاك الذاكرة في قواعد البيانات الضخمة

عند بناء نماذج مؤسسية تتعامل مع قواعد بيانات ضخمة تتجاوز مئات الآلاف من السجلات، يصبح تحسين استهلاك الذاكرة وسرعة المعالجة الحاسوبية واجباً هندسياً حتمياً. من أكثر الأخطاء الشائعة والمدمرة لأداء المصنفات هو اللجوء إلى الإشارة للأعمدة بأكملها داخل دوال الاستعلام والبحث، مثل كتابة A:A أو B:B. هذا الخطأ يجبر محرك إكسل على فحص ومسح أكثر من مليون و48 ألف صف لكل عمود، حتى لو كانت البيانات الفعلية لا تتجاوز بضع مئات من الصفوف، مما يتسبب في استنزاف الذاكرة العشوائية وحدوث بطء شديد أثناء عمليات إعادة الحساب.

تتمثل الممارسة الفضلى المطلقة في تحويل النطاقات العادية إلى جداول إكسل المنظمة (Excel Tables - ListObject) عبر الضغط على Ctrl+T؛ حيث تتميز الجداول المنظمة بتسميات هيكلية ذاتية التمدد والتقلص (Structured References) مثل Table1[العميل]. عند استخدام هذه الإشارات الهيكلية داخل دوال XLOOKUP أو FILTER، يتعامل محرك الحساب بدقة مع النطاق الفعلي المشغول بالبيانات فقط، مما يوفر ملايين الدورات الحسابية الضائعة ويضمن بقاء المصنف سريع الاستجابة وخفيف الحجم.

بالإضافة إلى ذلك، يجب الحد الصارم من استخدام الدوال المتطايرة (Volatile Functions) مثل OFFSET و INDIRECT و TODAY و NOW بالقرب من صيغ استرجاع المصفوفات المنسكبة؛ فالخاصية المتطايرة تجبر إكسل على إعادة حساب المعادلة والمصفوفة المنسكبة المرتبطة بها مع كل حركة أو نقرة داخل المصنف حتى لو لم تتغير البيانات الأساسية، مما يخلق عبئاً تشغيلياً هائلاً يمكن تفاديه كلياً بالاعتماد على المراجع الهيكلية الصريحة والدوال المصفوفية المستقرة.

12.2 هندسة الصيغ للتوثيق المؤسسي وقابلية الصيانة

في بيئات العمل التعاونية والمؤسسات الكبرى، لا تُقاس جودة الصيغة الحسابية بقوتها التقنية فقط، بل بمدى قابليتها للقراءة والصيانة والتدقيق بواسطة مراجعين ومحللين آخرين. تصبح الصيغ الطويلة والمتشابكة التي تدمج عدة دوال مصفوفية معقدة مصدراً للمخاطر التشغيلية إذا لم تكن موثقة ومنظمة وفق معايير هندسية منضبطة. وهنا تبرز دالة LET كواحدة من أعظم الأدوات المعمارية لتنظيم الكود الرياضي في إكسل.

تتيح دالة LET تعريف متغيرات وسيطة وإعطائها أسماء واضحة ومقروءة داخل الصيغة نفسها، ثم استخدام تلك المتغيرات في الحساب النهائي، مما يلغي تكرار استدعاء الحسابات الثقيلة مرتين ويوثق الخطوات التحليلية بوضوح. لنشاهد كيف تتحول صيغة تصفية معقدة ومتعددة الشروط إلى تحفة هندسية مقروءة باستخدام LET:

=LET(
  بيانات_المبيعات, SalesTable,
  المندوب_المستهدف, F2,
  شرط_المندوب, SalesTable[المندوب] = المندوب_المستهدف,
  شرط_القيمة, SalesTable[المبلغ] >= 10000,
  المصفوفة_المصفاة, FILTER(بيانات_المبيعات, شرط_المندوب * شرط_القيمة, "لا توجد نتائج"),
  SORT(المصفوفة_المصفاة, 3, -1)
)

في هذه الصيغة المنسقة، يستطيع أي مدقق مالي فهم المنطق التحليلي في ثوانٍ معدودة دون الحاجة لتفكيك الأقواس المتداخلة؛ فالأسماء أصبحت تعبر عن طبيعة البيانات، وتكرار تقييم الشروط تم تخزينه في الذاكرة لمرة واحدة فقط، مما يرفع كفاءة المعالجة ويقلل احتمالات الخطأ أثناء التطوير أو التعديل المستقبلي للنموذج.

12.3 خلاصة المنهجية وقواعد المفاضلة التقنية

لتتويج هذا المرجع العلمي والعملي، نضع بين يدي مهندسي البيانات ومطوري النماذج المالية "مصفوفة اتخاذ القرار التقني" للاستعلام في بيئة إكسل؛ لضبط الخيارات وتفادي أي ارتباك منهجي عند تصميم الحلول الحسابية:

  • متى نستخدم XLOOKUP المنفردة؟ تُستخدم حصراً عندما يكون المطلوب استرجاع قيمة وحيدة تقابل مفتاحاً فريداً غير مكرر (تطابق أحادي)، أو عند الرغبة المحددة في جلب السجل الأول فقط أو السجل الأخير فقط في مسار زمني معلوم.
  • متى نستخدم FILTER المباشرة؟ تُعتبر الخيار المعياري الإلزامي عندما يكون الهدف استرجاع كافة السجلات المطابقة لمعيار فردي أو معايير متعددة وسكبها عبر أبعاد الجدول رأسياً وأفقياً، شريطة توفر إصدار يدعم الانسكاب الديناميكي.
  • متى نلجأ إلى الدمج بين TEXTJOIN و FILTER؟ يُطبق عندما تفرض متطلبات التقرير التنفيذي ولوحات التحكم حشر وتلخيص كافة التطابقات المكررة داخل خلية واحدة مضغوطة دون السماح بانكساب البيانات.
  • متى نطبق تقنية أعمدة المساعدة المُرقمة؟ يُلجأ إليها كحل التفافي استثنائي في بيئات العمل المشتركة التي تعتمد على إصدارات مكتبية قديمة لا تدعم محرك الانسكاب الديناميكي، مع مراعاة قصرها على الجداول الصغيرة والمتوسطة.
  • متى نستخدم النماذج الهجينة (FILTER + XLOOKUP)؟ تُستخدم في لوحات القيادة التفاعلية المتقدمة التي تتطلب حركية مزدوجة لتصفية الصفوف شرطياً بالتزامن مع تغيير أعمدة النتائج المرتجعة بناءً على تفضيل المستخدم.

تفتح هذه المقاربات المنهجية آفاقاً واعدة أمام مستقبل معالجة البيانات؛ حيث تتجه برمجيات الجداول الحسابية نحو تحويل بيئات العمل المجدولة إلى ما يشبه قواعد البيانات العلائقية المرنة، مما يمكن المؤسسات من اتخاذ قراراتها بالاعتماد على رؤى شاملة وتطابقات كاملة لا تغفل أصغر التفاصيل.

الخاتمة

تناول هذا الدليل المتكامل الأبعاد الهندسية والنظرية والتطبيقية لإشكالية استرجاع كافة التطابقات في بيئة مايكروسوفت إكسل، مع التركيز على تحليل السلوك الافتراضي لدالة XLOOKUP وتفكيك محدداتها البنيوية التي تحصر مخرجاتها في التطابق الأول فقط. ومن خلال استعراض البنية الخوارزمية للدوال الحديثة، اتضح جلياً أن دالة FILTER تمثل البديل المعياري الأكثر كفاءة وسرعة لتنفيذ عمليات التصفية الشاملة واسترجاع كافة التكرارات عبر مصفوفات الانسكاب الديناميكي، سواء طُبقت منفردة أو ضمن صيغ هجينة تدمج مرونة XLOOKUP في التحكم بالأعمدة، أو من خلال التجميع الخلوي الموحد باستخدام TEXTJOIN.

كما بينت دراسات المقارنة المعيارية أن التخلي عن الصيغ المصفوفية الكلاسيكية القديمة لصالح أدوات المعالجة المصفوفية المعاصرة ليس مجرد رفاهية تقنية، بل هو ضرورة حتمية لحماية النماذج المالية من الأخطاء التراكمية ورفع كفاءة المعالجة الحسابية بنسب هائلة. إن تطبيق أفضل الممارسات في تحسين استهلاك الذاكرة، والاعتماد على الجداول المنظمة، وتوثيق الصيغ عبر دالة LET، ووضع ضوابط الرقابة والتدقيق الرياضي، يضمن للمؤسسات بناء منظومات تحليلية فائقة المتانة والدقة تواكب متطلبات بيئات الأعمال المعاصرة وترتقي بجودة القرار الاستثماري والإداري.

المراجع

اقتباس هذا المقال

looti, M. (2026, سبتمبر 5). إكسل: كيفية استخدام XLOOKUP لإرجاع كافة التطابقات. عرب سايكلوجي. https://arabpsychology.com/statistics/excel-how-to-use-xlookup-to-return-all-matches/
looti, Mohammed. “إكسل: كيفية استخدام XLOOKUP لإرجاع كافة التطابقات.” عرب سايكلوجي, 5 سبتمبر 2026, https://arabpsychology.com/statistics/excel-how-to-use-xlookup-to-return-all-matches/.
looti, Mohammed. “إكسل: كيفية استخدام XLOOKUP لإرجاع كافة التطابقات.” عرب سايكلوجي. سبتمبر 5, 2026. https://arabpsychology.com/statistics/excel-how-to-use-xlookup-to-return-all-matches/.