تحليل البياناتتطبيقات مكتبية

كيفية حساب عدد الصفوف المفلترة في إكسيل (مع مثال)

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

تاريخ النشر

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

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

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

1. مقدمة منهجية حول معالجة البيانات وتصفيتها في مايكروسوفت إكسيل

1.1 أهمية التحليل الكمي للبيانات المصنفة والمفلترة

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

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

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

1.2 طبيعة عمل مرشحات إكسيل (AutoFilter) على مستوى البنية التحتية للخلايا

عند تفعيل أداة التصفية التلقائية (AutoFilter) في إكسيل، لا يقوم المحرك البرمجي بإعادة هيكلة مصفوفة البيانات أو نقل السجلات المستبعدة إلى جداول مؤقتة، بل يتدخل مباشرة في نموذج كائن ورقة العمل (Worksheet Object Model) عبر تعديل خاصية ارتفاع الصف (RowHeight) ليصبح مساوياً للصفر (0)، أو تفعيل خاصية الإخفاء التلقائي (Hidden = True) على مستوى الكائن Range.Rows.

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

يتعامل محرك الحساب الداخلي (Calculation Engine) لإكسيل مع مراجع النطاقات مثل A2:A100 بوصفها متجهات مصفوفية متصلة بغض النظر عن حالتها البصرية، حيث يتم إرسال كافة مصفوفات العناوين إلى الذاكرة المؤقتة. هذا السلوك المعماري يحافظ على سرعة المعالجة واستقرار الروابط التشعبية، ولكنه يشكل العائق الرئيسي أمام الدوال الإحصائية التقليدية التي تفتقر إلى خوارزميات داخلية لفحص حالة البت (Bit flag) الخاص برؤية الصف قبل إدراجه في العملية الحسابية.

2. القصور الهيكلي للدوال التقليدية مثل COUNT و COUNTA مع البيانات المفلترة

2.1 آلية عمل دالة COUNT الكلاسيكية وأسباب عجزها عن استبعاد الصفوف المخفية

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

يؤدي هذا القصور الهيكلي إلى إدراج جميع الأرقام المتواجدة في الصفوف المخفية آلياً عبر التصفية ضمن النتيجة النهائية؛ فإذا كان الجدول يحتوي على 100 صف، وتمت تصفيتها لتظهر 10 صفوف فقط، فإن المعادلة =COUNT(A2:A101) ستظل ترجع القيمة 100 كاملة دون أدنى اعتبار لحالة التصفية المطبقة. يوضح الشكل التالي هذا السلوك الذي يمثل فخاً تحليلياً شائعاً يقع فيه الكثير من المستخدمين عند بناء لوحات المعلومات التفاعلية.

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

2.2 سلوك دالة COUNTA ومحدوديتها في العد الانتقائي

تتطابق دالة COUNTA في قصورها البنيوي مع دالة COUNT، مع فارق وحيد يتمثل في اتساع نطاق تقييمها ليشمل كافة الخلايا غير الفارغة (Non-empty Cells)، أي أنها تحسب الخلايا التي تحتوي على نصوص، أو أرقام، أو قيم منطقية (Boolean)، أو حتى رسائل الأخطاء الرياضية (Error Values). وبالتالي، فإن تمرير نطاق يحتوي على نصوص مبيعات مفلترة إلى الدالة COUNTA(B2:B101) سيسفر عن النتيجة الإجمالية للنطاق كاملاً.

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

يبرز هذا الواقع التقني حاجة ماسة إلى تبني صياغات رياضية متقدمة تمتلك القدرة على قراءة مصفوفة “حالة الظهور” (Visibility Vector) جنباً إلى جنب مع مصفوفة “القيم المخزنة” (Value Vector)، وهي السمة التي تفتقر إليها الدوال الأساسية وتوفرها الأدوات المصممة خصيصاً للمجاميع الجزئية والتحليلات المتكيفة.

3. التأصيل الرياضي والبرمجي لدالة SUBTOTAL في بيئة إكسيل

