إدارة المشاريعتحليل البياناتجداول بيانات Google

جداول بيانات Google: حساب عدد أيام العمل بين تاريخين

دليل أكاديمي شامل يشرح كيفية استخدام دالتي NETWORKDAYS وNETWORKDAYS.INTL لحساب عدد أيام العمل بدقة واستبعاد العطلات في جداول بيانات Google.

تاريخ النشر

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

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

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

1. مقدمة منهجية لحساب أيام العمل في جداول بيانات Google

1.1 أهمية التمييز بين الأيام التقويمية وأيام العمل الفعلية

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

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

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

1.2 الدور الإحصائي والتحليلي لحساب أيام العمل في بيئات الأعمال

تلعب أيام العمل دور المتغير المستقل الحاسم في بناء وتطوير مؤشرات الأداء الرئيسية (KPIs) المرتبطة بالزمن والفاعلية التشغيلية. ففي قطاعات مثل التصنيع، والخدمات اللوجستية، وتطوير البرمجيات، تُقاس مؤشرات مثل “متوسط زمن الإصلاح” (MTTR)، و”زمن دورة الطلب” (Order Cycle Time)، و”المهلة الزمنية للإنتاج” (Lead Time) بالاعتماد الصارم على ساعات وأيام العمل الحقيقية لتجنب تشويه البيانات الناتجة عن فترات الإغلاق الأسبوعي للمنشآت والمصانع.

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

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

1.3 نظرة عامة على أدوات التعامل مع التواريخ في جداول Google

تعتمد البنية التحتية لمعالجة التواريخ في جداول بيانات Google على المعيار الزمني الرقمي التسلسلي المتصل (Serial Number System)، وهو النظام البرمجي الذي يمثل كل يوم كرقم صحيح متتابع يبدأ من نقطة أساس معيارية موحدة. وبموجب هذا النظام الهندسي، يُخزن التاريخ كقيمة عددية حقيقية، بينما يمثل الوقت كسراً عشرياً من اليوم الواحد، مما يتيح إجراء العمليات الحسابية الأساسية من جمع وطرح ومقارنة منطقية على التواريخ بسلاسة تامة وتوافق برمجي شامل.

تنقسم الدوال الزمنية داخل منظومة جداول Google الحسابية إلى صنفين بنيويين رئيسيين: دوال التوليد والاستخراج الزمني مثل DATE، وTODAY، وNOW، وYEAR، وMONTH، والتي تهدف إلى إنشاء التواريخ أو تفكيكها إلى عناصرها الأولية؛ ودوال الحساب والمفاضلة الفترية مثل DAYS، وDATEDIF، وWORKDAY، وNETWORKDAYS، التي تركز على قياس المسافات الفاصلة بين النقاط الزمنية وفق خوارزميات وقواعد ترشيح متباينة التعقيد.

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

2. البنية النحوية والمفاهيمية لدالة NETWORKDAYS

2.1 التعريف الرياضي والوظيفي لدالة NETWORKDAYS

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

رياضياً، يمكن التعبير عن المعادلة الضمنية التي تحكم عمل الدالة عبر الجمع النقطي لمؤشرات الأيام، حيث يُعطى كل يوم يقع ضمن النطاق الزمني المغلق [Start_Date, End_Date] قيمة ثنائية (Binary Flag) تساوي 1 إذا كان اليوم يمثل يوم عمل نظامي، وتساوي 0 إذا كان اليوم يقع ضمن عطلة نهاية الأسبوع أو ضمن مصفوفة العطلات المدخلة، ويتم جمع هذه القيم للحصول على الناتج النهائي:

إجمالي أيام العمل = مجموع القيم الثنائية للأيام من تاريخ البدء إلى تاريخ الانتهاء (حيث العمل = 1، والعطلة = 0).

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

2.2 تفكيك وسائط الدالة (Arguments Analysis)

تتكون البنية النحوية (Syntax) القياسية لدالة NETWORKDAYS من ثلاثة وسائط رئيسية، تُكتب على النحو التالي: =NETWORKDAYS(start_date, end_date, [holidays]). يتطلب التطبيق الرياضي السليم فهماً عميقاً للشروط والقيود التقنية المرتبطة بكل وسيط من هذه الوسائط الثلاثة لضمان الحصول على مخرجات حسابية دقيقة وخالية من الأخطاء البرمجية.

  • وسيط تاريخ البدء (start_date): يمثل النقطة الزمنية الابتدائية للنطاق المراد حسابه. يشترط في هذا الوسيط أن يكون تاريخاً صالحاً ومقبولاً وفق النظام التسلسلي لجداول Google، سواء تم إدخاله كمرجع لخلية (مثل A2)، أو ناتجاً عن دالة زمنية أخرى مثل DATE(2026, 1, 1)، أو كسلسلة نصية تاريخية قابلة للتحويل. يمثل هذا اليوم أول عنصر يتم اختباره في مصفوفة الفرز الزمني.
  • وسيط تاريخ الانتهاء (end_date): يحدد النقطة الزمنية الختامية للنطاق الحسابي. يخضع لنفس القواعد الصارمة المنظمة لوسيط البدء، ويُشكل مع تاريخ البدء الفترة المغلقة محل المعالجة. ومن الضروري إدراك أن الدالة تتيح إدخال تاريخ انتهاء يسبق تاريخ البدء زمنياً، وفي هذه الحالة تعيد الدالة ناتجاً سالباً يعكس الاتجاه العكسي للفاصل الزمني.
  • وسيط العطلات ([holidays]): هو وسيط اختياري (Optional Argument) محاط بأقواس مربعة في التوثيق القياسي. يُستخدم لتمرير نطاق من الخلايا (مثل C2:C15) أو مصفوفة ثابتة من التواريخ التي تعبر عن الإجازات الرسمية، أو العطلات الاستثنائية التي يجب طرحها من الحساب الإجمالي لأيام العمل إذا صادفت وقوعها ضمن أيام الأسبوع الإنتاجية.

