تُعد الجداول المحورية (Pivot Tables) في برنامج مايكروسوفت إكسل إحدى أقوى الأدوات التحليلية التي أحدثت ثورة حقيقية في طريقة تعامل المؤسسات والمحللين مع قواعد البيانات الضخمة والمعقدة؛ إذ تتيح تلخيص ملايين السجلات وإعادة هيكلتها واستخراج المؤشرات الإحصائية الحرجة بنقرات معدودة دون الحاجة إلى كتابة خوارزميات معقدة من الصفر. ومع ذلك، فإن هذه القوة التحليلية الهائلة تصطدم في كثير من الأحيان بحواجز بنيوية صلبة تفرضها الطبيعة الهندسية الافتراضية لمحرك إكسل الداخلي، ولا سيما عندما يتعلق الأمر بتطبيق منطق التصفية المتقدم متعدد المعايير عبر حقول مستقلة.
تتمحور إحدى أبرز هذه العقبات التحليلية حول عجز منظومة التصفية القياسية داخل الجداول المحورية عن تنفيذ الشرط المنطقي التبادلي أو الجمعي المعروف بـ (OR Logic) بين حقول أو أعمدة مختلفة بصورة مباشرة. فبينما يتيح البرنامج تصفية عناصر متعددة داخل الحقل الواحد بكل سهولة وسلاسة، إلا أنه يجبر المحلل على الخضوع لمنطق التقاطع الإلزامي (AND Logic) بمجرد محاولة تطبيق شروط تصفية متزامنة عبر حقلين منفصلين أو أكثر. يترتب على هذا السلوك الافتراضي استبعاد تلقائي لجميع السجلات التي لا تحقق كافة الشروط مجتمعة في آن واحد، مما يحرم متخذي القرار من رؤية المشهد البياني التكاملي الشامل عند محاولة عزل فئات متمايزة ولكنها مرتبطة تحليلياً.
يهدف هذا الدليل المرجعي الشامل والمفصل إلى تفكيك هذه الإشكالية البنيوية من جذورها النظرية والرياضية، وتقديم خارطة طريق هندسية متكاملة تتضمن أحدث المنهجيات المعتمدة لتطبيق شرط التصفية التبادلي (OR Condition) داخل الجداول المحورية بكفاءة واحترافية مطلقة. سنستعرض عبر هذا المقال المنهجيات الكلاسيكية المعتمدة على الأعمدة المساعدة والصيغ المنطقية المركبة، والتقنيات التفاعلية المعتمدة على مقاسم البيانات (Slicers)، والحلول البرمجية عالية الكفاءة عبر لغة DAX في نموذج البيانات (Data Model / Power Pivot)، إضافة إلى تقنيات التحويل المسبق عبر محرر Power Query، والأتمتة الكاملة باستخدام Visual Basic for Applications (VBA)، مع معالجة معمقة لأفضل ممارسات الحوكمة وتحسين الأداء واستكشاف الأخطاء وتصحيحها.
- 1. مقدمة نظرية حول تصفية الجداول المحورية في برنامج إكسل
- 2. التحدي البنيوي لتطبيق الشرط OR في الجداول المحورية
- 3. المنهجية الأساسية: استخدام الأعمدة المساعدة (Helper Columns)
- 4. دراسة حالة تطبيقية خطوة بخطوة
- 5. التقنيات المتقدمة باستخدام مقاسم البيانات (Slicers)
- 6. استخدام نموذج البيانات ولغة DAX لتحقيق تصفية OR
- 7. التصفية المتقدمة باستخدام محرر Power Query
- 8. الأتمتة البرمجية باستخدام Visual Basic for Applications (VBA)
- 9. التعامل مع الشروط المعقدة والمتعددة الأبعاد
- 10. تحليل الأداء وقابلية التوسع في مجموعات البيانات الكبيرة
- 11. استكشاف الأخطاء الشائعة وحلولها التقنية
- 12. إطار عمل تطبيقي مهني وحوكمة النماذج التحليلية
- خاتمة
- المراجع
1. مقدمة نظرية حول تصفية الجداول المحورية في برنامج إكسل
1.1 طبيعة الجداول المحورية وآليات معالجة البيانات
تمثل الجداول المحورية في جوهرها محرك تجميع متعدد الأبعاد (Multidimensional Aggregation Engine) صُمم خصيصاً لتحويل المصفوفات المسطحة غير المنظمة والجداول العلائقية إلى تقارير ملخصة ذات بنية بصرية هرمية واضحة. تعتمد آلية عمل هذا المحرك على إنشاء بنية بيانات وسيطة مخفية في الذاكرة تُعرف باسم الذاكرة المؤقتة للجدول المحوري (Pivot Cache). تقوم هذه الذاكرة بقراءة البيانات المصدرية وتخزينها بتنسيق محسن ومضغوط يسمح بإجراء العمليات الحسابية والتجميعية بسرعة فائقة، مثل الجمع، والمتوسط، والعد، والانحراف المعياري، دون الحاجة إلى إعادة مسح ورقة العمل المصدرية في كل مرة يقوم فيها المستخدم بتغيير طريقة العرض.
تتم معالجة البيانات داخل الجدول المحوري عبر توزيع الحقول المختلفة ضمن أربعة محاور تشغيلية رئيسية: منطقة الصفوف (Rows)، ومنطقة الأعمدة (Columns)، ومنطقة القيم (Values)، ومنطقة عوامل التصفية (Filters). يقوم المحرك برسم شبكة إحداثيات ثنائية أو متعددة المستويات تتقاطع فيها تسميات الصفوف مع تسميات الأعمدة، بينما تتولى منطقة القيم تنفيذ التجميع الحسابي داخل الخلايا الناتجة عن نقاط التقاطع. تلعب منطقة عوامل التصفية دور الحارس المنطقي الذي يتحكم في نطاق السجلات المسموح لها بالدخول إلى عملية الاحتساب التجميعي.
تكتسب التصفية الدقيقة أهمية استراتيجية بالغة الأثر في بيئات الأعمال الحديثة؛ حيث لا تقتصر وظيفتها على مجرد تقليص حجم البيانات المعروضة، بل تمتد لتكون الأداة الأساسية لاستخراج مؤشرات الأداء الرئيسية (KPIs)، وتوجيه الرؤى التحليلية نحو قطاعات سوقية محددة، واكتشاف الأنماط غير المرئية في مجموعات البيانات الكبيرة، مما يسهم بشكل مباشر في توجيه قرارات الإدارة العليا وبناء التوقعات المستقبلية بدقة متناهية.
1.2 الفارق الجوهري بين الشروط المنطقية AND و OR
يرتكز علم تحليل البيانات على أسس راسخة من المنطق الرياضي ونظرية المجموعات (Set Theory) والجبر البولياني (Boolean Algebra). ويشكل الفارق بين المعامل المنطقي AND والمعامل المنطقي OR حجر الزاوية في تحديد كيفية التعامل مع العينات واستخلاص المجموعات الجزئية من البيانات الشاملة. يعبر المعامل AND عن مفهوم التقاطع الرياضي (Intersection)، والذي يُرمز له بالرمز الرياضي (∩). في هذا السياق، لا يتم قبول أي سجل ضمن العينة المستهدفة إلا إذا حقق جميع المعايير المحددة في وقت واحد وبشكل إلزامي متزامن، مما يؤدي دائماً إلى تضييق نطاق البيانات وتصفيتها إلى الحد الأدنى المشترك.
في المقابل، يمثل المعامل المنطقي OR مفهوم الاتحاد الرياضي (Union)، والذي يُرمز له بالرمز (∪). يقوم هذا المعامل بدمج السجلات التي تحقق الشرط الأول، وتلك التي تحقق الشرط الثاني، إضافة إلى السجلات التي تحقق كلا الشرطين معاً، دون أي إقصاء ناتج عن عدم مطابقة أحد المعايير طالما تحقق معيار بديل. يؤدي منطق OR إلى توسيع العينة المتاحة للتحليل ودمج فئات متباينة وظيفياً أو جغرافياً ضمن إطار تجميعي موحد دون اشتراط وجود تقاطع كامل بين خصائصها.
ينعكس هذا التمايز الجذري على حجم ومخرجات العينة البيانية المستخلصة؛ فبينما يخدم منطق AND الاستقصاءات الدقيقة التي تبحث عن سمات متداخلة ونادرة، يوفر منطق OR المرونة اللازمة لإجراء تحليلات التجميع الشامل، ومقارنة القطاعات المتعددة، وتقييم الأداء التراكمي لعدة وحدات أعمال مستقلة، وهو ما يتطلب من المحلل فهماً عميقاً لكيفية ترجمة هذا المفهوم إلى بيئة الجداول المحورية.

