كيفية إنشاء دالة FILTER متداخلة في إكسيل

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

Mohammed looti أكاديمي وباحث متخصص في علم النفس
تاريخ النشر
تمت المراجعة العلمية · د. مروة عبد العظيم · 22 أكتوبر، 2026
مراجعة وتدقيق علمي معتمد تاريخ التدقيق: 22 أكتوبر، 2026
د. مروة عبد العظيم دكتوراه في علم النفس
عضو هيئة التدريس • جامعة كربلاء
معايير التدقيق والاعتماد السريري

يخضع هذا المحتوى لمعايير ضبط الجودة والتدقيق العلمي والأكاديمي الصارمة في شبكة علم النفس العربي، لضمان صحة المعلومات ودقتها السريرية ومطابقتها لأحدث الأدلة والبراهين الصادرة عن الجمعيات النفسية والطبية المعتمدة (APA / WHO).

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

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

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

1. المدخل المفاهيمي لمنظومة الدوال الديناميكية ودالة FILTER في بيئة إكسيل الحديثة

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

شهد برنامج مايكروسوفت إكسيل تحولاً جذرياً في بنيته المعمارية التحتية في شهر سبتمبر من عام 2018، حينما أعلن فريق هندسة إكسيل بشركة مايكروسوفت، بقيادة مدير البرامج جو مكديد (Joe McDaid) في مؤتمر مايكروسوفت إغنايت (Microsoft Ignite)، عن إطلاق محرك الحسابات الجديد القائم على المصفوفات الديناميكية (Dynamic Arrays). قبل هذا الإعلان التاريخي، كان التعامل مع مصفوفات البيانات يتطلب من المستخدم اللجوء إلى تقنية معقدة تُعرف بمصفوفات الطرق التقليدية (CSE Arrays)، والتي كانت تفرض الضغط المتزامن على مفاتيح لوحة المفاتيح Control + Shift + Enter لإعلام البرنامج بأن الصيغة الحسابية المكتوبة يجب أن تُعامل كمصفوفة. كان هذا النظام القديم يتسم بالجمود البالغ؛ حيث كان يتعين على المستخدم تحديد النطاق المستهدف للإخراج بدقة متناهية مسبقاً قبل كتابة الصيغة، وإذا ما تغير حجم البيانات بالزيادة أو النقصان، تعطل النموذج الحسابي وأظهر نتائج غير دقيقة أو أخطاء بنيوية صعبة التدارك.