2.3 آلية معالجة عطلات نهاية الأسبوع الافتراضية

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

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

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

3. التطبيق العملي الأساسي: حساب أيام العمل بين تاريخين

3.1 إعداد بيئة البيانات وهيكلة الأعمدة

يتطلب الشروع في تطبيق حسابات أيام العمل داخل جداول بيانات Google تنظيماً هيكلياً منضبطاً لورقة العمل، يضمن الفصل الواضح بين مدخلات البيانات الخام والمخرجات الحسابية المشتقة. يُنصح دائماً بتخصيص أعمدة مستقلة ذات ترويسات واضحة ومعيارية، مثل عمود “معرف المهمة” (Task ID)، وعمود “تاريخ البدء” (Start Date)، وعمود “تاريخ الانتهاء” (End Date)، وعمود “أيام العمل الصافية” (Net Workdays)، مما يعزز سهولة صيانة النموذج وتوسيعه مستقبلاً.

تعد خطوة توحيد التنسيق الرقمي لخلايا التواريخ حجر الزاوية في تجنب أخطاء التحليل والحساب. يجب تحديد نطاقات أعمدة التواريخ وتطبيق التنسيق المعياري الموحد عبر قائمة تنسيق > رقم > تاريخ (Format > Number > Date)، مما يضمن تفسير الأرقام المدخلة من قبل المستخدمين كقيم زمنية متسلسلة صحيحة، وتفادي مشاكل التفسير الخاطئ للشهور والأيام الناتجة عن اختلاف إعدادات اللغة الإقليمية بين أعضاء الفريق.

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

workdays between two dates in Google Sheets
workdays between two dates in Google Sheets

3.2 تطبيق الصيغة المباشرة بدون معلمات إضافية

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

=NETWORKDAYS(B2, C2)

عند تنفيذ هذه المعادلة، تقوم جداول Google تلقائياً بتقييم التاريخ الموجود في الخلية B2 كبداية للنطاق، والتاريخ في الخلية C2 كنهاية له، وتجري عملية التصفية الرياضية لتظهر عدد الأيام الإنتاجية كقيمة عددية مجردة. فإذا كان تاريخ البدء هو يوم الاثنين الموافق 2 مارس 2026، وتاريخ الانتهاء هو يوم الجمعة الموافق 6 مارس 2026، فإن الدالة سترجع القيمة (5)، معبرة عن خمسة أيام عمل كاملة ومتصلة.

لتعميم هذه الصيغة على كامل الجدول الزمني الممتد لعشرات أو مئات الصفوف، يتم استخدام خاصية السحب والإفلات لمقبض التعبئة التلقائية (Fill Handle)، أو النقر المزدوج عليه. تعتمد هذه العملية على “المراجع النسبية” (Relative References) للخلايا؛ حيث تتحول الصيغة تلقائياً في الصف التالي إلى =NETWORKDAYS(B3, C3) ثم =NETWORKDAYS(B4, C4) بصورة ديناميكية تحافظ على اتساق المعالجة الحسابية عبر سجلات البيانات المتتابعة.

3.3 التحقق الرياضي من صحة النتائج عبر التقويم

يعد التدقيق اليدوي المتقاطع (Manual Cross-Verification) خطوة منهجية بالغة الأهمية لترسيخ فهم آلية عمل الدالة والتأكد من مطابقة النتائج الحسابية للمتطلبات الواقعية. لنفترض مشروعاً يبدأ في يوم الجمعة 6 مارس 2026 وينتهي في يوم الثلاثاء 10 مارس 2026. بالنظر إلى التقويم، نجد أن الفترة الزمنية الكلية تمتد لخمسة أيام تقويمية (الجمعة، السبت، الأحد، الاثنين، الثلاثاء).

عند تمرير هذين التاريخين إلى دالة NETWORKDAYS، تقوم الخوارزمية بالخطوات التالية بالتفصيل: تفحص يوم الجمعة 6 مارس وتعتبره يوم عمل رقم (1)؛ ثم تفحص يوم السبت 7 مارس وتستبعده (عطلة نهاية أسبوع)؛ ثم تفحص يوم الأحد 8 مارس وتستبعده (عطلة نهاية أسبوع)؛ ثم تفحص يوم الاثنين 9 مارس وتعتبره يوم عمل رقم (2)؛ وأخيراً تفحص يوم الثلاثاء 10 مارس وتعتبره يوم عمل رقم (3). وبناءً عليه، تُرجع الدالة القيمة (3).

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