1.3 القيود الافتراضية لمنظومة التصفية داخل الجداول المحورية
عند التعمق في دراسة بنية مرشحات التقارير (Report Filters) ومربعات التصفية المدمجة في رؤوس الصفوف والأعمدة داخل الجداول المحورية القياسية، نجد أنها تعتمد تصميماً برمجياً يفرض علاقات AND التراكمية بشكل إلزامي بين الحقول المختلفة. فإذا قام المحلل بوضع حقل “المنطقة الجغرافية” في منطقة الفلاتر واختار “الشرق”، ثم وضع حقل “فئة المنتج” واختار “الإلكترونيات”، فإن إكسل سيقوم تلقائياً بتطبيق معادلة تقاطع صارمة تقتصر فقط على المبيعات التي حدثت في منطقة “الشرق” وكانت من فئة “الإلكترونيات” معاً.
تكمن المعضلة الكبرى في عجز هذه المرشحات التقليدية عن دمج معايير متعددة بنظام الاختيار التبادلي بين أعمدة مختلفة؛ فلو أراد المحلل استخراج تقرير يعرض إجمالي المبيعات لجميع العمليات التي تمت في منطقة “الشرق” أو كانت تنتمي إلى فئة “الإلكترونيات” (بغض النظر عن منطقتها الجغرافية)، فإن واجهة المستخدم الافتراضية للجدول المحوري لا توفر أي خيار نقر مباشر لتحقيق هذا الهدف، بل تعامل المعيارين كقيدين متزامنين يؤدي تطبيقهما إلى حجب كافة مبيعات الإلكترونيات في المناطق الأخرى وحجب كافة مبيعات المنتجات الأخرى في منطقة الشرق.
تولد هذه القيود حاجة منهجية وتقنية ملحة لابتكار وتطوير استراتيجيات بديلة وهياكل بيانات مساعدة تمكن المستخدم من تجاوز القيد المفروض في محرك التصفية الكلاسيكي. ومن هنا تبرز أهمية بناء حلول تعيد هندسة البيانات إما على مستوى المصدر عبر الأعمدة المساعدة أو على مستوى الذاكرة التحليلية باستخدام نماذج البيانات المتطورة، لضمان تنفيذ منطق OR بكفاءة حسابية تامة وموثوقية رقمية لا تشوبها شائبة.
2. التحدي البنيوي لتطبيق الشرط OR في الجداول المحورية
2.1 آلية عمل عوامل التصفية القياسية (Standard Filters)
تعمل عوامل التصفية القياسية داخل الجداول المحورية وفق تسلسل هرمي محدد بدقة لمعالجة البيانات. عند تحديد عنصر واحد أو عدة عناصر داخل حقل فردي (عمود موحد في جدول المصدر)، يتيح إكسل ما يُعرف بالتحديد المتعدد (Multi-Select)، والذي يمثل تطبيقاً داخلياً لمنطق OR لكنه محصور ومقيد ضمن حدود ذلك الحقل الواحد فقط. على سبيل المثال، إذا اختار المستخدم كلاً من “مصر” و”السعودية” و”الإمارات” من حقل “الدولة”، فإن الجدول المحوري سيقوم بعرض سجلات أي عملية تمت في إحدى هذه الدول الثلاث مجتمعة، وهو ما يمثل اتحاداً لعناصر الحقل ذاته.
ومع ذلك، تتغير هذه السلوكية المرنة بشكل راديكالي بمجرد محاولة توسيع نطاق التصفية ليشمل حقولاً مستقلة أخرى. فعندما ينتقل المستخدم لتحديد قيود تصفية إضافية على عمود آخر، مثل حقل “طريقة الدفع” واختيار “بطاقة ائتمانية”، فإن المحرك الداخلي لا يتعامل مع هذا الاختيار كخيار إضافي موسع، بل كمرشح تصفية لاحق يتم تطبيقه حصرياً على النتائج المتبقية من الحقل الأول. يوضح هذا السلوك حدود التفاعل المقطوعة بين مرشحات الأعمدة المنفصلة داخل الواجهة الرسومية القياسية.
تتجلى المشكلة في أن كل حقل يتم إسقاطه في منطقة الفلاتر أو تطبيقه كمرشح رأس صف/عمود ينشئ مستوى مستقلاً من الفلترة، ولا توجد آلية ربط منطقية مرئية تسمح للمستخدم بتغيير المعامل بين هذه المستويات من AND إلى OR. وبالتالي، تصبح النتيجة النهائية دوماً هي المجموعة المشتركة التي ترضي جميع الشروط بالتزامن، مما يمنع استعراض البيانات التبادلية بطريقة سلسة.
2.2 أسباب فرض منطق التقاطع الإلزامي (AND Logic)
يعود فرض منطق التقاطع الإلزامي داخل الجداول المحورية إلى النموذج العلائقي الهرمي والتصميم المعماري المنظم لقواعد البيانات الجداولية (Tabular Databases). يستند الافتراض الرياضي الأساسي لمحركات التجميع إلى أن أي قيد تصفية يضعه المستخدم يهدف إلى تضييق مساحة الاستعلام (Query Space) والوصول إلى شريحة بيانات متجانسة وخاضعة لجميع القيود التحليلية المحددة في التقرير.
من الناحية الهندسية، تم تصميم خوارزميات التجميع داخل Pivot Cache لحساب المجاميع الفرعية والإجمالية من خلال بناء مصفوفات تقاطع تعتمد على معالجة فهارس السجلات (Row Indexes). عند تطبيق عامل تصفية على الحقل A، يتم توليد مصفوفة ثنائية بالصفوف الصالحة، وعند تطبيق عامل تصفية على الحقل B، يتم توليد مصفوفة أخرى، ثم يقوم المحرك بتنفيذ عملية ضرب نقطي (Bitwise AND) سريعة للغاية بين المصفوفتين لاستخراج الصفوف المؤهلة للعرض. هذه العملية مصممة برمجياً لتحقيق أقصى سرعة أداء واستجابة لحظية في المعالجة، إلا أنها تجعل من معالجة الاتحاد التبادلي المباشر عبر الواجهة أمراً غير مدعوم بنيوياً دون إعادة تعريف استعلام المصدر.
يؤدي هذا التصميم أيضاً إلى تفادي التعارضات المنطقية المعقدة في حساب المجاميع الإجمالية (Grand Totals)؛ حيث أن تطبيق منطق التقاطع يضمن أن مجموع العناصر الجزئية لن يتجاوز الحجم الإجمالي للسجلات الخاضعة لنفس القيود، بينما قد يؤدي تطبيق منطق OR غير المنضبط إلى تكرار احتساب بعض السجلات التي تتقاطع في كلا الشرطين عند محاولة تفكيكها عبر أبعاد الجدول المحوري، مما قد يسبب التباساً محاسبياً وإحصائياً للمستخدمين غير المتخصصين.
2.3 التداعيات الإحصائية لغياب التصفية التبادلية المباشرة
ينطوي غياب التصفية التبادلية المباشرة في الجداول المحورية القياسية على مخاطر تحليلية وإحصائية جسيمة قد تضلل متخذي القرار في حال عدم التعامل معها بحذر منهجي بالغ. فعندما يحاول المحلل الالتفاف على هذا القيد عن طريق إنشاء جدولين محوريين منفصلين—أحدهما للمعيار الأول والآخر للمعيار الثاني—ثم جمع النتائج يدوياً في خلايا خارجية، فإنه يقع في فخ “الاحتساب المزدوج” (Double Counting) للسجلات التي تحقق كلا المعيارين في آن واحد، مما يضخم الأرقام والمؤشرات المالية بشكل خاطئ.
من جانب آخر، يؤدي الفشل في تطبيق شرط OR بشكل صحيح إلى فقدان أجزاء جوهرية من البيانات المستهدفة؛ فعلى سبيل المثال، إذا كانت إدارة الموارد البشرية تسعى لحصر جميع الموظفين الذين يمتلكون مؤهلاً علمياً عالياً (حقل المؤهل) أو حققوا تقييم أداء سنوي يفوق 90% (حقل التقييم) بهدف ترشيحهم لمكافآت التميز، فإن استخدام الفلاتر التقليدية سيظهر فقط الموظفين الذين جمعوا بين الشرطين معاً، مستبعداً بذلك أصحاب الأداء الاستثنائي الذين لا يحملون المؤهل العالي، وأصحاب المؤهلات العالية ذوي التقييمات المتوسطة، مما يخل بمبدأ الشمول والعدالة في التحليل الإداري.
تفرض هذه التداعيات ضرورة إعادة هيكلة البيانات أو استحداث طبقات معالجة منطقية وسيطة تضمن عزل الفئات المستهدفة بدقة تامة دون تشويه التجميع العام، وهو ما ينقلنا مباشرة إلى استعراض المنهجيات المعتمدة لحل هذه المعضلة الرياضية والتقنية.
3. المنهجية الأساسية: استخدام الأعمدة المساعدة (Helper Columns)
3.1 المفهوم الرياضي والمنطقي للعمود المساعد
تُعد منهجية الأعمدة المساعدة (Helper Columns) الحل الأكثر انتشاراً وشعبية بين محترفي إكسل لمعالجة قيود التصفية المعقدة؛ وتعتمد فلسفتها على نقل عبء المعالجة المنطقية من واجهة الجدول المحوري المحدودة إلى جدول البيانات المصدرية مباشرة. بدلاً من محاولة إجبار محرك التصفية الهرمي على تفسير شروط تبادلية متضاربة بين عدة أعمدة، يتم إنشاء عمود جديد في جدول البيانات الأصلي يتولى تقييم كافة الشروط المنطقية على مستوى كل صف على حدة.
يقوم هذا العمود المساعد بتحويل الشروط المنطقية المركبة (سواء كانت نصية، رقمية، أو تاريخية) إلى قيمة تصنيفية موحدة، غالباً ما تكون علامة ثنائية (Binary Flag) مثل “Show” و “Hide” أو 1 و 0 أو “Yes” و “No”. من خلال هذا التحويل، يتم اختزال المسألة متعددة الأبعاد إلى بعد واحد بسيط يمكن إسقاطه مباشرة في منطقة عوامل التصفية (Report Filter) الخاصة بالجدول المحوري وتحديد القيمة الإيجابية فقط، مما يحقق التصفية المطلوبة بمنطق OR دون أي تعقيد.
تتميز هذه المنهجية بمرونتها الفائقة وقابليتها للتحديث التلقائي؛ حيث ترتبط الصيغ المنطقية المكتوبة داخل العمود المساعد بالبيانات المصدرية ارتباطاً ديناميكياً، مما يعني أن أي تعديل أو إضافة في السجلات سيؤدي فوراً إلى إعادة تقييم الصف وتحديث حالته، لتنعكس النتيجة مباشرة في الجدول المحوري بمجرد النقر على زر التحديث (Refresh).