3.1 التعريف التقني والوظيفة الأساسية لدالة SUBTOTAL

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

SUBTOTAL(function_num, ref1, [ref2], ...)

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

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

3.2 التصنيف الرياضي لمعاملات التعيين الوظيفي (Function_num)

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

  • السلسلة الأحادية والثنائية (1 إلى 11): تغطي العمليات الإحصائية والحسابية الأساسية مثل المتوسط (1)، والعد الرقمي (2)، والعد الشامل (3)، والقيمة العظمى (4)، والقيمة الصغرى (5)، وحاصل الجمع (9). تقوم هذه السلسلة بتجاهل الصفوف المخفية الناتجة عن عمليات التصفية التلقائية (AutoFilter)، لكنها تحتسب الصفوف التي تم إخفاؤها يدوياً من قبل المستخدم عبر النقر بزر الفأرة الأيمن واختيار إخفاء (Hide).
  • السلسلة المئوية (101 إلى 111): تمثل النمط الحصري المشدد؛ حيث تقابل كل رقم في السلسلة الأولى بنظيره المئوي (مثل 102 للعد الرقمي، و103 للعد الشامل، و109 للجمع). تتجاهل هذه السلسلة كافة الصفوف غير المرئية أياً كان سبب استبعادها، سواء تم ذلك عبر مرشحات التصفية التلقائية أو من خلال الإخفاء اليدوي للصفوف.

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

4. التحليل المقارن بين الثوابت الوظيفية: الرقم 3 مقابل الرقم 103

4.1 الخصائص التشغيلية للثابت الوظيفي 3 (COUNTA القياسي)

عند تعيين المعامل function_num بالقيمة 3، تتحول دالة SUBTOTAL إلى أداة لعد كافة الخلايا غير الفارغة مع تفعيل بروتوكول التصفية القياسي. في هذه الحالة، تتفحص الدالة كل صف ضمن النطاق الممرر؛ فإذا وُجد أن الصف قد تم إخفاؤه بواسطة مرشح التصفية التلقائية (Filter Rule)، يتم استبعاده فوراً من الحساب المصفوفي للنتيجة.

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

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

4.2 الخصائص التشغيلية المتقدمة للثابت الوظيفي 103 (COUNTA الحصري للخلايا المرئية)

يُمثل الثابت الوظيفي 103 التجسيد الهندسي الصارم لمفهوم “حساب ما تراه العين فقط” (WYSIWYG – What You See Is What You Count). عند استخدام الصيغة =SUBTOTAL(103, Range)، يفرض محرك إكسيل رقابة مزدوجة على كل خلية في النطاق المحدد، متأكداً من عدم خضوعها لأي شكل من أشكال الاستبعاد البصري، سواء كان ناتجاً عن تصفية تلقائية، أو إخفاء يدوي، أو تجميع هيكلي للمخططات التفصيلية (Outlining/Grouping).

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

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

4.3 دراسة مقارنة بين الثابت 2 والثابت 102 في العد الرقمي الصرف

في مقابل الثوابت 3 و103 الموجهة للنصوص والبيانات العامة، تبرز الثوابت 2 و102 كمعاملات متخصصة في العد الرقمي الصرف، بما يوازي سلوك دالة COUNT الكلاسيكية ولكن مع دعم كامل لحالة الرؤية. يقوم الثابت 2 بحساب الخلايا الرقمية مع استبعاد الصفوف المفلترة، بينما يقوم الثابت 102 باستبعاد الصفوف المفلترة والمخفية يدوياً في آن واحد.

تظهر الأهمية التطبيقية لاستخدام 102 بدلاً من 103 عند التعامل مع أعمدة هجينة تحتوي على قيم رقمية تتخللها تعليقات نصية توضيحية أو ملاحظات جودة مثل “قيد المراجعة” أو “غير متوفر”. في هذا السيناريو، سيقوم المعامل 103 باحتساب تلك النصوص ضمن عدد السجلات باعتبارها خلايا غير فارغة، بينما يقتصر المعامل 102 على حساب السجلات التي تحتوي على بيانات مالية أو كمية فعلية قابلة للمعالجة الرياضية.

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