4. دمج واستبعاد الإجازات الرسمية والعطلات المخصصة

4.1 أهمية الوسيط الاختياري [holidays] في تحسين دقة الحساب

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

تنقسم الإجازات التي تواجه المؤسسات إلى نوعين رئيسيين: إجازات ثابتة التواريخ سنوياً (مثل رأس السنة الميلادية أو الأعياد الوطنية الثابتة)، وإجازات دورية متحركة تتغير تواريخها في كل عام تقويمي (مثل الأعياد الدينية المرتبطة بالتقويم القمري أو عطلات الجمعة العظيمة). يوفر الوسيط الاختياري الثالث [holidays] في دالة NETWORKDAYS المرونة الكاملة لاستيعاب هذين النوعين عبر تمرير قائمة ديناميكية محدثة تحتوي على كافة التواريخ المراد استبعادها.

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

4.2 إنشاء وتنسيق نطاقات قائمة العطلات الرسمية

لضمان استقرار ونظافة النموذج الرياضي في جداول Google، يُوصى بتخصيص ورقة عمل مستقلة داخل المصنف (Workbook) وتسميتها باسم معبر مثل “Holiday_List” أو “الإجازات_الرسمية”. يتم في هذه الورقة إدراج جميع تواريخ الإجازات المعترف بها في المؤسسة ضمن عمود رأسي موحد، مع إمكانية إضافة عمود مجاور يوضح مناسبة كل إجازة لغايات التوثيق والمراجعة الإدارية.

وللارتقاء بمستوى النموذج البرمجي وتسهيل قراءة المعادلات وصيانتها، يُفضل تحويل نطاق تواريخ العطلات إلى نطاق مسمى (Named Range). يمكن تحقيق ذلك من خلال تحديد نطاق التواريخ (وليكن 'Holiday_List'!A2:A20)، ثم الذهاب إلى القائمة بيانات > النطاقات المسماة (Data > Named ranges)، وتعيين اسم وصفي مثل Company_Holidays لهذا النطاق.

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

4.3 تطبيق دالة NETWORKDAYS مع نطاق العطلات المرجعي

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

=NETWORKDAYS(A2, B2, 'Holiday_List'!$A$2:$A$20)

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

=NETWORKDAYS(A2, B2, Company_Holidays)

في الحالات البسيطة والسريعة التي لا تتطلب جدولاً مرجعياً مستقلاً، تتيح جداول بيانات Google أيضاً تمرير مصفوفة ثابتة (Constant Array) من التواريخ مباشرة داخل نص المعادلة باستخدام الأقواس المعقوفة والدالة DATE، كما في النموذج التالي: =NETWORKDAYS(A2, B2, {DATE(2026, 1, 1), DATE(2026, 5, 1)}).

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

5. التعامل مع أنماط العمل الإقليمية عبر دالة NETWORKDAYS.INTL

5.1 قيود دالة NETWORKDAYS التقليدية في البيئات الإقليمية

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

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

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

5.2 البنية التركيبية لدالة NETWORKDAYS.INTL وتحديد معيار Weekend

تتطابق البنية النحوية الأساسية لدالة NETWORKDAYS.INTL مع نسختها التقليدية، ولكنها تتضمن وسيطاً إضافياً بالغ الأهمية يُوضع في الترتيب الثالث، وتُكتب الصيغة كالتالي: =NETWORKDAYS.INTL(start_date, end_date, [weekend], [holidays]). يمثل الوسيط [weekend] المفتاح البرمجي الذي يحدد بدقة أي أيام الأسبوع يجب اعتبارها عطلة رسمية متكررة.

توفر جداول بيانات Google نظامين رئيسيين لتحديد قيمة الوسيط weekend؛ النظام الأول يعتمد على الأكواد الرقمية المحددة مسبقاً (Predefined Numeric Codes)، حيث يمثل كل رقم نمطاً محدداً من أيام الراحة الأسبوعية. ومن أبرز هذه الأكواد الشائعة في بيئات العمل:

  • الكود 7: يحدد عطلة نهاية الأسبوع بيومي (الجمعة والسبت)، وهو المعيار الأكثر استخداماً في غالبية الدول العربية ومؤسسات الشرق الأوسط.
  • الكود 1: يحدد العطلة بيومي (السبت والأحد)، وهو المعيار الافتراضي المتطابق مع الدالة التقليدية.
  • الكود 2: يحدد العطلة بيومي (الأحد والاثنين).
  • الكود 11: يحدد عطلة ليوم واحد فقط في الأسبوع هو (يوم الأحد).
  • الكود 16: يحدد عطلة ليوم واحد فقط في الأسبوع هو (يوم الجمعة)، وهو النمط المتبع في العديد من قطاعات المقاولات والمتاجر والشركات الصغيرة في المنطقة العربية.