3.2 بناء الصيغة المنطقية المركبة باستخدام IF و OR
تعتمد صياغة المعادلة الرياضية داخل العمود المساعد على الدمج الاحترافي بين دالة الشرط الرئيسية IF Function والدالة المنطقية التبادلية OR Function. يتيح التركيب النحوي لدالة OR اختبار ما يصل إلى 255 شرطاً منطقياً مستقلاً، وتُرجع الدالة القيمة المنطقية TRUE إذا تحقق شرط واحد على الأقل من هذه الشروط، بينما تُرجع FALSE فقط في حال فشلت جميع الشروط دون استثناء.
يتم تضمين دالة OR كمعامل اختباري أول داخل دالة IF لتوجيه المخرجات النصية المحددة، وذلك وفق البناء التركيبي العام التالي:
=IF(OR(Condition1, Condition2, …), “Show”, “Hide”)
تسمح هذه البنية المنطقية باختبار شروط متباينة الأنواع والخصائص؛ إذ يمكن للمحلل اختبار مطابقة نصية في الحقل الأول (مثل A2=”Mavs”) بالتزامن مع اختبار مطابقة نصية أو رقمية في حقل آخر (مثل B2=”Guard” أو C2 >= 1000). تقوم دالة OR بالتقييم التبادلي الدقيق، فإذا وُجد أن السجل ينتمي لفريق “Mavs” أو يشغل مركز “Guard” (أو كليهما)، تقوم الدالة بإرجاع TRUE، وبالتالي تصدر دالة IF الكلمة “Show”، والعكس صحيح لجميع السجلات الأخرى التي لا ينطبق عليها أي من الشرطين.
3.3 تعميم الصيغة وتوسيع نطاق المصدر
لضمان استقرار النموذج التحليلي على المدى الطويل، يجب تعميم الصيغة المساعدة عبر كامل نطاق البيانات المصدرية دون ترك أي خلايا فارغة أو غير مغطاة بالمعادلة. يُنصح بشدة بتحويل نطاق البيانات التقليدي إلى جدول إكسل رسمي مهيكل يعرف باسم (Excel Table) عبر اختصار لوحة المفاتيح Ctrl + T؛ حيث توفر الجداول المهيكلة ميزة الصيغ المحسوبة التلقائية (Calculated Columns) التي تقوم بنسخ المعادلة فورياً إلى أسفل العمود المساعد وتوسيع نطاق التغطية آلياً عند إضافة أي صفوف جديدة في المستقبل.
يجب على المحلل التأكد من صحة الإسناد المرجعي للخلايا (Cell Referencing) أثناء كتابة الصيغة؛ إذ يجب استخدام المراجع النسبية (Relative References) مثل A2 و B2 حتى تتغير مراجع الخلايا ديناميكياً مع كل صف جديد، أو استخدام مراجع الجداول المهيكلة ذات البنية الصريحة (Structured References) مثل [@Team] = “Mavs” لتعزيز مقروئية الصيغة البرمجية وتفادي أخطاء الإزاحة عند فرز أو نقل البيانات.
بعد تعميم الصيغة، يتم فحص الصفوف للتأكد من خلوها من الأخطاء الحسابية وتطابق النتائج مع المتوقع، ليصبح جدول البيانات جاهزاً لتغذية الجدول المحوري ومحرك التصفية النهائي بأعلى مستويات الموثوقية الهندسية.
4. دراسة حالة تطبيقية خطوة بخطوة
4.1 تجهيز مصفوفة البيانات الأولية وتحديد المتغيرات
لتطبيق هذه المفاهيم النظرية في سياق عملي ملموس، سنفترض وجود قاعدة بيانات رياضية متخصصة تتابع أداء لاعبي كرة السلة المحترفين عبر عدة جولات ومواسم. تتكون المصفوفة البيانية المصدرية من عدة متغيرات رئيسية تتضمن: اسم اللاعب (Player Name)، والفريق التابع له (Team)، والمركز الميداني الذي يلعب فيه (Position)، ومجموع النقاط المسجلة (Points Scored).
تتمثل مهمتنا التحليلية المطلوبة في بناء جدول محوري يلخص إجمالي النقاط المسجلة للاعبين، ولكن مع تطبيق معيار تصفية تبادلي محدد وصارم: يجب عرض اللاعبين الذين ينتمون إلى فريق Mavs أو يشغلون مركز Guard (بغض النظر عن الفريق الذي يلعبون لصالحه). يتطلب هذا السيناريو شمول ثلاثة أصناف من اللاعبين:
- اللاعبون الذين ينتمون لفريق Mavs ويلعبون في مركز Guard (تحقق كلا الشرطين).
- اللاعبون الذين ينتمون لفريق Mavs ولكنهم يشغلون مراكز أخرى مثل Forward أو Center (تحقق الشرط الأول فقط).
- اللاعبون الذين ينتمون لفرق أخرى مثل Lakers أو Celtics ولكنهم يشغلون مركز Guard (تحقق الشرط الثاني فقط).
تبدأ الخطوة التنفيذية بتنظيف مصفوفة البيانات، والتأكد من إزالة المسافات الزائدة حول النصوص، وتوحيد حالة الأحرف وصيغ الكلمات لتجنب أي إخفاق في عمليات المطابقة اللاحقة.