المعامل الوظيفي الدالة المكافئة نوع البيانات المقبولة استبعاد التصفية التلقائية استبعاد الإخفاء اليدوي
2 COUNT أرقام وتواريخ فقط نعم لا
3 COUNTA كافة البيانات غير الفارغة نعم لا
102 COUNT أرقام وتواريخ فقط نعم نعم
103 COUNTA كافة البيانات غير الفارغة نعم نعم

5. الإعداد الإجرائي لمجموعة البيانات وتطبيق التصفية التلقائية (AutoFilter)

5.1 هيكلة وتجهيز جدول البيانات الأكاديمي

تتطلب المعالجة الإحصائية الدقيقة للبيانات في إكسيل الالتزام بقواعد الهيكلة المعيارية للبيانات المجدولة (Tabular Data Structure). يجب أن يحتوي الجدول على صف ترويسة أحادي وفريد (Single Header Row) يوضح بدقة طبيعة المتغير الموجود في كل عمود (مثل “التاريخ”، “مندوب المبيعات”، “المنطقة”، “القيمة الإجمالية”)، مع تجنب دمج الخلايا في الترويسات نهائياً لما يسببه ذلك من خلل بنيوي في محاذاة الفلاتر البرمجية.

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

من الضروري توحيد التنسيقات البيانية داخل كل عمود على حدة؛ فالأعمدة المخصصة للتواريخ يجب أن تُنسق بصيغة تاريخ موحدة ومعتمدة برمجياً (مثل YYYY-MM-DD)، والأعمدة الرقمية يجب تنظيفها من أي رموز نصية أو مسافات خفية تمنع محرك التصفية من التعرف عليها كأرقام كمية صحيحة، مما يضمن تدفقاً سلساً لعمليات الفرز والعد اللاحقة.

5.2 تفعيل وإدارة أدوات التصفية في واجهة إكسيل

لتفعيل أداة التصفية التلقائية على الجدول المهيكل، يتم تحديد أي خلية مفردة تقع داخل نطاق البيانات، ثم التوجه إلى شريط الأدوات الرئيسي (Ribbon)، واختيار تبويب بيانات (Data)، ثم النقر على أيقونة تصفية (Filter) ضمن مجموعة “فرز وتصفية”. كما يمكن للمحترفين استخدام الاختصار اللوحي المباشر والأكثر كفاءة: Ctrl + Shift + L في بيئات ويندوز، والذي يقوم بالتبديل الفوري لحالة التصفية على النطاق النشط.

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

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

6. التطبيق العملي: حساب عدد الصفوف المفلترة خطوة بخطوة مع مثال واقعي

6.1 بناء النموذج التطبيقي: بيانات مبيعات شهرية عبر تواريخ مختلفة

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

  • الخلية A1: ترويسة العمود الأول “الشهر” (Month) | الخلية B1: ترويسة العمود الثاني “المبيعات” (Sales)
  • الصفوف من A2:B4: تحتوي على سجلات مبيعات شهر “يناير” (January) بقيم مختلفة.
  • الصفوف من A5:B7: تحتوي على سجلات مبيعات شهر “فبراير” (February).
  • الصفوف من A8:B10: تحتوي على سجلات مبيعات شهر “مارس” (March).
  • الصفوف من A11:B13: تحتوي على سجلات مبيعات شهر “أبريل” (April).

الآن، سنقوم بتطبيق تصفية مخصصة عبر النقر على سهم التصفية في الخلية A1، وإلغاء تحديد خيار “تحديد الكل”، ثم اختيار شهري يناير (January) وأبريل (April) فقط. فور تطبيق هذا المعيار، ستختفي صفوف شهري فبراير ومارس من واجهة العرض، وتتحول أرقام الصفوف الظاهرة (2، 3، 4، 11، 12، 13) إلى اللون الأزرق، مما يعكس بوضوح أن النطاق المرئي الحالي يحتوي على 6 صفوف بيانية فقط من أصل 12 صفاً كلياً.