على سبيل المثال، لحساب عدد أيام العمل بين التاريخين الموجودين في A2 و B2 مع استبعاد يومي الجمعة والسبت وإسقاط العطلات الرسمية، تُكتب الصيغة على النحو التالي: =NETWORKDAYS.INTL(A2, B2, 7, Company_Holidays).

5.3 تخصيص عطلات نهاية الأسبوع باستخدام سلاسل البت (String Masks)

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

في هذا التمثيل الثنائي، يرمز الرقم (1) إلى يوم عطلة (Non-working day)، بينما يرمز الرقم (0) إلى يوم عمل نظامي (Working day). وفيما يلي تفصيل كيفية قراءة وبناء هذه السلسلة النصية:

الموضع 1: الاثنين | الموضع 2: الثلاثاء | الموضع 3: الأربعاء | الموضع 4: الخميس | الموضع 5: الجمعة | الموضع 6: السبت | الموضع 7: الأحد.

تفتح هذه التقنية آفاقاً واسعة لمعالجة جداول الورديات والمناوبات المعقدة. على سبيل المثال:

  • إذا كان نمط العمل في منشأة صناعية يتضمن عطلة يومي الجمعة والسبت، تُكتب السلسلة كالتالي: "0000110" (أيام العمل من الاثنين للخميس والأحد = 0، والجمعة والسبت = 1).
  • إذا كانت المنشأة تعمل بنظام الورديات الفردية وتمنح عطلة يومي الثلاثاء والخميس فقط، تُكتب السلسلة: "0101000".
  • إذا كان العمل مستمراً طوال أيام الأسبوع دون أي عطلة أسبوعية وتعتمد فقط على الإجازات الرسمية، تُمرر السلسلة: "0000000".

تُطبق هذه الصيغة المتقدمة في الخلية كالتالي: =NETWORKDAYS.INTL(A2, B2, "0000110", Company_Holidays)، مما يمنح مديري المشاريع والمحللين قدرة غير محدودة على نمذجة أي جدول عمل بشري أو تشغيلي مهما بلغت درجة تعقيده.

6. تنسيق وإدارة بيانات التاريخ لضمان دقة العمليات الحسابية

6.1 فهم التسلسل الرقمي الداخلي للتواريخ في Google Sheets

لفهم كيفية تعامل جداول بيانات Google مع الحسابات الزمنية وتجنب الانهيارات المفاجئة في المعادلات، يجب استيعاب الأساس الرياضي الداخلي لتخزين التواريخ. تعتمد Google Sheets نظام التاريخ التسلسلي القائم على معيار يحدد نقطة الأساس (Epoch) بتاريخ 30 ديسمبر 1899؛ حيث يمثل هذا اليوم نقطة الصفر (Day 0)، ويمثل يوم 1 يناير 1900 الرقم التسلسلي (2)، وتتوالى الأرقام الصحيحة الموجبة تصاعدياً بمقدار واحد صحيح لكل يوم تالٍ.

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

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

6.2 استخدام الدوال DATE و DATEVALUE لتوحيد المدخلات

لحماية النماذج الحسابية من الأخطاء الناتجة عن إدخال التواريخ بصيغ نصية غير منضبطة، يُعد استخدام دالة DATE المعيار الذهبي لتوليد قيم زمنية آمنة ومحصنة برمجياً. تعتمد هذه الدالة على تفكيك التاريخ إلى وسائطه الرقمية الثلاثة الصريحة عبر الصيغة: DATE(year, month, day)، مما يلغي تماماً أي غموض أو التباس حول ترتيب اليوم والشهر.

يمكن دمج دالة DATE مباشرة داخل دالة NETWORKDAYS كالتالي:

=NETWORKDAYS(DATE(2026, 1, 15), DATE(2026, 6, 30), Company_Holidays)

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

أما في الحالات التي يتم فيها استيراد مجموعات بيانات نصية من أنظمة تخطيط موارد المؤسسات (ERP) أو ملفات CSV وتكون التواريخ مخزنة كنصوص (مثل “2026-03-01”)، فيبرز دور دالة DATEVALUE. تقوم هذه الدالة بتحويل السلسلة النصية التاريخية بصورة قسرية إلى الرقم التسلسلي المقابل لها، مما يتيح تنظيف البيانات المجلوبة وتمريرها بأمان إلى دوال حساب أيام العمل عبر الصيغة: =NETWORKDAYS(DATEVALUE(A2), DATEVALUE(B2)).

6.3 معالجة أخطاء عدم توافق التنسيقات الإقليمية للمستخدمين

يمثل التباين بين التنسيقات الإقليمية أحد أكبر التحديات في بيئات العمل متعددة الجنسيات؛ فالنظام الأمريكي يعتمد ترتيب (الشهر / اليوم / السنة MM/DD/YYYY)، بينما يعتمد النظام البريطاني وأغلب دول الشرق الأوسط وأوروبا ترتيب (اليوم / الشهر / السنة DD/MM/YYYY). هذا الاختلاف يؤدي إلى أخطاء فادحة عند إدخال تاريخ مثل “05/06/2026″؛ حيث قد يُفسر في بيئة كـ 5 يونيو، بينما يُفسر في بيئة أخرى كـ 6 مايو، مما يخلق فارقاً زمنياً مقداره شهر كامل في الحسابات.