4.2 تطبيق الصيغة المساعدة عملياً
نبدأ الآن بإضافة عمود جديد في نهاية جدول البيانات المصدرية، ونقوم بتسمية رأس العمود باسم وصفي واضح وليكن Filter_Status. بافتراض أن حقل الفريق (Team) يقع في العمود A وحقل المركز (Position) يقع في العمود B، وتحديداً بدءاً من الصف الثاني (A2 و B2)، نقوم بكتابة الصيغة المنطقية التالية في الخلية المخصصة ضمن العمود الجديد:
=IF(OR(A2=”Mavs”, B2=”Guard”), “Show”, “Hide”)
نقوم بتطبيق هذه المعادلة وسحبها لتشمل كافة الصفوف في المصفوفة البيانية. لتوضيح الأثر المنطقي لهذه العملية على مستوى السجلات الفردية، نوضح فيما يلي عينة من البيانات وطريقة استجابة الدالة لها:
- اللاعب (Luka Doncic) – الفريق: Mavs – المركز: Guard -> النتيجة المنطقية: Show (كلا الشرطين صحيح).
- اللاعب (Dirk Nowitzki) – الفريق: Mavs – المركز: Forward -> النتيجة المنطقية: Show (شرط الفريق صحيح رغم عدم تطابق المركز).
- اللاعب (Stephen Curry) – الفريق: Warriors – المركز: Guard -> النتيجة المنطقية: Show (شرط المركز صحيح رغم عدم تطابق الفريق).
- اللاعب (LeBron James) – الفريق: Lakers – المركز: Forward -> النتيجة المنطقية: Hide (كلا الشرطين غير محقق).
يقوم المحلل بإجراء فحص سريع ومراجعة بصرية لعينة عشوائية من النتائج للتأكد التام من أن كافة الحالات المستهدفة حصلت على القيمة “Show” بينما تم وسم السجلات المستبعدة بالقيمة “Hide”.
4.3 بناء الجدول المحوري وتطبيق مرشح التقرير
بعد تجهيز العمود المساعد بنجاح، ننتقل إلى مرحلة إنشاء التقرير النهائي. نحدد كامل نطاق البيانات المصدرية بما في ذلك العمود المساعد الجديد Filter_Status، ثم نتوجه إلى شريط الأدوات العلوي ونختار علامة التبويب Insert ثم ننقر على PivotTable ونحدد وجهة الإدراج في ورقة عمل جديدة أو في نفس الورقة.
تفتح لنا نافذة حقول الجدول المحوري (PivotTable Fields)، ونقوم بتوزيع المتغيرات البيانية عبر المناطق المخصصة على النحو التالي:
- سحب حقل Team وحقل Player Name إلى منطقة الصفوف (Rows Area) لبناء تسلسل هرمي لعرض الفرق واللاعبين.
- سحب حقل Position إلى منطقة الأعمدة (Columns Area) أو تركه في الصفوف بحسب التصميم المطلوب للتقرير.
- سحب حقل Points Scored إلى منطقة القيم (Values Area) وضبط التجميع الحسابي على دالة الجمع (Sum).
- سحب العمود المساعد Filter_Status إلى منطقة عوامل التصفية (Filters Area).
بمجرد إدراج الحقل في منطقة الفلاتر، يظهر مربع التصفية أعلى الجدول المحوري. ننقر على القائمة المنسدلة لمرشح Filter_Status ونلغي تحديد خيار (Select All)، ثم نضع علامة الاختيار حصرياً على القيمة Show وننقر OK. في هذه اللحظة، يعيد الجدول المحوري تجميع وحساب البيانات فورياً ليعرض فقط اللاعبين التابعين لفريق Mavs أو الذين يلعبون في مركز Guard، محققاً بذلك شرط التصفية التبادلي OR بدقة رياضية مطلقة وتلخيص إحصائي لا تشوبه شائبة.
5. التقنيات المتقدمة باستخدام مقاسم البيانات (Slicers)
5.1 دمج مقاسم البيانات مع العمود المساعد
تمثل مقاسم البيانات (Slicers) إحدى أكثر الأدوات البصرية تفاعلية وحداثة في بيئة إكسل؛ حيث تتجاوز القيود الشكلية للفلاتر المنسدلة التقليدية وتوفر أزراراً رسومية واضحة تتيح للمستخدمين تصفية التقارير بنقرة واحدة. عند دمج مقاسم البيانات مع منهجية العمود المساعد، يتحول التقرير الثابت إلى لوحة تحكم ديناميكية تفاعلية (Interactive Dashboard) تخدم العروض الإدارية رفيعة المستوى.
لإدراج مقسم بيانات مخصص لشرط التصفية، نقوم بالنقر على أي خلية داخل الجدول المحوري، ثم نتوجه إلى علامة التبويب PivotTable Analyze في الشريط العلوي ونختار Insert Slicer. من قائمة الحقول المتاحة، نحدد الحقل المساعد Filter_Status ونضغط موافق. يظهر المقسم فورياً على ورقة العمل ككائن رسومي مستقل يحتوي على زرين عريضين: “Show” و “Hide”.
يمكن للمحلل تخصيص ألوان وتصميم المقسم بما يتناسب مع الهوية البصرية للتقرير المالي أو الإداري، كما يتيح هذا المقسم لمتخذي القرار التبديل الفوري واللحظي بين الرؤية الشاملة لكامل قاعدة البيانات (عند النقر على زر إلغاء التصفية في المقسم) والرؤية المفلترة التي تطبق شرط OR التبادلي (عند النقر على زر Show)، مما يضفي مرونة تحليلية استثنائية دون الحاجة لفتح القوائم المنسدلة المعقدة.

5.2 محاكاة منطق OR عبر مقاسم بيانات متعددة
في السيناريوهات التحليلية الأكثر تعقيداً، قد يرغب المستخدم في تطبيق شروط تصفية تفاعلية تتغير معاييرها باستمرار دون الحاجة إلى تعديل صيغة العمود المساعد يدوياً في كل مرة. عند إدراج مقسمي بيانات مستقلين—أحدهما لحقل “Team” والآخر لحقل “Position”—فإن السلوك الافتراضي لبرنامج إكسل يفرض منطق AND الصارم بين المقسمين؛ فإذا تم تحديد “Mavs” في المقسم الأول و”Guard” في المقسم الثاني، سيتم قصر العرض على التقاطع المزدوج فقط.
ولمحاكاة منطق OR التبادلي عبر واجهة مقاسم البيانات متعددة الأبعاد، يتم اللجوء إلى تقنية هندسة الحقول المدمجة (Concatenated Attribute Slicers). تتضمن هذه التقنية دمج خصائص الصفوف في أعمدة تجميعية مسبقة، أو استخدام مقاسم بيانات مرتبطة بأعمدة مخصصة تعكس التصنيفات المزدوجة مثل “Mavs – All Positions”، “Guard – All Teams”، و”Other Combinations”.
يتيح هذا النموذج التجميعي للمستخدم النقر على أزرار متعددة داخل المقسم الواحد باستخدام زر Ctrl لتحديد كافة الفئات التي تمثل اتحاداً منطقياً لخياراته التفضيلية. ورغم أن هذا الحل يتطلب تخطيطاً مسبقاً لهيكلية البيانات، إلا أنه يمنح المستخدم النهائي تجربة استخدام بصرية سلسة تحاكي التصفية التبادلية متعددة المحاور بكفاءة عالية ودون كتابة أكواد برمجية معقدة.
6. استخدام نموذج البيانات ولغة DAX لتحقيق تصفية OR
6.1 ترحيل البيانات إلى Power Pivot و Data Model
مع تطور محركات البيانات في مايكروسوفت إكسل، أتاح Power Pivot ونموذج البيانات الداخلي (Data Model) إمكانات حوسبية متطورة تتفوق بشكل هائل على الجداول المحورية التقليدية. تكمن القوة الحقيقية لنموذج البيانات في اعتماده على المحرك الحسابي فائق السرعة VertiPaq، وهو محرك قواعد بيانات عمودي (Columnar In-Memory Engine) يقوم بضغط البيانات ومعالجة العلاقات الرياضية بين ملايين الصفوف بأجزاء من الثانية مع الحفاظ على كفاءة استهلاك الذاكرة العشوائية.
لترحيل المصفوفة البيانية إلى نموذج البيانات، نحدد جدول البيانات المصدرية ثم ننتقل إلى علامة التبويب Insert ونختار PivotTable، مع التأكد من تفعيل الخيار الحاسم الموجود في أسفل نافذة الإدراج: Add this data to the Data Model. بعد النقر على موافق، يتم استيراد البيانات إلى المحرك العلائقي الداخلي، مما يفتح الباب لاستخدام لغة تعبيرات تحليل البيانات (Data Analysis Expressions – DAX).
يوفر نموذج البيانات ميزة استثنائية تتمثل في إمكانية ربط جداول متعددة بعلاقات علائقية قائمة على المفاتيح الأساسية والخارجية (Primary & Foreign Keys)، مما يلغي الحاجة إلى دمج البيانات يدوياً، ويهيئ البيئة لتنفيذ عمليات التصفية المنطقية المتقدمة ديناميكياً على مستوى الذاكرة الحسابية دون تعديل الجدول المصدر إطلاقاً.