مع تدشين محرك المصفوفات الديناميكية، الذي تم تعميمه بصورة رسمية (General Availability) لمشتركي منصة مايكروسوفت 365 (Microsoft 365) بين عامي 2019 و2020، ولاحقاً في الإصدارات الدائمة مثل إكسيل 2021 وإكسيل 2024، أُعيدت صياغة فلسفة الحوسبة في الجداول الإلكترونية من الأساس. أدخل هذا المحرك مفهوماً ثورياً يُعرف باسم “الانسكاب التلقائي للبيانات” (Spill Range). وبموجب هذا المفهوم، باتت أي صيغة حسابية تنتج مصفوفة من القيم قادرة على كتابة مخرجاتها بالكامل تلقائياً انطلاقاً من خلية مفردة واحدة تسمى خلية الأصل (Anchor Cell)، لتنسكب النتائج عمودياً وأفقياً عبر الخلايا المجاورة دون أي حاجة لتحديد النطاق مسبقاً أو استخدام تقنيات الضغط المركب على المفاتيح. رافق هذا التطور إدخال العامل الرمزي للانسكاب (#)، وهو معرّف ديناميكي يُلحق بعنوان خلية الأصل (مثل E2#)، مما يتيح للصيغ الأخرى في جدول البيانات الإشارة إلى كامل النطاق المنسكب وملاحقة تقلباته الحجمية بصورة آلية مطلقة.

إن الأهمية العلمية والعملية للتقييم التلقائي للأبعاد تكمن في تحرير المستخدم من التقدير المسبق لقياسات المصفوفات، وهو ما ينعكس بصورة مباشرة وجوهرية على كفاءة استهلاك الذاكرة العشوائية (RAM) وسرعة المعالجة الحاسوبية (CPU Processing Cycles) أثناء معالجة الجداول الكبيرة والمعقدة. في النظام القديم، كان المستخدم غالباً ما يفرط في تخصيص الخلايا لتفادي اقتطاع النتائج، مما يجبر محرك إكسيل على حجز مساحات واسعة غير مستغلة في الذاكرة الحية وتتبع مصفوفات شاسعة الحجم تحتوي على آلاف القيم الفارغة. أما المحرك الديناميكي الحديث، فإنه يقوم بإنشاء النطاق المنسكب بحجم رياضي مطابق تماماً لعدد العناصر المطابقة في الذاكرة اللحظية، وتفريغ الموارد الحاسوبية فور انتهاء التقييم، مما يحسن من استقرار البرمجية ويقلل زمن إعادة الحساب التكراري (Recalculation Latency) بصورة ملموسة تخدم عمليات اتخاذ القرارات في المؤسسات المعاصرة، وهو ما يتماشى مع مفاهيم تكامل الأنظمة الرقمية الحديثة التي ناقشها باحثون متخصصون في كفاءة بيئات العمل والبيانات (Gajdzik & Wolniak, 2022).

1.2 التعريف الوظيفي والرياضي لدالة التصفية FILTER

تُعرّف دالة التصفية FILTER إجرائياً ورياضياً بوصفها مؤثر إسقاط شرطي للمصفوفات (Conditional Projection Operator) ضمن نظرية المجموعات التطبيقية وجداول البيانات. تقوم الدالة باستقبال مصفوفة بيانات أولية محددة الأبعاد، وتطبيق دالة إسقاط منطقية تعزل جزءاً من عناصر تلك المصفوفة بناءً على استيفاء معايير محددة سلفاً، لتعيد في مخرجاتها مصفوفة فرعية تحافظ على الخصائص الهيكلية للبيانات الأصلية دون تعديل محتواها. من منظور برمجي، يمكن النظر إلى هذه الدالة باعتبارها موازياً ديناميكياً لعبارات الاستعلام الهيكلية (مثل تعليمة SELECT * FROM Table WHERE Condition في لغة SQL)، ولكنها تنفذ العملية الحسابية داخل الذاكرة اللحظية للمصنف بصورة حية وفورية تستجيب لأي تعديل في البيانات دون الحاجة لإعادة تشغيل استعلام منفصل.

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

يرتكز عمل معامل التضمين (include) على توليد ما يُعرف بالمصفوفة البولينية أو المنطقية (Boolean Array). عندما يتم توجيه الدالة لمقارنة عمود معين بقيمة رقمية أو نصية (على سبيل المثال: B2:B100 > 50)، يقوم محرك الحسابات في إكسيل بإجراء مقارنة متجهة عنصرية (Element-wise Evaluation) لكل خلية مفردة داخل النطاق المذكور، مما يسفر عن مصفوفة أحادية البعد تتألف حصراً من القيمتين المنطقيتين TRUE و FALSE. تعمل هذه المصفوفة كمرشح تمرير فيزيائي؛ حيث يسمح المحرك بمرور السجلات المقابلة للقيمة TRUE إلى مصفوفة الإخراج النهائية، بينما يقوم بحجب واقتطاع أي سجل يقابل القيمة FALSE، وهو ما يؤسس لنمط حسابي مرن ودقيق للغاية.

1.3 حدود الاستخدام الفردي لدالة FILTER التقليدية

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

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

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

2. التأصيل النظري للتداخل البرمجي للدوال (Nested Functions) في إكسيل

2.1 مفهوم التداخل الوظيفي وتدفق مخرجات الدوال التابعة

يقوم مفهوم التداخل الوظيفي (Functional Nesting) في بيئة الحوسبة وجداول البيانات على المبدأ الرياضي الكلاسيكي لتركيب الدوال (Function Composition)، والذي يُصاغ جبرياً بالصيغة f(g(x)). بموجب هذا المبدأ، يتم استخدام المخرجات النهائية أو الوسيطة لدالة معينة (الدالة الداخلية g) كمعامل إدخال مباشر لدالة أخرى (الدالة الخارجية f). هذا النموذج التدفقي يلغي الحاجة إلى تخزين الحالات الحسابية المؤقتة في خلايا مادية على ورقة العمل، مما يضمن معالجة متكاملة وسلسة للبيانات داخل ذاكرة الوصول العشوائي المخصصة لبرنامج إكسيل، ويرفع من مستوى أمان البيانات وتقليل تشويش النطاقات التقريرية بالحسابات الهامشية.

يخضع التداخل الوظيفي لقواعد صارمة فيما يخص ترتيب أسبقية التنفيذ الحسابي (Order of Execution). في محرك إكسيل، يبدأ مسار المعالجة دائماً من “الداخل إلى الخارج” (Inside-Out Evaluation). يقوم المحرك بفحص أعمق دالة متداخلة وتقييم كافة معاملاتها والعمليات المنطقية المرتبطة بها بالكامل حتى يصل إلى استخلاص مصفوفة النتائج الصافية؛ وفور اكتمال هذا الطور، يتم تسليم هذه المصفوفة المستحدثة كمعامل إدخال خام إلى الدالة الحاضنة التي تعلوها مباشرة في الترتيب الشجري للصيغة الحسابية. هذا التقييم الصارم والمنظم يضمن الحفاظ التام على سلامة النمط الهيكلي للمصفوفة الممررة بين المستويات المتداخلة، بما يمنع تشوه البيانات أو اختلال مؤشرات الفهارس أثناء الانتقال الحسابي بين المراحل.

إن تطبيق هذا المفهوم على المصفوفات الديناميكية يعزز من مفهوم “المعالجة غير المدمرة للبيانات” (Non-Destructive Data Processing). فبدلاً من تعديل الجدول الأصلي أو قص حقوله ميكانيكياً، يعمل التدفق المتداخل كمرشحات متتالية في أنبوب رقمي محكم؛ يمر التيار الأصلي للبيانات عبر المرشح الأول ليتم تنقيته أفقياً، ثم يتدفق الناتج المنقى مباشرة إلى المرشح الثاني ليعاد توجيهه واختزاله رأسياً، لتخرج في النهاية شريحة مدمجة ومكثفة من المعلومات تعكس الرؤية التحليلية المستهدفة دون المساس بأصل البيانات المخزنة.

2.2 مبررات اللجوء إلى تداخل دالة FILTER مع نفسها

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

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

أخيراً، يؤصل التداخل الوظيفي لدالة FILTER لثقافة الاستغناء الكامل عن البرمجيات الإجرائية المخصصة مثل ماكرو فيجوال بيسك (VBA Macros) في العمليات التحليلية القياسية. إن بناء تقارير إحصائية ولوحات تحكم رقمية (Dashboards) تفاعلية وقابلة للتوسع التلقائي عبر الصيغ الديناميكية الأصيلة يضمن بقاء المصنف آمناً وخالياً من الشيفرات الخبيثة التي تحجبها جدران الحماية للشركات، فضلاً عن ضمان عمل المصنف بكفاءة تامة عبر مختلف منصات إكسيل الحديثة، بما في ذلك إكسيل الويب (Excel for the Web) وإكسيل للأجهزة المحمولة، وهو ما يدعم التشاركية المؤسسية واتخاذ القرار الجماعي المستنير (Metcalf et al., 2019).

3. التشريح التركيبي والصيغة العامة لدالة FILTER المتداخلة

3.1 تفكيك الصيغة العامة: =FILTER(FILTER(…))

تتخذ الصيغة العامة لهندسة التصفية ثنائية الأبعاد في بيئة إكسيل النمط البنيوي القياسي التالي، والذي يمثل قالباً عالمياً صالحاً للتطبيق على كافة مصفوفات البيانات المستوية:

=FILTER(FILTER(array, condition), column_mask, [if_empty])

عند الشروع في التفكيك المنهجي لهذه الصيغة، نجد أنها تتألف من غلافين وظيفيين متمايزين يعملان بتناغم متسلسل. الغلاف الداخلي المتمثل في الدالة =FILTER(array, condition) يمثل “مرشح السجلات” (Records Filter). يستقبل هذا المستوى الداخلي كامل مصفوفة البيانات الأولية عبر المعامل array، ويخضع كل صف فيها للاختبار الحسابي المحدد في المعامل condition. وبناءً على ذلك، يتم استبعاد كافة الصفوف التي تفشل في تحقيق المعيار المحدد، لتولد الدالة الداخلية مصفوفة عابرة تمتلك عدداً أقل من الصفوف ولكنها تحتفظ بكامل عدد الأعمدة الأصلية لتلك الصفوف الناجحة.

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

3.2 دور ثابت المصفوفة الثنائية المنطقية {1,0,1}

يمثل ثابت المصفوفة (Array Constant) العمود الفقري لمعامل التوجيه الخارجي، ويتم تعريفه برمجياً في إكسيل من خلال حصر مجموعة من العناصر الرقمية أو النصية الصريحة داخل قوسين معقوفين من النوع المفتول { }. في سياق دالة FILTER المتداخلة، يُستخدم ثابت المصفوفة الثنائية كقناع تعتيم رقمي (Binary Mask)، حيث يُترجم المحرك الحسابي الداخلي الرقم (1) بوصفه قيمة الحقيقة المنطقية الصريحة (TRUE)، مما يعني إصدار أمر للمحرك بالإبقاء على العمود المقابل وعرضه في المخرجات، بينما يُترجم الرقم (0) بوصفه قيمة النفي المنطقي (FALSE)، مما يصدر أمراً حاسماً للمحرك بإسقاط العمود المقابل وحجبه نهائياً عن مصفوفة النتائج المنسكبة.

يخضع استخدام هذا الثابت لقاعدة صارمة لا تقبل الخطأ وهي “التطابق الإلزامي في الأبعاد” (Dimensional Conformity)؛ إذ يجب أن يكون عدد العناصر المفصولة داخل القوسين المعقوفين مطابقاً تماماً للعدد الإجمالي لأعمدة المصفوفة المتولدة من المستوى الأول. فإذا كانت المصفوفة الأصلية تتألف من ثلاثة أعمدة، فإن القناع {1, 0, 1} يعني: احتفظ بالعمود الأول (1)، واحجب العمود الثاني (0)، واحتفظ بالعمود الثالث (1). وإذا حدث أي خلل في عدد هذه العناصر الرقمية بالزيادة أو النقصان مقارنة بعدد الأعمدة الممرة، فإن مصفوفة الحساب تفقد اتساقها الرياضي وينهار التقييم الخارجي للدالة فوراً.

من الناحية الدلالية واللغوية في بناء الجداول الحسابية، تكتسب الفواصل المستخدمة داخل ثوابت المصفوفات وزناً معمارياً فائق الأهمية تبعاً للغة النظام وإعدادات الواجهة الإقليمية للمستخدم. في النسخ القياسية المعتمدة على الفاصلة الإنجليزية (US Syntax)، تُستخدم الفاصلة العادية (,) لتمثيل التنقل الأفقي بين الأعمدة داخل الصف الواحد، مما يجعل القناع {1, 0, 1} متجهاً صفياً أحادياً مسطحاً يلائم تماماً تصفية الأعمدة الرأسية. في المقابل، ترمز الفاصلة المنقوطة (;) داخل الثابت إلى التنقل الرأسي بين الصفوف (Row Separator)، مما يجعل صياغة {1; 0; 1} تولد متجهاً عمودياً لا يصلح لمعامل تصفية الأعمدة، بل يتسبب في حدوث خطأ كارثي في أبعاد المصفوفة. ينبغي للمحلل الحصيف إدراك هذه الفروق البنيوية الدقيقة لضمان عدم توقف النماذج عند نقلها بين البيئات التشغيلية الدولية المختلفة.

4. التحليل الإجرائي لعمل الدالة الداخلية (Inner FILTER)

4.1 معالجة نطاق الإدخال الخام وتطبيق المعيار الشرطي الأفقي

لفهم الآليات الحسابية الميكانيكية التي تدير الدالة الداخلية، لنفترض وجود قاعدة بيانات أولية مسجلة في ورقة العمل ضمن النطاق الهندسي A2:C11. يحتوي هذا النطاق الخام على ثلاثة أعمدة رئيسية تمثل بيانات أداء رياضية: عمود المعرف أو الاسم (A)، وعمود إجمالي القياسات الرقمية أو النقاط (B)، وعمود المتوسطات الفنية (C). تبدأ الدالة الداخلية عملها عبر استدعاء النطاق المصدري كاملاً دون تجزئة في معاملها الأول: =FILTER(A2:C11, …). في هذه اللحظة، يحتفظ محرك إكسيل بنسخة افتراضية من مصفوفة الأبعاد الأصلية (10 صفوف × 3 أعمدة) في الذاكرة قصيرة المدى، منتظراً تقييم المعيار الحسابي الأفقي.

في الخطوة الإجرائية الموالية، ينتقل المحرك فوراً لتقييم معامل التضمين الداخلي، والذي يصاغ على سبيل المثال بالصورة: B2:B11 > 20. يمثل هذا التعبير مقارنة منطقية موجهة رأسياً يتم تطبيقها على كل عنصر في العمود الثاني بصورة مستقلة. يقوم المحرك بفحص الخلية B2، فإذا وجد قيمتها العددية تفوق 20، يسجل القيمة المنطقية TRUE؛ ثم ينتقل إلى الخلية B3، فإذا وجد قيمتها أقل من أو تعادل 20، يسجل القيمة المنطقية FALSE، وتستمر هذه الدورة الحسابية بسرعة بالغة وصولاً إلى الخلية B11. ينتج عن هذا التقييم التكراري السريع متجه منطقي متعامد أحادي البعد يتألف من 10 عناصر منطقية مرتبة بدقة، يمثل البصمة الشرطية للنطاق المصدري كاملاً.

بمجرد اكتمال بناء المتجه المنطقي، تقوم خوارزمية الدالة الداخلية بإجراء عملية إسقاط تقاطعي متوازي (Parallel Cross-Projection)؛ حيث يتم ربط كل مؤشر صف في مصفوفة الإدخال A2:C11 بالقيمة المنطقية المقابلة له في المتجه البوليني. الصفوف التي تقابل القيمة FALSE يتم إسقاطها وعزلها كلياً من مسار المعالجة، بينما يتم اعتماد وترحيل الصفوف التي تقابل القيمة TRUE، مما يضمن أن السجلات التي تجاوزت عتبة المعيار الحسابي هي وحدها التي ستعبر بوابة المرشح الداخلي بنجاح ودقة مطلقة.

4.2 خصائص المصفوفة الناتجة العابرة (Intermediate Array)

تتمتع المصفوفة المستحدثة الناتجة عن تصفية المستوى الداخلي، والتي يُصطلح عليها أكاديمياً باسم “المصفوفة الناتجة العابرة” (Intermediate Virtual Array)، بمجموعة من الخصائص المورفولوجية والرياضية البالغة الأهمية. أولى هذه الخصائص هي احتفاظها الكامل والجامد بكافة الأعمدة الثلاثة الأصلية (A و B و C) للسجلات التي حققت المعيار المنطقي؛ إذ إن الدالة الداخلية لا تمتلك أي صلاحية إجرائية لحذف أي حقل رأسي طالما أن معامل الإدخال كان يضم النطاق A2:C11 كاملاً وطالما لم يُطبق أي قناع اختزال بعد.

الخاصية الثانية تتمثل في الانكماش الديناميكي للبعد الرأسي (Dynamic Row Reduction). فإذا كان عدد الصفوف في قاعدة البيانات الأصلية هو 10 صفوف، وكان عدد السجلات التي حققت الشرط (أكبر من 20 نقطة) هو 5 سجلات فقط، فإن المصفوفة العابرة تتشكل فوراً في الذاكرة الحية بأبعاد جديدة تماماً هي (5 صفوف × 3 أعمدة). يتم ضغط هذه المصفوفة متجاوزة الفراغات المكانية التي خلفتها السجلات المستبعدة، لتشكل كتلة بيانية متراصة ومستمرة جاهزة للتمرير الفوري إلى الطور الحسابي الموالي.

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

5. التحليل الإجرائي لعمل الدالة الخارجية (Outer FILTER)

5.1 إسقاط قناع التحديد (Masking) على الأعمدة الناتجة

بمجرد تسليم المصفوفة العابرة ذات الأبعاد (5 × 3) إلى الغلاف الحسابي الخارجي، تبدأ دالة FILTER الحاضنة مهمتها التخصصية في إعادة توجيه وتصفية البعد العرضي للبيانات. تستقبل الدالة الخارجية هذه المصفوفة التمهيدية في معاملها الأول، وتوجه تركيزها مباشرة إلى معاملها الثاني المتمثل في متجه الاختيار الثنائي الصريح، والذي نحدده في هذا السياق بالقناع: {1, 0, 1}. في هذه اللحظة، تتوقف الدالة الخارجية كلياً عن النظر إلى الصفوف الفردية أو تقييم شروط النقاط الرياضية، إذ تعتبر أن مهمة تصفية الصفوف قد أُنجزت بنجاح في المرحلة السابقة، وتكرس خوارزميتها لفرز الأعمدة الرأسية المتوفرة فقط.

تتم عملية الإسقاط عبر مطابقة مكانية متجهة لكل عنصر في ثابت القناع الثنائي مع العمود المناظر له في المصفوفة الوسيطة؛ حيث يتم وضع العنصر الأول من القناع وهو الرقم (1) في مواجهة العمود الأول (A – اسم الرياضي)، مما يرسل إشارة موافقة صريحة للمحرك لاعتماد هذا العمود ونقله لمرحلة التوليد النهائي. بعد ذلك، يوضع العنصر الثاني من القناع وهو الرقم (0) في مواجهة العمود الثاني (B – مجموع النقاط)، وبما أن الصفر يمثل في الجبر المنطقي قيمة FALSE، يقرر المحرك فوراً حجب هذا العمود وإسقاطه تماماً من الهيكل البياني، وكأنه لم يكن موجوداً في المصفوفة الأصلية. وأخيراً، يقابل العنصر الثالث (1) العمود الثالث (C – المعدل التهديفي)، فيتم إقراره وتثبيته في المخرجات.

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

5.2 توليد نطاق الانسكاب النهائي (Final Spill Array)

تتوج العملية الحسابية المتكاملة بتوليد ما يُعرف بنطاق الانسكاب النهائي (Final Spill Array). في هذه الذروة الإجرائية، تقوم الدالة الخارجية بضخ مصفوفة النتائج الصافية بأبعادها المستقرة رياضياً (5 صفوف × عمودين) انطلاقاً من خلية الاستقبال الأولى المحددة في ورقة العمل. يتم وضع بيانات أسماء الرياضيين في العمود الأول لنطاق الإخراج، وتوضع معدلاتهم التهديفية في العمود الثاني المجاور له مباشرة، مع استبعاد تام وتام لعمود النقاط الأصلي الذي استُخدم في الاختبار الشرطي، لتنسكب النتائج وتستقر بأناقة وبلا أي فواصل فارغة مشوهة للتصميم.

يتميز هذا النطاق النهائي بقدرته الفائقة على الاستجابة التفاعلية واللحظية لأي تحولات أو تعديلات تطرأ على مصفوفة الإدخال الأصلية A2:C11. فإذا قام المستخدم بتعديل نقاط رياضي معين في العمود B، بحيث انخفضت نقاطه دون حاجز الـ 20 نقطة، فإن محرك الحسابات يعيد تقييم الصيغة المتداخلة بالكامل في أجزاء من الألف من الثانية؛ فتنكمش الدالة الداخلية فوراً لتنتج 4 صفوف فقط، وتتكيف الدالة الخارجية مع هذا الانكماش لتقلص نطاق الانسكاب النهائي إلى (4 صفوف × عمودين) بصورة آنية، مما يمنح التطبيق طابع البرمجيات التفاعلية المتطورة.

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

6. تطبيق عملي خطوة بخطوة: تصفية بيانات أداء الرياضيين

6.1 توصيف بنية مجموعة البيانات الأولية للاعبي كرة السلة

لترسيخ المفاهيم النظرية وتجسيدها في سياق واقعي دقيق، نعتمد دراسة حالة تطبيقية تعتمد على تقييم بيانات الأداء البدني والفني للاعبي كرة السلة المحترفين. ترتبط دراسات الأداء الرياضي التنافسي عموماً بالتحليل الرقمي للوظائف الحركية ومعدلات الإنجاز السريع، وهي مجالات حيوية وثيقة الصلة بالتنظيم الحركي والقدرات التنفيذية التي ناقشتها الأبحاث الرياضية التحليلية (Koch & Krenn, 2021). لنفترض أن لدينا قاعدة بيانات أولية مسجلة في ورقة العمل تمتد من الخلية A2 إلى الخلية C11، وتتوزع بياناتها على النحو التالي:

  • العمود A (اسم اللاعب – Player Name): يحتوي على الأسماء الوصفية لعشرة لاعبين يمثلون عينة الدراسة (مثل: أحمد، بلال، تامر، جمال، حسام، خالد، رامي، سامي، شاكر، وطارق).
  • العمود B (مجموع النقاط – Total Points): يحتوي على الأرقام الصريحة للنقاط الإجمالية المسجلة خلال الموسم (قيم رقمية تتراوح إحصائياً بين 12 و 35 نقطة؛ على سبيل المثال: أحمد 25، بلال 14، تامر 28، جمال 18، حسام 31، خالد 19، رامي 22، سامي 15، شاكر 27، طارق 16).
  • العمود C (المعدل التهديفي – Scoring Average): يحتوي على قياس الكفاءة الرقمية لكل دقيقة لعب (قيم كسرية عشرية تمثل الأداء النسبي؛ مثل: 1.25، 0.70، 1.40، 0.90، 1.55، 0.95، 1.10، 0.75، 1.35، 0.80).

تتمثل الفرضية التطبيقية والهدف التحليلي للمشروع في استخلاص لوحة بيانات مقتضبة ونقية تعرض حصراً أسماء اللاعبين المتفوقين ومعدلاتهم التهديفية النسبية فقط، مع فرض شرط تأهيلي صارم يتمثل في تجاوز مجموع النقاط المسجلة لحاجز الـ 20 نقطة (Total Points > 20). ويشترط النموذج النهائي استبعاد عمود النقاط الخام (العمود B) من واجهة العرض؛ نظراً لكونه معياراً تصفوياً مرحلياً لا يُراد له أن يظهر في الجدول المنسكب الموجه للإدارة الفنية للنادي.

Excel nested FILTER function
Excel nested FILTER function

6.2 بناء الدالة تدريجياً في خلية الاستقبال (E2)

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

=FILTER(A2:C11, B2:B11>20)

بمجرد الضغط على مفتاح الإدخال Enter، يقوم محرك الحسابات بفحص النطاق وتوليد مصفوفة منسكبة ثلاثية الأعمدة تبدأ من الخلية E2 وحتى الخلية G6، تشمل 5 لاعبين فقط (أحمد، تامر، حسام، رامي، وشاكر) محتفظة بأسمائهم في العمود E، ونقاطهم في العمود F، ومعدلاتهم في العمود G. تتيح هذه الخطوة التمهيدية للمحلل التأكد البصري التام من أن المعيار الشرطي الأفقي B2:B11>20 يعمل بكفاءة مطلقة وأنه استبعد بدقة كافة اللاعبين الذين سجلوا 20 نقطة أو أقل.

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

=FILTER(FILTER(A2:C11, B2:B11>20), {1, 0, 1})

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

6.3 تحليل الأثر الديناميكي عند تحرير المدخلات

تتجلى القوة الهندسية لبيئة المصفوفات الديناميكية عند رصد ومراقبة السلوك التفاعلي للنموذج أثناء تعديل البيانات المصدرية الخام في النطاق A2:C11. لنفترض، على سبيل المثال، أن عملية تدقيق إحصائي لاحقة أظهرت أن اللاعب “جمال” (المسجل في الصف 5) قد أحرز في الواقع 24 نقطة بدلاً من 18 نقطة المدونة خطأً في الخلية B5. بمجرد قيام المستخدم بتعديل محتوى الخلية B5 إلى الرقم 24 والضغط على Enter، يستجيب محرك إكسيل بصورة فورية وغير خطية للتعديل.

في جزء ضئيل من الثانية، تعيد الدالة الداخلية تقييم الشرط B2:B11>20، فتتحول القيمة المنطقية للاعب جمال في المتجه البوليني من FALSE إلى TRUE. يتسبب ذلك في تمدد فوري للمصفوفة الوسيطة لتشمل 6 صفوف بدلاً من 5. يمر هذا التمدد مباشرة عبر قناع الدالة الخارجية {1, 0, 1}، فيتمدد نطاق الانسكاب في العمودين E و F تلقائياً نحو الأسفل بمقدار صف إضافي ليستقر عند الخلية F7، متضمناً اسم جمال ومعدله التهديفي في مكانهما المنطقي المتسق، ودون أن يطالب المحلل بكتابة أي حرف إضافي في الصيغة.

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

7. التعامل المتقدم مع الشروط المنطقية المعقدة في التصفية المتداخلة

7.1 دمج المعايير المتعددة باستخدام المعاملات البولينية (AND / OR)

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

إن الدوال المنطقية القياسية في إكسيل مثل AND() و OR() صُممت معمارياً بوصفها “دوال تجميعية قياسية” (Aggregating Scalar Functions)؛ بمعنى أنها تستقبل مجموعة من المصفوفات والقيم ولكنها تقوم باختزالها ودمجها بالكامل لتخرج في النهاية قيمة منطقية مفردة واحدة (Single Boolean Scalar: إما TRUE أو FALSE للجميع). وبما أن معامل include في دالة FILTER يتطلب حصراً متجهاً منطقياً متعدداً يطابق عدد الصفوف المفحوصة، فإن استخدام AND أو OR يقود إلى انهيار المعامل وإرجاع خطأ حسابي صريح. والحل الهندسي المعتمد رياضياً هو استخدام “الجبر البوليني المباشر” (Boolean Arithmetic) عبر مشغلات الضرب والجمع الحسابية:

  • بوابة المعية المنطقية (AND Logic): يتم تمثيلها رياضياً باستخدام عامل الضرب (*). فعند ضرب متجهين منطقيين (المصفوفة الشرطية الأولى * المصفوفة الشرطية الثانية)، يعامل المحرك القيمة TRUE كرقم (1) والقيمة FALSE كرقم (0). وينتج عن ضرب 1 * 1 فقط الرقم 1 (المطابقة الكاملة)، بينما ينتج عن أي إخفاق آخر الرقم 0. ومثاله الرياضي: (B2:B11>20) * (C2:C11>1.20).
  • بوابة الخيار المنطقي (OR Logic): يتم تمثيلها رياضياً باستخدام عامل الجمع الحسابي (+). فعند جمع متجهين منطقيين، يؤدي تحقق أي من الشرطين إلى توليد ناتج رقمي أكبر من الصفر (1 أو 2)، مما يفسره محرك FILTER كقيمة TRUE صريحة موجبة للتضمين. ومثاله الرياضي: (B2:B11>20) + (A2:A11=”أحمد”).

تتطلب كتابة هذه العمليات صياغة أقواس عزل شرطية صارمة حول كل تعبير اختباري مستقل قبل تطبيق علامة الضرب أو الجمع الحسابية (مثل: (Condition 1) * (Condition 2)). إن إغفال هذه الأقواس يخل بالأسبقية الجبرية لقواعد الحساب في إكسيل؛ حيث يمتلك عامل الضرب الرياضي أسبقية تنفيذ تعلو عوامل المقارنة المنطقية (مثل > و <)، مما يؤدي إلى نتائج منطقية شاذة ومشوهة للمصفوفة الداخلية قبل تمريرها للقناع الخارجي.

7.2 التخصيص الديناميكي لقناع الأعمدة بدلاً من المصفوفات الثابتة

على الرغم من النجاح الكبير لاستخدام الثابت المصفوفي اليدوي {1, 0, 1} في عزل الأعمدة في النماذج البسيطة، إلا أنه يعاني من عيب هيكلي يتمثل في “الجمود السكوني” (Static Inflexibility)؛ فإذا قام مستخدم بإدراج عمود جديد في منتصف الجدول المصدري، يختل تطابق القناع الحسابي وتنهار النتائج. وللارتقاء بالصيغة المتداخلة إلى مصاف الحلول البرمجية الذاتية والمرنة كلياً، يمكن استبدال هذا الثابت اليدوي بدوال شرطية متجهة تقوم بتوليد قناع الأعمدة ديناميكياً استناداً إلى رؤوس الأعمدة (Headers) ومطابقتها المنطقية.

لتحقيق هذه الديناميكية المطلقة، يمكن توظيف معادلة مركبة تعتمد على دالتي ISNUMBER و MATCH لفحص رؤوس الأعمدة في الجدول الأصلي ومقارنتها بقائمة مرجعية خارجية للأعمدة المطلوبة. لنفترض أن رؤوس أعمدة جدولنا تقع في النطاق A1:C1، وأننا نريد إبقاء الأعمدة التي تطابق أسماؤها قائمة صغيرة مدونة في الخلايا H1:I1 (وتحتوي على: “اسم اللاعب” و “المعدل التهديفي”). يمكن صياغة القناع الديناميكي الخارجي بالصورة الحسابية التالية:

=ISNUMBER(MATCH(A1:C1, H1:I1, 0))

يقوم هذا التركيب الذكي بمقارنة كل رأس عمود في النطاق A1:C1 بالقائمة المختارة؛ فإذا وجد تطابقاً، ترجع دالة MATCH رقم موضع العنصر، فتتعرف عليه دالة ISNUMBER وترجع القيمة TRUE (المعادلة للرقم 1). وإذا لم يتطابق الرأس (مثل عمود النقاط)، ترجع دالة MATCH الخطأ #N/A، فتقوم دالة ISNUMBER بتحويله إلى FALSE (المعادلة للرقم 0). وبدمج هذا التركيب المتقدم في الصيغة المتداخلة تصبح المعادلة بالشكل الشامل التالي:

=FILTER(FILTER(A2:C11, B2:B11>20), ISNUMBER(MATCH(A1:C1, H1:I1, 0)))

تمنح هذه الصياغة المتقدمة حصانة كاملة للنموذج ضد أي تغيرات في ترتيب الأعمدة أو إضافة حقول وسيطة جديدة في قاعدة البيانات؛ حيث يظل قناع الأعمدة متفاعلاً وذكياً يبحث عن أسماء الحقول ومسمياتها التقريرية دون الاعتماد على مواضعها الثابتة، وهو ما يمثل الأسلوب الاحترافي المتبع في تصميم لوحات التحكم الإحصائية ونظم دعم القرار المتقدمة في المؤسسات الكبرى، وهو ما يعكس أهمية البناء المعرفي الهيكلي للمنظومات الرقمية المعاصرة (Alexiou & Schippers, 2018).

8. تشخيص واستكشاف الأخطاء الشائعة وحلولها البرمجية

8.1 معالجة خطأ الانسكاب الشهير #SPILL!

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

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

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

8.2 معالجة أخطاء الأبعاد وتطابق المصفوفات #VALUE!

يحتل خطأ القيمة المنطقية (#VALUE!) المرتبة الثانية في قائمة الأخطاء التشخيصية المرتبطة بدالة FILTER المتداخلة، ولكنه يختلف جذرياً عن خطأ الانسكاب؛ إذ ينم خطأ #VALUE! عن وجود خلل جوهري في “التماثل الرياضي وتوافق الأبعاد” (Dimensional Asymmetry) بين المصفوفات المشتركة في العملية الحسابية، وهو ما يمنع المحرك من إتمام عمليات الضرب المتجهي أو الإسقاط الشرطي بنجاح.

يحدث هذا الخطأ غالباً في موضعين محددين داخل الصيغة المتداخلة:

  • خلل الدالة الداخلية: ينشأ عندما يختلف عدد صفوف معامل التضمين include عن عدد صفوف نطاق الإدخال array. ومثاله كتابة: =FILTER(A2:C11, B2:B10>20)؛ هنا يمتلك نطاق البيانات 10 صفوف بينما يمتلك نطاق الفحص 9 صفوف فقط، مما يجعل المقارنة مستحيلة رياضياً ويولد خطأ #VALUE! على الفور.
  • خلل الدالة الخارجية: ينشأ عندما يختلف عدد عناصر قناع الأعمدة عن عدد أعمدة المصفوفة العابرة. ومثاله تمرير قناع يتألف من عنصرين فقط مثل {1, 0} إلى مصفوفة وسطية تتألف من 3 أعمدة (A و B و C). في هذه الحالة، يعجز المحرك عن اتخاذ قرار منطقي للعمود الثالث اليتيم، مما يتسبب في إجهاض الدالة الخارجية بالكامل وإظهار الخطأ نفسه.

لتدارك واستكشاف هذا العطل، يجب على المصمم إجراء تدقيق متري صارم لأطوال المتجهات عبر توظيف الدوال المترية المساعدة مثل دالة COLUMNS ودالة ROWS. من خلال فحص التركيب والتأكد من أن: COLUMNS(Intermediate_Array) = COLUMNS(Mask_Array)، يمكن ضمان الاتساق الرياضي الكامل وتلافي ظهور هذه الانقطاعات الحسابية في النماذج التحليلية المتقدمة.

8.3 إدارة غياب النتائج باستخدام معامل القيمة البديلة (if_empty)

عندما تُخضع دالة FILTER مصفوفة البيانات لاختبار شرطي شديد القسوة لا يتمكن أي سجل فردي من اجتيازه (على سبيل المثال، اشتراط أن تكون النقاط في جدولنا أكبر من 100 نقطة لمجتمع دراسي أقصى قيمة فيه هي 35 نقطة)، فإن الاختبار المنطقي يسفر عن متجه يتألف بالكامل وبلا استثناء من القيم المنطقية FALSE. في هذه الحالة الافتراضية، يجد محرك إكسيل نفسه في مواجهة مصفوفة فارغة تماماً من العناصر، مما يدفعه افتراضياً إلى إطلاق خطأ الحساب الشهير (#CALC!) للإشارة إلى استحالة تكوين مصفوفة مخرجات.

لمنع تصدير هذا الخطأ إلى الواجهة التشغيلية وما يسببه من تشويه بصري وإرباك للمستخدم، وفرت شركة مايكروسوفت المعامل الثالث الحاسم داخل دالة FILTER وهو معامل القيمة البديلة [if_empty]. في سياق الدوال المتداخلة، تكتسب إدارة هذا المعامل حساسية برمجية بالغة؛ إذ إن تركه فارغاً في الدالة الداخلية يتسبب في تصدير الخطأ #CALC! مباشرة إلى الدالة الخارجية الحاضنة، والتي ستفشل بدورها في قراءة مصفوفة الإدخال وينهار البناء الهيكلي للصيغة كلياً.

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

=FILTER(FILTER(A2:C11, B2:B11>100, “لا توجد سجلات مطابقة”), {1, 0, 1}, “لا توجد نتائج”)

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

9. مقارنة منهجية بين دالة FILTER المتداخلة والبدائل التقنية المتاحة

9.1 المقارنة مع دالة CHOOSECOLS المقترنة مع FILTER

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

=CHOOSECOLS(FILTER(A2:C11, B2:B11>20), 1, 3)

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

  • الوضوح وسهولة الصياغة: تتفوق دالة CHOOSECOLS في بساطة التركيب وسهولة القراءة للمستخدم العادي؛ حيث يُشار إلى الأعمدة بأرقام صريحة ومباشرة (العمود 1 والعمود 3) دون الحاجة إلى تشييد أقنعة ثنائية من الأصفار والآحاد {1, 0, 1}.
  • التوافق المنطقي والمرونة البرمجية: تتفوق دالة FILTER المتداخلة تفوقاً ساحقاً في السيناريوهات التي تعتمد على “التحديد المنطقي المبني على الشروط” (Logical Rule-based Selection)؛ حيث يمكن للدالة الخارجية استقبال متجهات منطقية ديناميكية ناتجة عن دوال أخرى (مثل ISNUMBER أو أطوال النصوص) بصورة عفوية ومتسقة مع الجبر المنطقي، بينما تتطلب CHOOSECOLS توليد متجهات رقمية صحيحة وفهارس عددية متسلسلة، وهو ما يزيد من تعقيد الصياغة عند بناء لوحات التحكم المعقدة.
  • التوافق مع الإصدارات (Backwards Compatibility): تظل صيغة FILTER المتداخلة مدعومة ومستقرة في كافة بيئات مايكروسوفت 365 الأولى وإصدار إكسيل 2021 الثابت، في حين أن دالة CHOOSECOLS لم تتوفر إلا في التحديثات اللاحقة لمشتركي السحابة وإصدار إكسيل 2024، مما يجعل استخدامها في بيئات مؤسسية متباينة الإصدارات مصدراً محتملاً لظهور أخطاء عدم التعرف على الدالة (#NAME?).

9.2 المقارنة مع أدوات استعلام البيانات المتقدمة (Power Query)

يمثل محرك استعلام وتحويل البيانات المتقدم Power Query الركيزة الأكثر صلابة في بيئة إكسيل لاستخراج وتحويل وتحميل البيانات (ETL Processes). ولدى مقارنة دالة FILTER المتداخلة بأداة Power Query، تتضح الفروق المعمارية الحاسمة بين مدرستين مختلفتين في إدارة ومعالجة البيانات:

ترتكز دالة FILTER المتداخلة على المعالجة المباشرة واللحظية داخل الذاكرة الحية (In-Memory Dynamic Calculation)؛ وميزتها الكبرى هي “الاستجابة التفاعلية الآنية” (Zero-Latency Real-Time Reactivity). بمجرد تعديل أي خلية في الجدول، تتغير النتائج في التو واللحظة دون أي تدخل، مما يجعلها الخيار المثالي للنماذج التحليلية التفاعلية، ومحاكاة السيناريوهات الحسابية الفورية (What-If Scenarios)، ولوحات المتابعة السريعة ذات الأحجام المتوسطة (حتى عشرات الآلاف من السجلات).

في المقابل، تعمل أداة Power Query وفق بنية المعالجة المرحلية المجدولة (Batch Processing)؛ وهي لا تحدث مخرجاتها لحظياً بمجرد تغيير البيانات، بل تتطلب قيام المستخدم بإصدار أمر تحديث صريح (Refresh)، أو جدولة التحديث برمجياً. غير أن القوة الحقيقية لـ Power Query تتجلى عند التعامل مع البيانات الضخمة (Big Data) التي تتجاوز مئات الآلاف أو ملايين الصفوف المجمعة من مصادر خارجية متعددة، أو عند الحاجة لتطبيق عمليات تنظيف معقدة وهيكلة أشكال البيانات قبل استيرادها. في مثل هذه البيئات الصناعية الضخمة، يُفضل تفويض عمليات التحويل الأولية لـ Power Query لتقليل العبء على مصنف إكسيل، ومن ثم استخدام صيغ FILTER المتداخلة في الطبقات النهائية لعرض المؤشرات التحليلية اللحظية للمستخدم النهائي.

10. الممارسات الفضلى والاعتبارات الأكاديمية لتحسين كفاءة النماذج الحسابية

10.1 تحسين الأداء الحسابي وسرعة إعادة التقييم (Calculation Performance)

إن بناء النماذج الحسابية المعقدة في إكسيل لا يتطلب فقط الإلمام بالصحة التركيبية للصيغ، بل يستلزم وعياً هندسياً عميقاً بأساليب الحفاظ على كفاءة الأداء الحسابي وسرعة إعادة التقييم (Recalculation Speed). ويعد الخطأ القاتل الأكثر ارتكاباً في هذا السياق هو لجوء المحلل إلى الإشارة للأعمدة الكاملة بصورة مطلقة داخل دالة FILTER المتداخلة، مثل كتابة: =FILTER(FILTER(A:C, B:B>20), {1, 0, 1}).

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

الممارسة القياسية الفضلى تتجسد في استخدام “جداول إكسيل الهيكلية الرسمية” (Official Excel Tables) والاستفادة من نظام التسميات المنظمة (Structured References). عند تحويل نطاق البيانات إلى جدول رسمي وتسميته Table1، تتحول الصيغة المتداخلة إلى النمط المهيب التالي:

=FILTER(FILTER(Table1, Table1[Points]>20), {1, 0, 1})

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

10.2 التوثيق البرمجي وقابلية الصيانة والتطوير المستمر

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

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

=LET(
    SourceData, Table1,
    Criteria, Table1[Points] > 20,
    FilteredRows, FILTER(SourceData, Criteria),
    ColumnMask, {1, 0, 1},
    FILTER(FilteredRows, ColumnMask)
)

إن هذا البناء المعماري لا يسهل فقط قراءة النموذج واستكشاف الأخطاء وتحديث المعايير في سطر واحد دون المساس بجوهر الصيغة، بل يساهم أيضاً في رفع الكفاءة الحسابية؛ حيث تقوم دالة LET بحساب كل متغير معرف لمرة واحدة فقط وتخزينه في الذاكرة دون تكرار العمليات. علاوة على ذلك، تقتضي الممارسات الفضلى الالتزام بمبدأ “الفصل المعماري الصارم للطبقات” (Layered Architecture)، بحيث تُخصص أوراق عمل مستقلة لتخزين البيانات الخام (Raw Data Layer)، وتُعزل تماماً عن أوراق المعالجة والتحليل (Calculation Layer)، وتُفصل كلياً عن واجهات التقارير النهائية ولوحات العرض التفاعلية (Presentation Layer). يضمن هذا الالتزام المعياري انسجام النموذج مع أدبيات النمذجة المالية والتحليلية القياسية المعتمدة دولياً، ويوفر بيئة عمل آمنة، شفافة، وقابلة للتطوير المستمر عبر الأجيال البرمجية المتلاحقة.

خاتمة

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

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

المراجع

Alexiou, A., & Schippers, M. C. (2018). Digital game elements, user experience and learning: A conceptual framework. Education and Information Technologies. https://doi.org/10.1007/s10639-018-9730-6

Christensen, A. P., Kenett, Y. N., Aste, T., Silvia, P. J., & Kwapil, T. R. (2018). Network structure of the Wisconsin Schizotypy Scales–Short Forms: Examining psychometric network filtering approaches. Behavior Research Methods. https://doi.org/10.3758/s13428-018-1032-9

Gajdzik, B., & Wolniak, R. (2022). Smart Production Workers in Terms of Creativity and Innovation: The Implication for Open Innovation. Journal of Open Innovation Technology Market and Complexity. https://doi.org/10.3390/joitmc8020068

Koch, P., & Krenn, B. (2021). Executive functions in elite athletes – Comparing open-skill and closed-skill sports and considering the role of athletes’ past involvement in both sport categories. Psychology of sport and exercise. https://doi.org/10.1016/j.psychsport.2021.101925

Metcalf, L. E., Askay, D. A., & Rosenberg, L. B. (2019). Keeping Humans in the Loop: Pooling Knowledge through Artificial Swarm Intelligence to Improve Business Decision Making. California Management Review. https://doi.org/10.1177/0008125619862256

★

تقييم هذا المحتوى

5.0 / 5 • 7 تقييمات

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

looti, M. (2026, أكتوبر 22). كيفية إنشاء دالة FILTER متداخلة في إكسيل. عرب سايكلوجي. https://arabpsychology.com/statistics/kayfiyat-insha-dala-filter-mutadakhila-fi-excel/
looti, Mohammed. “كيفية إنشاء دالة FILTER متداخلة في إكسيل.” عرب سايكلوجي, 22 أكتوبر 2026, https://arabpsychology.com/statistics/kayfiyat-insha-dala-filter-mutadakhila-fi-excel/.
looti, Mohammed. “كيفية إنشاء دالة FILTER متداخلة في إكسيل.” عرب سايكلوجي. أكتوبر 22, 2026. https://arabpsychology.com/statistics/kayfiyat-insha-dala-filter-mutadakhila-fi-excel/.