لحل هذه المعضلة البنيوية، يجب أولاً ضبط “الإعدادات الإقليمية لورقة البيانات” (Spreadsheet Locale) بدقة عبر القائمة ملف > الإعدادات > الإعدادات المحلية (File > Settings > Locale)، واختيار الدولة المتوافقة مع طبيعة أعمال الفريق (مثل المملكة العربية السعودية، أو الإمارات العربية المتحدة، أو المملكة المتحدة)، مما يضمن تفسير كافة التواريخ المدخلة وفق معيار تقويمي متسق وموحد لكافة المستخدمين المتصلين بالملف.

بالإضافة إلى ذلك، يُنصح بفرض قيود صارمة على واجهات الإدخال باستخدام أدوات التحقق من صحة البيانات (Data Validation). يتم تطبيق ذلك بتحديد عمود التواريخ واختيار شرط “التاريخ صالح” (Date is valid date)؛ حيث يجبر هذا الإجراء المستخدمين على إدخال التواريخ عبر تقويم تفاعلي منبثق (Date Picker)، مما يمنع نهائياً كتابة التواريخ بصيغ نصية مشوهة ويضمن سلامة التدفقات الحسابية لدوال أيام العمل.

7. دمج دالة NETWORKDAYS مع الدوال المنطقية والشرطية

7.1 تضمين الدالة داخل الشروط المنطقية IF و IFS

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

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

=IF(NETWORKDAYS.INTL(B2, C2, 7, Company_Holidays) > 10, "متأخر - يتطلب تدخل الإدارة", "ضمن الإطار الزمني المقبول")

كما يمكن التوسع في بناء مصفوفة شروط متعددة المستويات باستخدام دالة IFS لإنشاء نظام تصنيف ديناميكي للمخاطر الزمنية للمشاريع قيد التنفيذ، كما في الصيغة التالية:

=IFS(NETWORKDAYS.INTL(B2, C2, 7, Company_Holidays) <= 5, "كفاءة عالية", NETWORKDAYS.INTL(B2, C2, 7, Company_Holidays) <= 10, "أداء طبيعي", NETWORKDAYS.INTL(B2, C2, 7, Company_Holidays) > 10, "حرج جداً")

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

7.2 المعالجة المصفوفية المتقدمة باستخدام ARRAYFORMULA

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

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

=ARRAYFORMULA(IF(ISBLANK(A2:A) + ISBLANK(B2:B), "", NETWORKDAYS.INTL(A2:A, B2:B, 7, Company_Holidays)))

يقوم هذا التركيب البرمجي بفحص كل صف في العمودين A و B؛ فإذا كانت إحدى الخليتين فارغة، تترك الخلية المقابلة في عمود النتيجة فارغة تماماً، أما إذا احتوت الخلايا على تواريخ حقيقية، فتنفذ دالة NETWORKDAYS.INTL الحساب وتمد النتيجة إلى أسفل الصفحة تلقائياً مع كل سجل جديد يضاف إلى الجدول، مما يضمن أتمتة حسابية كاملة وتوفيراً هائلاً في الموارد الحاسوبية للورقة.

7.3 التكامل مع دوال البحث والمراجع مثل XLOOKUP و FILTER

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

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

=NETWORKDAYS.INTL(A2, B2, 7, FILTER(Holidays_Table!$B$2:$B$100, Holidays_Table!$A$2:$A$100 = "فرع القاهرة"))

كما يمكن استخدام دالة XLOOKUP لجلب تاريخ تسليم العقد المعتمد من جدول المشاريع الرئيسي ومقارنته بتاريخ اليوم TODAY() لحساب أيام العمل المتبقية لإنهاء المشروع:

=NETWORKDAYS.INTL(TODAY(), XLOOKUP(D2, Projects_DB!A2:A, Projects_DB!E2:E), 7, Company_Holidays)

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

8. تطبيقات متقدمة في إدارة المشاريع والتخطيط المؤسسي

8.1 حساب فترات الإنجاز الفعلي (Lead Time) ومعدل دوران المهام

يعد قياس “المهلة الزمنية للخدمة” (Lead Time) بدقة متناهية أحد أهم المعايير التنافسية في قطاعات التجارة الإلكترونية، والدعم الفني، وتقديم الخدمات الاستشارية. تعتمد اتفاقيات مستوى الخدمة (SLAs) الموقعة مع العملاء بشكل صارم على حساب “ساعات وأيام العمل الرسمية” التي تلتزم فيها المنشأة بالمعالجة والرد، مع استبعاد فترات العطلات الأسبوعية والإجازات الرسمية من زمن الالتزام التعاقدي.

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

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

8.2 بناء جداول تتبع تقدم المشاريع ومخططات جانت (Gantt Charts)