6.2 كتابة المقاييس المحسوبة (DAX Measures) بشرط OR
تُعد المقاييس المحسوبة (Measures) في لغة DAX الأداة الأكثر أناقة وقوة لمعالجة منطق التصفية المعقد؛ حيث لا تتطلب إضافة أعمدة جديدة تستهلك مساحة التخزين في ورقة العمل، بل يتم احتسابها ديناميكياً في لحظة طلب التقرير بناءً على سياق التقييم (Evaluation Context). لتحقيق تصفية OR التبادلية، نستخدم الدالة الأساسية CALCULATE مدمجة مع دالة FILTER والعامل المنطقي المزدوج (||) الذي يمثل صراحة شرط OR في قواعد لغة DAX.
لإنشاء المقياس المحسوب، ننقر بزر الفأرة الأيمن على اسم الجدول داخل قائمة حقول الجدول المحوري ونختار Add Measure، ثم نقوم بكتابة الصيغة الرياضية الاحترافية التالية:
Total Points (Mavs OR Guard) := CALCULATE(SUM(DataTable[Points Scored]), FILTER(DataTable, DataTable[Team] = “Mavs” || DataTable[Position] = “Guard”))
تقوم هذه الصيغة بتشريح سياق التصفية بدقة متناهية؛ حيث تقوم دالة FILTER بالمرور الافتراضي على جدول البيانات وفحص كل سجل بشكل مستقل، وتختبر ما إذا كان حقل [Team] يساوي “Mavs” أو حقل [Position] يساوي “Guard”. يتم تجميع كافة السجلات التي تفي بأحد هذين الشرطين في جدول افتراضي مؤقت في الذاكرة، ثم تتولى دالة CALCULATE استدعاء تعبير الجمع SUM لحساب إجمالي النقاط لتلك السجلات حصراً، متجاهلة أي قيود أخرى قد تتعارض مع هذا المنطق التبادلي.
6.3 عرض النتائج الديناميكية دون أعمدة مساعدة في المصدر
بمجرد حفظ المقياس المحسوب الجديد، يظهر كرمز مخصص بجانبه آلة حاسبة صغيرة داخل قائمة الحقول. نقوم بسحب هذا المقياس وإسقاطه في منطقة القيم (Values Area) داخل الجدول المحوري، بينما نضع حقول الأبعاد التحليلية مثل اسم اللاعب والفريق في منطقة الصفوف.
يقوم الجدول المحوري على الفور بعرض إجمالي النقاط المسجلة للاعبين المشمولين بشرط OR، بينما تظهر خلايا فارغة أو قيم صفرية أمام اللاعبين والفرق التي لا تحقق أياً من المعايير المحددة. لإخفاء الصفوف الفارغة وجعل التقرير مقتصراً على الفئات المؤهلة فقط، يمكن للمحلل النقر على السهم المنسدل بجانب عنوان الصفوف، واختيار Value Filters ثم تحديد Is Not Empty أو Greater Than 0.
تضمن هذه المنهجية المتقدمة بقاء جدول البيانات المصدرية نظيفاً وخالياً تماماً من أي معادلات أو أعمدة إضافية، وتوفر مرونة استثنائية لتعديل معايير التصفية بمجرد تعديل صيغة DAX البرمجية في ثوانٍ معدودة، مما يجعلها المنهجية المثالية للنماذج المالية وقواعد البيانات الضخمة التي تتطلب أعلى درجات الكفاءة والمرونة.
7. التصفية المتقدمة باستخدام محرر Power Query
7.1 استيراد البيانات وتحويلها عبر Power Query
يمثل محرر Power Query أداة الاستخراج والتحويل والتحميل (ETL) الرائدة المدمجة داخل مايكروسوفت إكسل، والتي توفر بيئة معالجة مسبقة متطورة لتنظيف وهيكلة البيانات قبل وصولها إلى ورقة العمل أو الجدول المحوري. تكمن الفائدة الجوهرية لاستخدام Power Query في نقل العبء الحسابي لعمليات التصفية والمنطق التبادلي بالكامل إلى محرك الاستعلام، مما يقلل من حجم الملف النهائي ويوفر استهلاك ذاكرة النظام بشكل ملحوظ.
لبدء المعالجة، نحدد جدول البيانات الأولي ثم ننتقل إلى علامة التبويب Data في شريط الأدوات العلوي وننقر على From Table/Range. تفتح لنا نافذة محرر Power Query المستقلة، حيث يتم عرض مصفوفة البيانات بصورة هيكلية نقية. نقوم بمراجعة أنواع البيانات وتأكيد نوع البيانات النصية لحقول النصوص والنوع العددي لحقول الأرقام، وإزالة أي أخطاء تنسيقية أو فراغات غير مرئية قد تؤثر على دقة المطابقة المنطقية.
تعتبر هذه المرحلة نقطة الانطلاق لتطبيق قواعد الأعمال المتقدمة بشكل دائم ومؤتمت؛ حيث يتم تسجيل كافة خطوات التحويل كمسار تسلسلي من التعليمات البرمجية التي يمكن إعادة تطبيقها تلقائياً على أي بيانات واردة مستقبلاً بنقرة زر واحدة.

7.2 إضافة عمود شرطي (Conditional Column) بمنطق OR
يتيح محرر Power Query للمستخدمين إضافة أعمدة منطقية جديدة إما عبر الواجهة الرسومية التفاعلية أو من خلال كتابة تعبيرات لغة الاستعلام المتقدمة M Language مباشرة. لإضافة العمود الشرطي التبادلي، ننتقل إلى علامة التبويب Add Column داخل محرر Power Query وننقر على Custom Column لفتح نافذة كتابة الصيغ البرمجية.
نقوم بتسمية العمود الجديد باسم Include_In_Pivot، ثم نكتب المعادلة المنطقية بلغة M بالصيغة التركيبية الدقيقة التالية:
if [Team] = “Mavs” or [Position] = “Guard” then 1 else 0
تتميز لغة M بحساسيتها لحالة الأحرف (Case Sensitivity)، ولذلك يجب كتابة الكلمات المفتاحية if و or و then و else بأحرف صغيرة، مع كتابة أسماء الحقول بدقة تامة داخل أقواس معقوفة. يقوم المحرك بتقييم هذا الشرط على كافة السجلات، فإذا تطابق أي من الشرطين يتم تعيين القيمة 1، وما عدا ذلك يتم تعيين القيمة 0.
يمكن للمحلل بعد ذلك تصفية هذا العمود الجديد مباشرة داخل Power Query باختيار القيمة 1 فقط قبل تحميل البيانات، مما يعني استبعاد السجلات غير المرغوبة نهائياً وتفريغ الذاكرة من البيانات غير الضرورية، أو إبقاء العمود كعلامة تصنيفية لتحميله إلى تقرير الجدول المحوري.
7.3 تحميل البيانات المجهزة إلى الجدول المحوري
بعد اكتمال بناء خطوات التصفية والتحويل المنطقي داخل المحرر، نتوجه إلى علامة التبويب Home وننقر على السهم المنسدل لزر Close & Load ونختار الأمر الاستراتيجي Close & Load To…. تظهر لنا نافذة خيارات التحميل المتقدمة، حيث نحدد الخيار PivotTable Report كوجهة نهائية للبيانات، مع إمكانية إضافة البيانات إلى نموذج البيانات إذا رغبنا في ذلك.
يتم إنشاء الجدول المحوري في ورقة العمل وربطه مباشرة باستعلام Power Query الخفي دون الحاجة لإنشاء جدول وسيط في خلايا إكسل العادية إذا تم اختيار ربط الاتصال فقط (Connection Only). نقوم بتوزيع الحقول في مناطق الصفوف والقيم، واستخدام العمود الشرطي الناتج كمرشح تصفية رئيسي.
تتميز هذه الطريقة بكفاءتها الهندسية الفائقة مقارنة بالصيغ المباشرة في ورقة العمل؛ حيث تضمن بقاء النموذج خفيفاً وسريع الاستجابة مهما زاد حجم السجلات، وكلما تمت إضافة بيانات جديدة إلى المصدر، يكفي النقر على خيار Refresh All ليعيد محرك Power Query تطبيق شرط OR وتحميل النتائج المحدثة إلى الجدول المحوري تلقائياً دون أي تدخل يدوي.
8. الأتمتة البرمجية باستخدام Visual Basic for Applications (VBA)
8.1 هيكلية كود VBA للتحكم في مرشحات PivotFilters
توفر بيئة التطوير المدمجة Visual Basic for Applications (VBA) أعلى مستويات التحكم البرمجي والأتمتة المخصصة داخل مايكروسوفت إكسل؛ حيث تتيح للمطورين تجاوز كافة القيود المفروضة في واجهات المستخدم الرسومية والتحكم في كائنات الجدول المحوري (PivotTables) وحقوله التابعة (PivotFields) وعناصره الفردية (PivotItems) على المستوى البرمجي الدقيق.
تعتمد هيكلية كود VBA في معالجة التصفية على الوصول إلى خاصية VisibleItems و PivotFilters داخل كل حقل بياني. نظراً لأن محرك إكسل لا يوفر كائناً برمجياً مستقلاً يدعى “OrFilter” يربط بين حقلين، فإن الخوارزمية البرمجية تعتمد على فحص مصفوفة البيانات، ومطابقة الشروط التبادلية منطقياً، ثم التحكم البرمجي في خاصية الإظهار والإخفاء (Item.Visible = True / False) لكل عنصر موجود في محاور الجدول المحوري.
تتطلب هذه البنية البرمجية فهماً عميقاً لكيفية التعامل مع أحداث ورقة العمل (Worksheet Events) وإدارة الذاكرة أثناء تنفيذ الحلقات التكرارية (Loops)، لضمان عدم تجميد الواجهة وتنفيذ عملية التصفية بسرعة فائقة حتى مع وجود آلاف العناصر الفرعية.