6.2 كتابة الصيغة الحسابية وتحليل النتائج

لحساب عدد المعاملات المفلترة الظاهرة على الشاشة بدقة، سنقوم بكتابة المعادلة التالية في خلية مخصصة خارج نطاق التصفية المباشر:

=SUBTOTAL(103, A2:A13)

بمجرد الضغط على مفتاح الإدخال Enter، سيُرجع إكسيل فوراً القيمة 6. يُفسر المحرك البرمجي هذه المعادلة كالتالي: يقوم الثابت 103 بتوجيه إكسيل لاستخدام خوارزمية COUNTA مع فحص بت الرؤية لكل صف بين A2 و A13؛ وعند اكتشاف أن الصفوف من 5 إلى 10 ذات ارتفاع يساوي صفراً وموسومة بحالة إخفاء، يتم إقصاؤها تماماً من العداد، وتقتصر المعالجة على الخلايا المرئية فقط.

في المقابل، لو قمنا بتطبيق المعادلة التقليدية =COUNTA(A2:A13) أو =COUNT(B2:B13) على نفس النطاق المفلتر، لكانت النتيجة 12، وهي نتيجة مضللة إحصائياً لأنها تفترض استمرار وجود صفقات شهري فبراير ومارس ضمن التحليل الحالي، مما يبرهن بوضوح على التفوق التقني والحتمي لدالة SUBTOTAL في البيئات التفاعلية.

6.3 الموضع المثالي لكتابة معادلة SUBTOTAL في ورقة العمل

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

لتفادي هذا الخلل البنيوي، تبرز ثلاث ممارسات معيارية لتثبيت موضع دالة الحساب التلخيصي:

  1. أعلى الجدول (Top-Header Placement): إدراج صفوف مخصصة للمؤشرات الإحصائية فوق صف الترويسة الرئيسي (مثل الصفوف 1 و 2)، وتثبيت تلك الصفوف باستخدام خاصية “تجميد الألواح” (Freeze Panes)، مما يضمن بقاء العدادات ظاهرة دائماً أثناء التمرير الرأسي والتصفية.
  2. الجداول الرسمية الذكية (Excel Tables): تحويل النطاق إلى جدول رسمي بالضغط على Ctrl + T، ثم تفعيل خاصية “صف الإجمالي” (Total Row) من تبويب تصميم الجدول. يقوم إكسيل في هذه الحالة بإنشاء معادلة SUBTOTAL محمية برمجياً تتكيف تلقائياً مع الفلاتر وتظل ثابتة في نهاية الجدول.
  3. ورقة تقارير منفصلة (Dedicated KPI Sheet): ربط المعادلات التلخيصية بصفحة مخصصة للوحة التحكم، حيث تشير الدالة إلى نطاق البيانات في ورقة العمل الأخرى مثل: =SUBTOTAL(103, DataSheet!A2:A1000).

7. توظيف دالة AGGREGATE كبديل متقدم وشامل لحساب الصفوف المفلترة

7.1 البنية البرمجية لدالة AGGREGATE ومزاياها المتفوقة

تم تقديم دالة AGGREGATE بدءاً من إصدار Microsoft Excel 2010 لتمثل طفرة هندسية تتجاوز القيود الوظيفية لدالة SUBTOTAL. تمتلك دالة AGGREGATE القدرة على تنفيذ 19 عملية رياضية وإحصائية مختلفة، مع تزويد المحلل بخيارات متقدمة لمعالجة الشواذ البرمجية عبر بنيتها النحوية المتطورة:

AGGREGATE(function_num, options, ref1, [ref2], ...)