تعتمد هندسة إدارة المشاريع الاحترافية على تقسيم العمل إلى مسارات زمنية محددة بدقة، حيث تمثل المدد الزمنية الصافية (Net Durations) المدخل الأساسي لرسم مخططات جانت (Gantt Charts) وحساب المسار الحرج (Critical Path Method – CPM). تتيح دوال أيام العمل في جداول Google حساب المدد الزمنية الحقيقية للأنشطة المتتالية وتحديث تواريخ نهاياتها تلقائياً.

لحساب النسبة المئوية للإنجاز الزمني الفعلي للمشروع (Schedule Variance Percentage) في أي لحظة زمنية، يمكن استخدام معادلة مصفوفية تقارن أيام العمل المنقضية منذ بداية المشروع وحتى تاريخ اليوم TODAY() بإجمالي أيام العمل الكلية المخططة للمشروع، كما في الصيغة التالية:

=NETWORKDAYS.INTL(B2, TODAY(), 7, Company_Holidays) / NETWORKDAYS.INTL(B2, C2, 7, Company_Holidays)

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

8.3 مراقبة مؤشرات الأداء وإدارة الموارد البشرية

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

لحساب إجمالي أيام العمل المتاحة في شهر معين (مثلاً شهر مارس 2026)، يتم صياغة المعادلة بحصر أول يوم وآخر يوم في ذلك الشهر:

=NETWORKDAYS.INTL(DATE(2026, 3, 1), DATE(2026, 3, 31), 7, Company_Holidays)

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

9. معالجة الحالات الخاصة والأخطاء الشائعة واستكشاف المشكلات وإصلاحها

9.1 معالجة التواريخ المعكوسة والقيم السالبة

من الحالات الرياضية الخاصة التي قد تواجه مستخدمي دالة NETWORKDAYS إدخال “تاريخ انتهاء” يسبق زمنياً “تاريخ البدء” (Reverse Chronological Order). في هذا السيناريو، لا تتوقف الدالة عن العمل أو تظهر خطأ برمجياً، بل تطبق المنطق الحسابي المتجه وتعيد قيمة سالبة تعبر عن الفارق الزمني العكسي بين النقطتين.

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

=ABS(NETWORKDAYS.INTL(A2, B2, 7, Company_Holidays))

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

=IF(B2 < A2, "خطأ: تاريخ الانتهاء يسبق تاريخ البدء", NETWORKDAYS.INTL(A2, B2, 7, Company_Holidays))