8.2 برمجة خوارزمية التصفية المخصصة بشرط OR
لبناء خوارزمية تصفية مخصصة تطبق منطق OR التبادلي بين حقلين مختلفين (مثل إظهار عناصر فريق Mavs أو مركز Guard)، نفتح محرر الأكواد عبر اختصار لوحة المفاتيح Alt + F11، وندرج وحدة نمطية جديدة (Standard Module)، ثم نكتب الإجراء البرمجي المتقدم التالي:
Sub Apply_OR_Filter_Pivot()
Dim pt As PivotTable
Dim wsSource As Worksheet, wsPivot As Worksheet
Dim lastRow As Long, i As Long
Dim dict As Object
Dim playerField As PivotField, pItem As PivotItem
Dim playerName As String, teamName As String, posName As String
On Error GoTo ErrorHandler
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set wsSource = ThisWorkbook.Sheets(“Data”)
Set wsPivot = ThisWorkbook.Sheets(“Report”)
Set pt = wsPivot.PivotTables(“PivotTable1”)
Set dict = CreateObject(“Scripting.Dictionary”)
lastRow = wsSource.Cells(wsSource.Rows.Count, “A”).End(xlUp).Row
For i = 2 To lastRow
teamName = wsSource.Cells(i, 1).Value
posName = wsSource.Cells(i, 2).Value
playerName = wsSource.Cells(i, 3).Value
If teamName = “Mavs” Or posName = “Guard” Then
If Not dict.Exists(playerName) Then dict.Add playerName, True
End If
Next i
pt.ManualUpdate = True
Set playerField = pt.PivotFields(“Player Name”)
playerField.ClearAllFilters
For Each pItem In playerField.PivotItems
If dict.Exists(pItem.Name) Then
pItem.Visible = True
Else
pItem.Visible = False
End If
Next pItem
pt.ManualUpdate = False
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Exit Sub
ErrorHandler:
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
MsgBox “حدث خطأ أثناء تطبيق التصفية: ” & Err.Description, vbCritical
End Sub
تعتمد هذه الخوارزمية على تقنية كائن القاموس (Scripting.Dictionary) لجمع أسماء اللاعبين المؤهلين بسرعة خاطفة (O(1) Lookup)، مع تعطيل تحديث الشاشة والحساب التلقائي لضمان تنفيذ الماكرو في أجزاء من الثانية دون أي وميض للشاشة، مما يمنح تجربة استخدام احترافية فائقة السرعة.
8.3 تصميم واجهة مستخدم تفاعلية لتعديل المعايير
لتمكين المستخدمين غير التقنيين من الاستفادة من هذه الأتمتة البرمجية دون الحاجة لفتح محرر VBA أو تعديل الأكواد، يتم تصميم واجهة تحكم مرئية بسيطة ومباشرة داخل ورقة العمل. نقوم بتخصيص خلايا معينة في واجهة التقرير لتكون مدخلات للمعايير المطلوبة، مثل الخلية E2 لتحديد الفريق المستهدف، والخلية E3 لتحديد المركز المستهدف.
يتم بعد ذلك تعديل كود الماكرو ليقرأ المعايير ديناميكياً من تلك الخلايا بدلاً من كتابتها الثابتة داخل النص البرمجي. كما نقوم بإدراج زر رسومي أنيق عبر قائمة Insert -> Shapes ونربط الزر بالماكرو المنفذ (Assign Macro) مع وضع تسمية توضيحية مثل “تطبيق شرط التصفية التبادلي”.
يمكن أيضاً ربط الكود بحدث تغيير ورقة العمل (Worksheet_Change Event) بحيث يتم تشغيل التصفية تلقائياً بمجرد اختيار المستخدم لقيمة جديدة من القوائم المنسدلة للتحكم، مع تضمين آليات معالجة أخطاء قوية تتحقق من وجود القيم المدخلة وتمنع حدوث انهيار برمجي في حال كانت خلايا الإدخال فارغة.
9. التعامل مع الشروط المعقدة والمتعددة الأبعاد
9.1 دمج شروط AND و OR المركبة في صيغة موحدة
في البيئات التحليلية والمالية المتقدمة، نادراً ما تأتي متطلبات الأعمال على هيئة شرط OR بسيط ومفرد؛ بل غالباً ما تتطلب النماذج دمج شروط تقاطع AND وشروط اتحاد OR ضمن منظومة منطقية هجينة ومتعددة الأبعاد. على سبيل المثال، قد يتطلب استعلام إداري تحديد كافة المبيعات التي تمت في منطقة “الشرق” وكان حجمها يفوق 5000 دولار، أو المبيعات التي تمت في منطقة “الغرب” وكان تقييم العميل فيها ممتازاً (Score = 5).
يتطلب بناء هذه الصيغ فهماً دقيقاً لأولويات التقييم المنطقي (Logical Precedence) واستخدام الأقواس الرياضية لعزل كل مجموعة تقييمية على حدة، وتأطير الصيغة بالشكل التالي:
=IF(OR(AND(Region=”East”, Sales>=5000), AND(Region=”West”, Rating=5)), “Show”, “Hide”)
تقوم هذه المعادلة الهندسية بتقييم كل كتلة AND مستقلة أولاً، فإذا أرجعت أي كتلة من الكتلتين القيمة TRUE، تلتقط دالة OR الخارجية هذه الإشارة الإيجابية فوراً لتمنح السجل تصنيف “Show”. يتيح هذا النمط التوليفي بناء مصفوفات تصفية بالغة التعقيد تشمل متغيرات زمنية (مثل نطاقات التواريخ) ومؤشرات رقمية وشروطاً نصية في سياق موحد وقابل للتطبيق داخل الجدول المحوري بكل سهولة.
9.2 معالجة القيم النصية الحساسة لحالة الأحرف والمسافات
تُعد مشكلات جودة البيانات النصية المصدرية من أكبر التحديات التي تؤدي إلى فشل الصيغ المنطقية وشروط التصفية في إكسل. تحتوي النصوص المستخرجة من أنظمة تخطيط موارد المؤسسات (ERP Systems) أو قواعد بيانات الويب في كثير من الأحيان على مسافات بادئة أو لاحقة غير مرئية، أو رموز تحكم مخفية مثل الفواصل غير المنقسمة (Non-breaking Spaces: CHAR 160)، مما يتسبب في فشل مطابقة A2=”Mavs” نظراً لأن القيمة الفعلية قد تكون “Mavs “.
لضمان صلابة الشرط المنطقي، يجب دمج دالة تنظيف المسافات TRIM ودالة إزالة الرموز غير القابلة للطباعة CLEAN داخل التحقق المنطقي، لتصبح الصيغة:
=IF(OR(TRIM(CLEAN(A2))=”Mavs”, TRIM(CLEAN(B2))=”Guard”), “Show”, “Hide”)
وفي الحالات النادرة التي تتطلب فيها معايير الأعمال مطابقة حساسة لحالة الأحرف باللغة الإنجليزية (Case-Sensitive Filtering)، حيث تختلف “MAVS” عن “Mavs”، يتم استبدال عامل المساواة العادي بدالة المطابقة الحرفية الصارمة EXACT عبر الصيغة: =IF(OR(EXACT(A2, “Mavs”), EXACT(B2, “Guard”)), “Show”, “Hide”)، مما يضمن دقة استخراج البيانات وفق المعايير المؤسسية الأكثر صرامة.
9.3 إدارة القيم الفارغة (Nulls) والأخطاء الحسابية
يؤدي وجود قيم مفقودة (Missing Values) أو أخطاء حسابية ناجمة عن صيغ سابقة مثل (#N/A أو #VALUE! أو #DIV/0!) داخل مصفوفة البيانات المصدرية إلى توقف وتقطع تقييم دالة OR المنطقية بالكامل؛ إذ يؤدي اختبار شرط على خلية تحتوي على خطأ حسابي إلى إرجاع الخطأ ذاته وتعطيل تصنيف الصف بالكامل.
ولمعالجة هذه الإشكالية وحماية الجدول المحوري من الانهيار التحليلي، يتم تطويق الشروط المنطقية بدالة معالجة الأخطاء IFERROR أو استخدام دوال التحقق المسبق مثل ISNUMBER و ISTEXT، كما يوضح النموذج التالي:
=IFERROR(IF(OR(A2=”Mavs”, B2=”Guard”), “Show”, “Hide”), “Hide”)
تضمن هذه الصياغة الوقائية أنه في حال وجود أي عطب أو خطأ في أي خلية ضمن الصف المفحوص، ستقوم الدالة بتجاوز الخطأ بسلاسة وتعيين تصنيف “Hide” تلقائياً بدلاً من تصدير رمز الخطأ إلى الجدول المحوري، مما يحافظ على التماسك البصري والحسابي للتقرير النهائي ويضمن استقرار تدفق البيانات المؤتمتة.
10. تحليل الأداء وقابلية التوسع في مجموعات البيانات الكبيرة
10.1 التأثير الحسابي للأعمدة المساعدة على حجم الملف
على الرغم من البساطة والجاذبية الكبيرة لمنهجية الأعمدة المساعدة، إلا أن تطبيقها على مجموعات البيانات الضخمة (Big Datasets) التي تتجاوز مئات الآلاف أو ملايين الصفوف يفرض أعباءً حسابية ملحوظة على موارد الجهاز وحجم ملف العمل. تتسبب إضافة أعمدة تحتوي على صيغ مكررة في زيادة حجم ملف إكسل (.xlsx) بشكل كبير على القرص الصلب وزيادة استهلاك الذاكرة العشوائية (RAM) أثناء فتح الملف ومعالجته.
تتضاعف هذه المشكلة إذا تم استخدام ما يُعرف بالدوال المتطايرة (Volatile Functions) مثل OFFSET أو TODAY أو NOW داخل صيغة التحقق المنطقي؛ حيث تجبر هذه الدوال إكسل على إعادة احتساب جميع الصفوف في كل مرة يقوم فيها المستخدم بإجراء أي تعديل في أي خلية داخل المصنف بالكامل، مما يسبب بطئاً وتجميداً مؤقتاً للبرنامج.
لتقليل العبء الحسابي، يُنصح دوماً باستخدام دوال غير متطايرة مثل IF و OR الأساسية، أو استبدال الصيغ النصية بمخرجات رقمية ثنائية (1 و 0) التي تشغل مساحة تخزينية أقل في الذاكرة المؤقتة، أو تحويل نتائج الأعمدة المساعدة إلى قيم ثابتة (Paste Special -> Values) إذا كانت البيانات المصدرية تاريخية ولا تتطلب تحديثاً مستمراً.
10.2 مقارنة معيارية بين الحلول الأربعة (Helper vs DAX vs PQ vs VBA)
يتطلب اتخاذ القرار الهندسي السليم لاختيار منهجية التصفية التبادلية المفاضلة الدقيقة بين الخيارات التقنية الأربعة المتاحة بناءً على معايير الحجم، والسرعة، وسهولة الصيانة، ومستوى كفاءة المستخدم، كما يوضح الجدول التحليلي التالي:
- الأعمدة المساعدة (Helper Columns):
- سهولة الإعداد: فائقة ومناسبة لجميع مستويات المستخدمين.
- كفاءة الأداء: ممتازة في البيانات الصغيرة والمتوسطة (< 100 ألف صف)، تنخفض مع الجداول المليونية.
- سرعة التحديث: لحظية وتلقائية عند تعديل البيانات.
- أفضل استخدام: التقارير السريعة والتحليلات اليومية المباشرة.
- لغة DAX ونموذج البيانات (Power Pivot):
- سهولة الإعداد: تتطلب معرفة جيدة بلغة DAX ومفاهيم سياق التصفية.
- كفاءة الأداء: استثنائية وفائقة السرعة حتى مع ملايين الصفوف بفضل محرك VertiPaq.
- سرعة التحديث: فائقة ولا تزيد من حجم الملف المصدر.
- أفضل استخدام: النماذج المؤسسية الكبيرة ولوحات المعلومات التفاعلية المتقدمة.
- محرر Power Query:
- سهولة الإعداد: متوسطة وتعتمد على واجهة مرئية قوية مع لغة M.
- كفاءة الأداء: ممتازة نظراً لمعالجة وتصفية البيانات قبل تحميلها للذاكرة.
- سرعة التحديث: تتطلب النقر على زر تحديث البيانات (Refresh).
- أفضل استخدام: عمليات تنظيف البيانات المستوردة من مصادر خارجية وأنظمة ERP.
- الأتمتة عبر البرمجة (VBA):
- سهولة الإعداد: تتطلب مهارات برمجية متقدمة في كتابة الأكواد وتصحيحها.
- كفاءة الأداء: سريعة جداً عند تحسين الأكواد ولكنها تعتمد على سرعة المعالج.
- سرعة التحديث: يدوية أو مرتبطة بأحداث أزرار الواجهة.
- أفضل استخدام: أتمتة التقارير المتكررة للواجهات غير التقنية وتطبيقات إكسل المخصصة.
11. استكشاف الأخطاء الشائعة وحلولها التقنية
11.1 معالجة مشكلة عدم ظهور العمود المساعد في قائمة الحقول
تُعد مشكلة عدم ظهور العمود المساعد الجديد ضمن قائمة حقول الجدول المحوري (PivotTable Fields List) بعد إنشائه في جدول البيانات من أكثر المشكلات التقنية شيوعاً وإحباطاً للمستخدمين. يعود السبب الرئيسي وراء ذلك إلى أن الذاكرة المؤقتة (Pivot Cache) للجدول المحوري تظل محتفظة بالنطاق الجغرافي القديم للبيانات ولا تدرك تلقائياً إضافة أعمدة جديدة في أطراف الجدول التقليدي.
لحل هذه الإشكالية، يجب اتباع الخطوات التصحيحية التالية:
- النقر داخل أي خلية في الجدول المحوري ثم الانتقال إلى علامة التبويب PivotTable Analyze في الشريط العلوي.
- النقر على زر Change Data Source والتأكد من إعادة تحديد كامل نطاق البيانات ليشمل العمود الجديد من أول صف إلى آخره.
- إذا كانت البيانات محولة إلى جدول مهيكل (Excel Table)، يكفي النقر على زر Refresh فقط لتحديث الذاكرة المؤقتة وإدراج الحقل فورياً.
- التحقق من أن رأس العمود المساعد يحتوي على اسم نصي فريد وغير فارغ؛ حيث يتجاهل محرك إكسل أي أعمدة جديدة ذات عناوين فارغة ويرفض إضافتها لقائمة الحقول.
11.2 تصحيح الأخطاء المنطقية في دالة التصفية
قد يواجه المحلل في بعض الأحيان موقفاً تظهر فيه نتائج غير متوقعة، مثل تصنيف سجلات بالرمز “Hide” على الرغم من أنها تحقق شرط OR ظاهرياً، أو العكس بظهور سجلات يفترض استبعادها. تعود هذه الأخطاء المنطقية غالباً إلى عدم تطابق الأنواع البيانية (Data Type Mismatch) أو مشكلات التنسيق غير المرئي.
ومن أبرز أسباب هذه الأخطاء تخزين الأرقام كنصوص؛ فإذا كان الشرط يختبر Points > 100 وكانت القيمة في الخلية مسجلة كنص “100” مسبوقة بفاصلة عليا، فإن اختبار المقارنة الرياضية سيفشل. لتصحيح ذلك، يُنصح باستخدام أدوات تصحيح الأخطاء المدمجة في إكسل عبر الانتقال إلى علامة التبويب Formulas ثم النقر على Evaluate Formula. تتيح هذه الأداة تتبع خطوات تقييم الصيغة خطوة بخطوة ورؤية النتائج المرحلية لكل شرط فرعي، مما يكشف بدقة عن النقطة التي حدث فيها الانحراف المنطقي وتصحيحها فورياً.
11.3 معالجة تعارض الفلاتر المتعددة داخل التقرير
عندما يتم تطبيق مرشح التقرير القائم على شرط OR بالتزامن مع وجود عوامل تصفية يدوية سابقة مطبقة على حقول الصفوف أو الأعمدة، قد يحدث ما يُعرف بتضارب الفلاتر (Filter Conflict)، مما يؤدي إلى حجب بيانات صحيحة أو إفراغ الجدول المحوري بالكامل من الأرقام دون قصد.
تتضمن معالجة هذا التعارض الدخول إلى خيارات الجدول المحوري بالنقر بزر الفأرة الأيمن واختيار PivotTable Options، ثم الانتقال إلى علامة التبويب Data والتأكد من ضبط خيار Number of items to retain per field على الخيار None بدلاً من Automatic؛ حيث يضمن هذا الإعداد التخلص التام من العناصر الشبحية المحذوفة من المصدر وعدم بقائها في قوائم التصفية القديمة. كما يجب النقر على زر Clear Filters لإلغاء أي تصفية متداخلة وإعادة تفعيل مرشح OR حصرياً لضمان اتساق النتائج المعروضة.
12. إطار عمل تطبيقي مهني وحوكمة النماذج التحليلية
12.1 معايير اختيار المنهجية الأنسب للمؤسسات
تتطلب حوكمة العمليات التحليلية داخل المؤسسات والشركات الكبرى تبني معايير موحدة ومنهجية صارمة عند اختيار الحلول التقنية لتصفية البيانات. لا يقتصر الاختيار على المعيار الفني البحت، بل يمتد ليشمل تقييم مستوى مهارة الفريق المعني بتشغيل وصيانة النماذج؛ فاستخدام حلول برمجية معقدة مثل VBA أو DAX المتقدمة في فرق تفتقر للمهارات البرمجية قد يؤدي إلى تعطيل العمليات وتوقف التقارير الحيوية في حال غياب المطور المسؤول.
كما يجب مراعاة متطلبات الأمان والتوافقية المؤسسية؛ حيث تفرض العديد من الشركات سياسات أمان صارمة تعطل تشغيل ملفات الماكرو (Macro-Enabled Files .xlsm) لمنع التهديدات السيبرانية، مما يجعل منهجيات الأعمدة المساعدة أو Power Query الخيار الأكثر أماناً وموثوقية للتداول بين الأقسام والفروع دون أي قيود أمنية.
12.2 توثيق العمليات والحفاظ على قابلية التدقيق (Auditability)
تُعد قابلية التدقيق (Auditability) ركيزة أساسية في بناء النماذج المالية والتشغيلية المعتمدة لدى إدارات المراجعة الداخلية والجهات الرقابية. يجب توثيق كل خطوة تم اتخاذها لتطبيق شرط التصفية التبادلي OR بشكل واضح وشفاف داخل مصنف العمل.
يتضمن ذلك إضافة تعليقات توضيحية (Cell Comments/Notes) تشرح بنية الصيغ المنطقية المعتمدة في الأعمدة المساعدة، وإنشاء ورقة عمل مخصصة في بداية الملف تسمى “Documentation” أو “دليل النموذج”، يتم فيها تسجيل معايير التصفية، والغرض التحليلي من استخراج كل فئة، وتاريخ آخر تحديث، ومصدر البيانات الأصلي. يسهل هذا التوثيق المؤسسي مهمة المدققين والمراجعين في التحقق من سلامة الأرقام المعروضة والتأكد من خلوها من أي تحيز إحصائي أو احتساب مزدوج.
12.3 بروتوكول الصيانة الدورية لنماذج التقارير التفاعلية
لضمان استمرار عمل النماذج التحليلية بدقة لا تلين على المدى الطويل، يجب وضع بروتوكول صيانة دوري يلتزم به فريق التحليل. يشمل هذا البروتوكول جدولة اختبارات دورية لمرونة النماذج عند إضافة فئات جديدة أو تغيير هيكل الحسابات في الأنظمة المصدرية، والتحقق المستمر من أن منطق OR لا يزال يعكس الأهداف الاستراتيجية المتغيرة للتقرير.
كما يتضمن البروتوكول تنظيف الحقول المؤقتة غير المستخدمة، ومراجعة اتصالات البيانات ومسارات استعلامات Power Query، وإعادة ضبط نطاقات التسميات لضمان أقصى سرعة استجابة ممكنة، مما يجعل منظومة التقارير المحورية أداة قرار موثوقة ومستدامة تدعم مسيرة النمو المؤسسي بثقة واقتدار.
خاتمة
في الختام، يظهر لنا بوضوح أن التحدي البنيوي المتمثل في عجز الجداول المحورية القياسية في إكسل عن تطبيق شرط التصفية التبادلي (OR Logic) عبر الحقول المختلفة لا يشكل نهاية المطاف للمحلل المحترف، بل يمثل فرصة لتطبيق التفكير الهندسي واختيار الأداة الأكثر كفاءة من ترسانة إكسل المتقدمة. لقد استعرضنا بالتفصيل المنهجيات المتعددة بدءاً من الأعمدة المساعدة والصيغ المنطقية المركبة التي توفر حلاً سريعاً وسلساً، مروراً بمقاسم البيانات ولغة DAX ونموذج البيانات فائق السرعة، ووصولاً إلى قوة محرر Power Query والأتمتة البرمجية عبر VBA.
إن إتقان هذه المنهجيات والجمع بين الدقة الرياضية وأفضل ممارسات الحوكمة يضمن للمحلل المالي والإداري القدرة على استخراج أدق الرؤى من أعقد البيانات، وتجاوز أي قيود تقنية بكل مرونة واحترافية، مما يعزز جودة القرارات الإدارية ويدفع بالأداء المؤسسي نحو آفاق جديدة من التميز والريادة.
المراجع
- Alexander, M., & Kusleika, D. (2020). Excel 2019 Bible. John Wiley & Sons. https://www.wiley.com/en-us/Excel+2019+Bible-p-9781119514787
- Ferrari, A., & Russo, M. (2016). The Definitive Guide to DAX: Business intelligence with Microsoft Excel, SQL Server Analysis Services, and Power BI. Microsoft Press. https://www.microsoftpressstore.com/store/definitive-guide-to-dax-business-intelligence-with-9781509306978
- Microsoft Support. (2023). Create a PivotTable to analyze worksheet data. Microsoft. https://support.microsoft.com/en-us/office/create-a-pivottable-to-analyze-worksheet-data-a9a84538-bfe9-40a9-a8e9-f99134456576
- Microsoft Support. (2023). IF function – Microsoft Support. Microsoft. https://support.microsoft.com/en-us/office/if-function-69aed7c9-4e8a-4755-a9bc-aa8bbff73be2
- Microsoft Support. (2023). Use Slicers to filter data. Microsoft. https://support.microsoft.com/en-us/office/use-slicers-to-filter-data-249f9629-cd47-47be-a058-00fc6888b037
- Puls, K. (2021). Master Your Data with Power Query in Excel and Power BI. Holy Macro! Books. https://www.mrexcel.com/products/master-your-data-with-power-query-in-excel-and-power-bi/
- Walkenbach, J. (2015). Excel VBA Programming For Dummies (4th ed.). John Wiley & Sons. https://www.wiley.com/en-us/Excel+VBA+Programming+For+Dummies%2C+4th+Edition-p-9781119077398