الميزة الأكثر قوة في دالة AGGREGATE هي قدرتها على تجاهل رسائل الأخطاء الحسابية (مثل #N/A, #VALUE!, #DIV/0!) بالتزامن مع تجاهل الصفوف المخفية. فبينما تتوقف دالة SUBTOTAL عن العمل وتُرجع رسالة خطأ إذا احتوت خلية واحدة فقط في النطاق على خطأ، تستطيع AGGREGATE تخطي تلك الأخطاء وسرد النتائج الإحصائية بدقة متناهية دون انقطاع، مما يجعلها الخيار المثالي لبيئات معالجة البيانات الخام غير المنقحة بالكامل.

7.2 صياغة معادلة العد المفلتر باستخدام دالة AGGREGATE

لإجراء عملية عد شاملة للسجلات غير الفارغة المفلترة مع تحصين المعادلة ضد رسائل الأخطاء البرمجية والصفوف المخفية يدوياً، نستخدم التركيب الرياضي التالي:

=AGGREGATE(3, 5, A2:A100) أو =AGGREGATE(3, 7, A2:A100)

يقوم المعامل الأول 3 بتحديد وظيفة العد الشامل COUNTA. أما المعامل الثاني فيمثل مفتاح التحكم في خيارات التجاهل (Options)؛ حيث يوجه الخيار 5 الدالة لتجاهل الصفوف المخفية فقط، بينما يوجه الخيار 7 الدالة لتجاهل الصفوف المخفية وقيم الأخطاء الحسابية معاً. يضمن هذا التركيب الرياضي المتين استخراج إجمالي الصفوف المفلترة حتى في أصعب السيناريوهات البرمجية التي تنهار فيها الدوال الكلاسيكية.

8. العد المشروط المتقدم للصفوف المفلترة باستخدام SUMPRODUCT و SUBTOTAL

8.1 التحدي التقني: العد بشرط إضافي ضمن النطاق المفلتر بالفعل

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

يتطلب تجاوز هذا التحدي بناء مصفوفة منطقية مركبة تدمج بين التحقق من صحة الشرط الموضوعي (Logical Criteria) والتحقق من حالة الظهور البصري لكل صف على حدة. وبما أن دالة SUBTOTAL المنفردة لا تقبل تمرير شروط منطقية في معاملاتها، فإن الحل يكمن في دمجها داخل محرك الضرب المصفوفي الجبري للدالة الشهيرة SUMPRODUCT مدعومة بدالة الإزاحة المرجعية OFFSET.

8.2 بناء الصيغة المصفوفية المركبة عبر دمج SUMPRODUCT و OFFSET

تُعد الصيغة التالية واحدة من أعمق التركيبات المصفوفية كفاءة في إكسيل لحساب عدد الخلايا التي تستوفي شرطاً معيناً (مثلاً: القيمة أكبر من 500) داخل نطاق مفلتر:

=SUMPRODUCT((B2:B13>500) * (SUBTOTAL(103, OFFSET(A2, ROW(A2:A13)-ROW(A2), 0))))

لتحليل الآلية الحسابية لهذه الصيغة الجبارة خطوة بخطوة:

  1. المصفوفة المنطقية الأولى (B2:B13>500): تقوم باختبار القيم في العمود B ومقارنتها بالرقم 500، مما يولد مصفوفة منطقية أحادية من قيم الصواب والخطأ مثل {TRUE; FALSE; TRUE; ...}.
  2. دالة ROW(A2:A13)-ROW(A2): تُرجع مصفوفة متسلسلة تبدأ من الصفر {0; 1; 2; ...; 11} لتمثيل مسافات الإزاحة النسبية لكل صف انطلاقاً من الخلية الأولى.
  3. دالة OFFSET(A2, ..., 0) مع SUBTOTAL(103): تقوم بتفكيك النطاق الكلي إلى مصفوفة من المراجع أحادية الخلية وتمرير كل خلية منفردة لدالة SUBTOTAL، مما ينتج عنه مصفوفة رقمية ثنائية مكونة من 1 للصفوف المرئية و 0 للصفوف المخفية.
  4. الضرب المصفوفي في SUMPRODUCT: يتم ضرب عناصر المصفوفة الأولى في المصفوفة الثانية؛ حيث يتحول حاصل ضرب TRUE * 1 فقط إلى الرقم 1 (أي الخلية التي حققت الشرط وكانت مرئية في آن واحد)، بينما يؤدي وجود FALSE أو 0 إلى تحويل الناتج لصفر. وأخيراً تقوم الدالة بجمع الآحاد الناتجة لتعطي العدد الصحيح والنهائي بدقة متناهية.

9. استثمار دوال المصفوفات الديناميكية الحديثة في Microsoft 365

count filtered rows in Excel
count filtered rows in Excel

9.1 استخدام دالة FILTER المباشرة كبديل للتصفية اليدوية في العد

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

إذا أردنا حساب عدد المعاملات التابعة لشهري يناير وأبريل بصورة ديناميكية مستقلة عن واجهة المستخدم، يمكننا كتابة صيغة عد مصفوفية مباشرة عبر دمج دالتي ROWS و FILTER:

=ROWS(FILTER(A2:B13, (A2:A13="January") + (A2:A13="April"), ""))

يقوم التعبير (A2:A13="January") + (A2:A13="April") بتمثيل المعامل المنطقي “OR” في الجبر البولياني؛ فتقوم دالة FILTER بإرجاع مصفوفة تحتوي حصراً على صفوف هذين الشهرين، ثم تأتي دالة ROWS لتحسب عدد صفوف المصفوفة الناتجة في الذاكرة اللحظية دون التأثير على شكل الجدول الأصلي أو الحاجة لتطبيق فلاتر بصرية يدوية.

9.2 بناء دوال مخصصة لحساب الصفوف المرئية عبر دوال LAMBDA

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

يمكن للمؤسسات إنشاء دالة مخصصة تسمى CountVisibleRows عبر مدير الأسماء (Name Manager) باستخدام البنية التالية:

=LAMBDA(TargetRange, SUBTOTAL(103, TargetRange))

بمجرد حفظ هذا الاسم، يصبح بإمكان أي مستخدم داخل المصنف كتابة الصيغة البسيطة التالية مباشرة في أي خلية:

=CountVisibleRows(A2:A100)

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

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

10.1 الأخطاء الناتجة عن اختيار معاملات التعيين الخاطئة

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

من الأخطاء القاتلة أيضاً تطبيق الثابت 102 (المخصص للعد الرقمي) على عمود يحتوي على نصوص برمجية أو أكواد عملاء تحتوي على أحرف؛ حيث ستكون النتيجة الحسابية صفراً (0) على الدوام، مما يدفع المستخدم للاعتقاد الخاطئ بعدم وجود سجلات مطابقة. يجب دائماً التأكد من ملاءمة نوع المعامل الوظيفي مع طبيعة نوع البيانات (Data Type) المخزنة في العمود المستهدف بالعد.

بالإضافة إلى ذلك، يجب الحذر الشديد من الوقوع في فخ “الإسناد الدائري” (Circular Reference)؛ والذي يحدث عند وضع دالة SUBTOTAL داخل نفس نطاق الخلايا التي تحسبها الدالة (مثل كتابة =SUBTOTAL(103, A2:A20) داخل الخلية A15)، وهو ما يؤدي إلى تجميد محرك الحساب وظهور نتائج مشوهة أو متوقفة تماماً عن التحديث.

10.2 مشكلات البيانات غير المتجانسة والفراغات المخفية

تؤثر جودة البيانات المدخلة بشكل مباشر على دقة دوال العد؛ حيث تحتوي البيانات المستوردة من قواعد بيانات خارجية أو ملفات CSV في كثير من الأحيان على خلايا تبدو فارغة ظاهرياً ولكنها تحتوي في الواقع على مسافات بيضاء غير مرئية (Spaces) أو محارف تحكم غير مطبوعة (Non-printable Characters). تعامل دالة COUNTA (وكذلك SUBTOTAL(103)) هذه الفراغات بوصفها نصوصاً مكتملة وتقوم باحتسابها ضمن عدد الصفوف المفلترة.

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

لمعالجة هذه المشكلات، يُنصح بتطبيق تقنيات تنظيف البيانات (Data Cleansing) المسبقة، مثل استخدام دالتي TRIM و CLEAN لإزالة المسافات والمحارف الزائدة، والامتناع التام عن استخدام ميزة دمج الخلايا في الجداول المعدة للتحليل، والاستعاضة عنها بخاصية المحاذاة المتقدمة “توسيط عبر التحديد” (Center Across Selection).

11. تحسين الأداء الحسابي وكفاءة المعالجة في مجموعات البيانات الضخمة (Big Datasets)

11.1 تقييم العبء الحسابي للدوال المتقلبة والمصفوفية (Volatile Functions)

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

لتقليل هذا العبء الحسابي في الجداول الضخمة، يُفضل تجنب التراكيب المعقدة المستندة إلى OFFSET واستبدالها بإضافة أعمدة مساعدة (Helper Columns) داخل الجدول نفسه تحتوي على دالة SUBTOTAL(103, [@Column]) لكل صف، ومن ثم استخدام دالة COUNTIFS الكلاسيكية السريعة للإشارة إلى نتائج هذا العمود المساعد، وهو ما يقلل العمليات الحسابية المتكررة بنسبة تتجاوز 90%.

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

11.2 إرشادات التصميم الهندسي لجداول البيانات المؤسسية

تقتضي أفضل الممارسات الهندسية في تصميم نماذج البيانات المؤسسية الفصل الصارم والمنهجي بين ثلاث طبقات رئيسية في المصنف:

  • طبقة البيانات الخام (Data Layer): جدول مهيكل ونظيف يحتوي على السجلات التاريخية دون أي معادلات تلخيصية مدمجة وسطه.
  • طبقة المعالجة والحساب (Calculation Engine): مساحة مخصصة تحتوي على مصفوفات الدوال المتقدمة والأعمدة المساعدة لتجهيز النتائج.
  • طبقة العرض والتقارير (Presentation Layer): لوحة قياس مبسطة تعرض النتائج المفلترة والرسوم البيانية ومربعات المؤشرات الرقمية لصانعي القرار.

عند تجاوز حجم البيانات لملايين السجلات وتخطي القدرة الاستيعابية لورقة عمل إكسيل (1,048,576 صفاً)، يجب نقل عمليات التصفية والعد بالكامل إلى بيئة Power Query ومحرك Power Pivot المدمج، حيث تتم التصفية وحساب المقاييس باستخدام لغة DAX السريعة عبر الذاكرة العمودية المضغوطة (VertiPaq Engine) بأعلى كفاءة ممكنة.

12. المقارنة الشاملة بين المنهجيات المختلفة وخلاصة التوصيات التطبيقية

12.1 جدول موازنة شامل للمنهجيات والتقنيات المطروحة

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

المنهجية المستخدمة الصيغة النموذجية سهولة التطبيق التوافقية التاريخية الأداء مع البيانات الضخمة دعم الشروط المخصصة
SUBTOTAL (103) =SUBTOTAL(103, Range) عالية جداً (بسيطة) كافة الإصدارات ممتاز وسريع للغاية لا (تعتمد على التصفية فقط)
AGGREGATE =AGGREGATE(3, 5, Range) متوسطة Excel 2010 فما فوق ممتاز ويتحمل الأخطاء لا (تعتمد على التصفية فقط)
SUMPRODUCT + OFFSET =SUMPRODUCT((Crit)*(SUBTOTAL(...))) معقدة ومتقدمة كافة الإصدارات بطيء مع النطاقات الكبرى نعم (مرونة شرطية كاملة)
دوال Dynamic Arrays =ROWS(FILTER(Data, Crit)) سهلة إلى متوسطة Microsoft 365 فقط فائق السرعة وحديث نعم (برمجياً عبر المصفوفات)

12.2 أفضل الممارسات والتوصيات النهائية للباحثين ومحللي البيانات

في الختام، يُعد التمكن من آليات حساب الصفوف المفلترة مهارة فارقة تميز محلل البيانات المحترف عن المستخدم التقليدي لبرنامج إكسيل. نوصي باعتماد الصيغة القياسية =SUBTOTAL(103, Range) كخيار أول وبديهي للمهام التحليلية السريعة والتقارير الدورية نظراً لبساطتها وسرعتها الفائقة وتوافقها التام مع كافة بيئات العمل.

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

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

خاتمة

تناول هذا الدليل المعمق والشامل أبعاد المعالجة الكمية للبيانات المفلترة في برنامج مايكروسوفت إكسيل، بدءاً من تفكيك القصور البنيوي للدوال التقليدية مثل COUNT و COUNTA، ومروراً بالاستعراض الرياضي والتطبيقي لقدرات دالتي SUBTOTAL و AGGREGATE، ووصولاً إلى الحلول البرمجية المتطورة باستخدام مصفوفات SUMPRODUCT ودوال Microsoft 365 الحديثة. إن فهم هذه الأدوات وتطبيقها بالشكل الصحيح يمثل الضمانة الأساسية لإنتاج تقارير تحليلية وإحصائية دقيقة تعكس الواقع الفعلي للبيانات وتدعم مسارات التطوير المؤسسي بثقة واحترافية.

المراجع (References)

  • Alexander, M., Kusleika, D., & Walkenbach, J. (2019). Excel 2019 Bible. John Wiley & Sons. https://www.wiley.com/en-us/Excel+2019+Bible-p-9781119514787
  • Bluttman, K. (2020). Excel Formulas and Functions For Dummies (5th ed.). John Wiley & Sons. https://www.dummies.com/book/technology/software/microsoft-products/excel/excel-formulas-and-functions-for-dummies-5th-edition-281829/
  • Microsoft Support. (2023). SUBTOTAL function. Microsoft Corporation. https://support.microsoft.com/ar-sa/office/%D8%A7%D9%84%D8%AF%D8%A7%D9%84%D8%A9-subtotal-7b027003-f060-4ade-9040-e478765b9939
  • Microsoft Support. (2023). AGGREGATE function. Microsoft Corporation. https://support.microsoft.com/ar-sa/office/%D8%A7%D9%84%D8%AF%D8%A7%D9%84%D8%A9-aggregate-43b9278e-6aa7-4f17-92b6-e19993fa26c7
  • Microsoft Support. (2023). FILTER function. Microsoft Corporation. https://support.microsoft.com/ar-sa/office/%D8%A7%D9%84%D8%AF%D8%A7%D9%84%D8%A9-filter-f4f7cb66-82eb-4767-b7c0-c4757d0bf310
  • Winston, W. L. (2021). Microsoft Excel Data Analysis and Business Modeling (Office 2021 and Microsoft 365) (7th ed.). Microsoft Press. https://www.microsoftpressstore.com/store/microsoft-excel-data-analysis-and-business-modeling-9780137613663

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

looti, M. (2026, أغسطس 31). كيفية حساب عدد الصفوف المفلترة في إكسيل (مع مثال). عرب سايكلوجي. https://arabpsychology.com/statistics/how-to-count-filtered-rows-in-excel-with-example/
looti, Mohammed. “كيفية حساب عدد الصفوف المفلترة في إكسيل (مع مثال).” عرب سايكلوجي, 31 أغسطس 2026, https://arabpsychology.com/statistics/how-to-count-filtered-rows-in-excel-with-example/.
looti, Mohammed. “كيفية حساب عدد الصفوف المفلترة في إكسيل (مع مثال).” عرب سايكلوجي. أغسطس 31, 2026. https://arabpsychology.com/statistics/how-to-count-filtered-rows-in-excel-with-example/.