9.2 تصحيح أخطاء الصيغ الأكثر شيوعاً (#VALUE! و #N/A)

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

  • خطأ القيمة #VALUE!: يظهر هذا الخطأ غالباً عندما يتم تمرير نصوص عادية غير قابلة للتحويل إلى تواريخ في وسيط تاريخ البدء أو الانتهاء (مثل كتابة “غير محدد” بدلاً من التاريخ)، أو عند إدخال كود عطلة أسبوعية غير صالح في دالة INTL. يتم تصحيح هذا الخطأ بالتأكد من صحة التنسيق الرقمي واستخدام أدوات التحقق من صحة البيانات.
  • خطأ عدم التوفر #N/A: يظهر عادة عند ربط وسيط العطلات بنطاق يحتوي على دوال بحث فشلت في العثور على نتائج، أو عند وجود خلايا مرجعية معطوبة داخل جدول الإجازات.

ولحماية واجهات العرض ولوحات المعلومات المؤسسية من التشويه البصري الناتج عن ظهور هذه الأخطاء، يُنصح بتغليف معادلات أيام العمل بالكامل داخل دالة IFERROR، مما يتيح تحديد قيمة بديلة آمنة (مثل الصفر أو نص فارغ) عند حدوث أي خلل غير متوقع في المدخلات:

=IFERROR(NETWORKDAYS.INTL(A2, B2, 7, Company_Holidays), 0)

9.3 حل إشكاليات حساب نفس اليوم (Same-day Calculations)

تثير مسألة حساب الأيام المتطابقة (Same-day Tasks) جدلاً كبيراً بين المبتدئين في استخدام الجداول الحسابية؛ فعندما يكون تاريخ البدء وتاريخ الانتهاء متطابقين تماماً (مثلاً: البدء في 5 مايو والانتهاء في 5 مايو) وكان هذا اليوم يمثل يوم عمل نظامي (مثلاً يوم ثلاثاء)، فإن دالة NETWORKDAYS ترجع دائماً القيمة (1).

يعود السبب في ذلك إلى المنطق الشمولي للدالة الذي يعتبر اليوم الواحد فترة عمل كاملة تتضمن ساعات الدوام الإنتاجية لذلك اليوم. غير أن بعض المعايير المحاسبية وأنظمة إدارة المشاريع التي تعتمد مبدأ “الفاصل الزمني المجرد” (Time Delta) تتطلب اعتبار المهام التي تبدأ وتنتهي في نفس اليوم مستغرقة لزمن قدره (0) يوم إضافي.

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

=IF(A2 = B2, 0, NETWORKDAYS.INTL(A2, B2, 7, Company_Holidays))

يضمن هذا التخصيص الدقيق توافق النموذج الرياضي تماماً مع السياسات المحاسبية المعتمدة داخل المنظمة وتفادي أي خلافات في تسوية الفواتير وحساب ساعات وأيام العمل التعاقدية.

10. الأتمتة المتقدمة وتوسيع القدرات باستخدام Google Apps Script

10.1 كتابة دالة مخصصة (Custom Function) للحسابات الزمنية المعقدة

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

يمكن للمطورين والباحثين فتح محرر البرامج النصية عبر امتدادات > Apps Script (Extensions > Apps Script) وكتابة دالة مخصصة تحمل اسماً مثل CALCULATE_CUSTOM_WORKDAYS. تتيح هذه الدالة معالجة كائنات التاريخ (Date Objects) على المستوى البرمجي الأدنى، وتطبيق حلقات التكرار (Loops) والشروط المنطقية المتقدمة لاختبار كل ميللي ثانية في الفترة المحددة وتطبيق أوزان نسبية لأيام العمل.

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

10.2 استيراد وتحديث تقويمات العطلات تلقائياً عبر APIs

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

من خلال نص برمجي بسيط يستدعي التقويم العام المعتمد للإجازات الوطنية في دولة محددة (مثل تقويم “Holidays in Saudi Arabia” أو “Holidays in Egypt”)، يستطيع السكريبت مسح التواريخ الرسمية للعام الحالي والأعوام القادمة، واستخراج أحداث العطلات وتفريغ تواريخها تلقائياً داخل النطاق المسمى Company_Holidays في ورقة العمل دون أي تدخل بشري.

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

10.3 أتمتة تقارير أيام العمل وإرسال الإشعارات الدورية

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

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

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

11. مقارنة تفصيلية بين NETWORKDAYS والدوال الزمنية ذات الصلة

11.1 المقارنة الجوهرية بين NETWORKDAYS و WORKDAY

يخلط العديد من المحللين ومستخدمي الجداول المبتدئين بين وظيفتي دالتي NETWORKDAYS و WORKDAY نتيجة للتشابه اللفظي بينهما، على الرغم من أنهما تمثلان مسارين رياضيين متعاكسين تماماً في هندسة معالجة البيانات الزمنية:

  • دالة NETWORKDAYS (وحليفتها INTL): وظيفتها الأساسية هي “حساب الفاصل الزمني”؛ حيث تستقبل تاريخين كاملين (بداية ونهاية)، وتنتج عدداً صحيحاً يمثل كمية أيام العمل المحصورة بينهما. تُستخدم للإجابة عن السؤال: “كم يوم عمل استغرقت هذه المهمة؟”
  • دالة WORKDAY (وحليفتها WORKDAY.INTL): وظيفتها الأساسية هي “التوليد والترحيل الزمني”؛ حيث تستقبل تاريخ بدء واحداً وعدد أيام عمل مستهدفة، وتنتج تاريخاً تقويمياً مستقبلياً أو ماضياً يمثل موعد التسليم بعد استبعاد العطلات. تُستخدم للإجابة عن السؤال: “إذا بدأت اليوم واستغرقت المهمة 15 يوم عمل، فما هو تاريخ الانتهاء الفعلي؟”

يتكامل استخدام هاتين الدالتين في دورة حياة إدارة المشاريع؛ حيث تُستخدم دالة WORKDAY في مرحلة التخطيط المسبق لتحديد المواعيد النهائية وجداول التسليم، بينما تُستخدم دالة NETWORKDAYS في مرحلة المراقبة والتقييم اللاحق لقياس الفوارق الزمنية الفعلية ومقارنتها بالخطط الموضوعة.

11.2 مقارنة دالة DAYS التقليدية وحسابات الطرح المباشر

يوفر تطبيق جداول Google طرقاً متعددة لقياس المسافات الزمنية بين التواريخ، من أبسطها إجراء عملية الطرح الرياضي المباشر عبر الصيغة =B2 - A2، أو استخدام دالة الفاصل التقويمي العامة DAYS عبر الصيغة =DAYS(B2, A2). غير أن الفارق الجوهري بين هذه الطرق البسيطة ودوال أيام العمل المتخصصة يكمن في “المرشح الحسابي”.

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

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

11.3 جدول معياري لاختيار الدالة المثالية وفق سيناريو العمل

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

  • السيناريو الأول: حساب أيام العمل الصافية في بيئة عمل غربية (عطلة السبت والأحد) مع إجازات رسمية.

    الدالة المثالية: NETWORKDAYS(start_date, end_date, [holidays])

    المخرجات: عدد صحيح يمثل أيام العمل.
  • السيناريو الثاني: حساب أيام العمل في بيئة عمل عربية/إسلامية (عطلة الجمعة والسبت أو الجمعة فقط) مع إجازات رسمية.

    الدالة المثالية: NETWORKDAYS.INTL(start_date, end_date, weekend, [holidays])

    المخرجات: عدد صحيح مخصص بالكامل وفق كود العطلة المحدد.
  • السيناريو الثالث: تحديد تاريخ تسليم مستقبلي لمشروع يستغرق عدداً معلوماً من أيام العمل بنظام عطلة مخصص.

    الدالة المثالية: WORKDAY.INTL(start_date, num_days, weekend, [holidays])

    المخرجات: تاريخ تسلسلي يعبر عن موعد الانتهاء.
  • السيناريو الرابع: حساب إجمالي الأيام التقويمية الكلية دون استبعاد أي عطلات لحساب فترات الإيجار أو الفوائد.

    الدالة المثالية: DAYS(end_date, start_date) أو عملية الطرح (end_date - start_date)

    المخرجات: عدد الأيام التقويمية الخام.

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

12. أفضل الممارسات والمعايير القياسية للنمذجة الزمنية في Google Sheets

12.1 فصل طبقات البيانات والإسناد عن النماذج الحسابية

تعتمد الممارسة الهندسية المثلى في بناء وتصميم نماذج جداول البيانات المالية والتشغيلية على مبدأ “الفصل المعماري للطبقات” (Separation of Concerns). يقضي هذا المبدأ بتقسيم المصنف إلى ثلاث أوراق عمل متخصصة على الأقل: ورقة “المدخلات الخام” (Raw Inputs)، وورقة “المراجع والثوابت” (Reference Lookups)، وورقة “المخرجات والتقارير” (Reports & Dashboards).

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

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

12.2 توثيق القواعد الزمنية والعطلات لضمان الشفافية المؤسسية

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

يتحقق ذلك من خلال إضافة تعليقات وملاحظات توضيحية (Notes & Comments) داخل خلايا الترويسة توضح بدقة ما يلي: كود العطلة الأسبوعية المستخدم (مثلاً: الكود 7 = الجمعة والسبت)، ومصدر قائمة الإجازات الرسمية المعتمدة، وسنة الإصدار، والسياسة المتبعة في احتساب أيام العمل المتطابقة. كما يُفضل دائماً إنشاء ورقة تمهيدية باسم “دليل المستخدم” (ReadMe) تلخص البنية الهيكلية للملف والقواعد الرياضية المعمول بها.

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

12.3 تحسين كفاءة المعالجة وسرعة الأداء في أوراق العمل الضخمة

عندما تتسع جداول البيانات لتضم عشرات الآلاف من السجلات المرتبطة بحسابات زمنية، قد يعاني المستخدمون من بطء ملحوظ في إعادة حساب المعادلات وتحديث الشاشة. يرتبط هذا البطء غالباً بالاستخدام غير الرشيد لـ الدوال المتطايرة (Volatile Functions) مثل TODAY() و NOW() و RAND() داخل صيغ أيام العمل المصفوفية.

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

وفي مشاريع الأرشفة والسجلات التاريخية للمهام المكتملة بالفعل، يجب تحويل مخرجات صيغ دالة NETWORKDAYS التي لم تعد خاضعة للتغيير من معادلات حية إلى “قيم ثابتة” عبر ميزة نسخ > لصق خاص > القيم فقط (Paste Special > Values Only). يحرر هذا الإجراء الذاكرة السحابية للملف من آلاف العمليات الحسابية المتكررة وغير الضرورية، مما يضمن الحفاظ على سرعة وسلاسة استجابة النظام مهما تعاظم حجم قواعد البيانات المخزنة.

خاتمة

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

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

References

  • Google. (2024). NETWORKDAYS function reference. Google Docs Editors Help. https://support.google.com/docs/answer/3093979
  • Google. (2024). NETWORKDAYS.INTL function reference. Google Docs Editors Help. https://support.google.com/docs/answer/3093980
  • Google Developers. (2024). Google Apps Script: Spreadsheet service (SpreadsheetApp). Google for Developers. https://developers.google.com/apps-script/reference/spreadsheet
  • International Organization for Standardization. (2019). Data elements and interchange formats — Information interchange — Representation of dates and times (ISO Standard No. 8601-1:2019). https://www.iso.org/standard/70907.html
  • Project Management Institute. (2021). A guide to the project management body of knowledge (PMBOK guide) (7th ed.). Project Management Institute. https://www.pmi.org/pmbok-guide-standards/foundational/pmbok
  • Walkenbach, J. (2015). Excel 2016 formulas. John Wiley & Sons.

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

looti, M. (2026, أغسطس 31). جداول بيانات Google: حساب عدد أيام العمل بين تاريخين. عرب سايكلوجي. https://arabpsychology.com/statistics/google-sheets-count-workdays-between-dates/
looti, Mohammed. “جداول بيانات Google: حساب عدد أيام العمل بين تاريخين.” عرب سايكلوجي, 31 أغسطس 2026, https://arabpsychology.com/statistics/google-sheets-count-workdays-between-dates/.
looti, Mohammed. “جداول بيانات Google: حساب عدد أيام العمل بين تاريخين.” عرب سايكلوجي. أغسطس 31, 2026. https://arabpsychology.com/statistics/google-sheets-count-workdays-between-dates/.