تُعد معالجة البيانات الزمنية (Temporal Data Processing) أحد الركائز الجوهرية في هندسة البيانات وتحليلها، حيث تمثل الطوابع الزمنية (Timestamps) سجلاً رقمياً حيوياً يوثق لحظة وقوع الأحداث بدقة متناهية. وفي بيئات الأعمال والمختبرات البحثية وميادين جمع البيانات الميدانية، يشكل برنامج مايكروسوفت إكسل (Microsoft Excel) المنصة الأكثر شيوعاً واستخداماً لإجراء المعالجات الأولية والتحليلات الاستكشافية لتلك البيانات. ومع تدفق السجلات المحتوية على قيم التاريخ والوقت مدمجة في حقل واحد، تبرز الحاجة التقنية الماسة إلى تفكيك هذه المتغيرات المركبة واستخلاص عناصرها الفردية، ويأتي في مقدمتها استخراج مكون الساعة (Hour Extraction)، الذي يمثل الوحدة الأساسية لتحليل السلوكيات الدورية، وتتبع أنماط الاستخدام، وضبط كفاءة العمليات التشغيلية على مدار اليوم.
تتجاوز عملية استخراج الساعة من حقل التاريخ والوقت مجرد التعديل الشكلي أو التنسيقي للخلية؛ إذ تمثل تحويلاً بنيوياً يُخرج المتغير الزمني من قالبه التراكمي المستمر ليحوله إلى متغير فئوي أو كمي متقطع يقع ضمن المجال الرياضي المحدد بين الصفر والعدد ثلاثة وعشرين. هذا التحويل الرياضي المباشر يُمكن المحللين من تصنيف البيانات، وتجميع المؤشرات، وإجراء المقارنات العرضية عبر الساعات المتشابهة في أيام مختلفة. ورغم بساطة الصيغة الرياضية الظاهرة للدوال المصممة لهذا الغرض، فإن فهم الآلية الحسابية التي يتعامل بها إكسل مع طوابع الوقت يستوجب سبراً عميقاً للنظام التسلسلي الرقمي الذي بُنيت عليه البرمجية منذ عقود، وتحديد الفروق الدقيقة بين القيم العددية الحقيقية والمخرجات النصية الصرفة.
يهدف هذا الدليل المرجعي الموسع إلى تقديم تشريح أكاديمي وتطبيقي شامل لجميع آليات وتقنيات استخراج الساعة من قيم التاريخ والوقت في إكسل. سنناقش بالتفصيل الأسس الرياضية والنظرية لنظام الوقت التسلسلي، والتشريح الدقيق لدالة HOUR والبدائل المتقدمة المعتمدة على دالة TEXT، والحلول الحسابية الرياضية القائمة على دوال القسمة والاقتطاع، وصولاً إلى معالجة النصوص الزمنية غير القياسية باستخدام دوال النصوص ومحرك استعلامات الطاقة (Power Query). كما سنتطرق إلى الأخطاء الشائعة وكيفية تصحيحها، مع تسليط الضوء على التطبيقات العملية المتقدمة التي توظف الساعة المستخرجة في النمذجة الإحصائية، وتحليلات الجداول المحورية، والدراسات السلوكية المتخصصة.

1. الأساس النظري لتمثيل بيانات التاريخ والوقت في برنامج إكسل
1.1 البنية الرقمية المتسلسلة لقيم التاريخ والوقت
يقوم النظام الحسابي لبرنامج مايكروسوفت إكسل على معمارية رياضية محكمة تُعرف باسم “نظام الأرقام المتسلسلة” (Serial Number System). في هذا النظام، لا يتم تخزين التواريخ والأوقات كنصوص أبجدية أو تركيبات لغوية، بل تُعامل كأرقام حقيقية ذات فاصلة عائمة (Floating-point Numbers). يعود أصل هذا التمثيل إلى خوارزميات التوافق التاريخي مع برمجية Lotus 1-2-3 التي طُورت في مطلع ثمانينيات القرن العشرين، حيث اعتبر إكسل يوم 1 يناير من عام 1900 هو نقطة البداية المرجعية، ومُنح الرقم الصحيح (1). وكل يوم يمر بعد ذلك التاريخ يُمثل بزيادة عددية صحيحة بمقدار واحد صحيح، مما يجعل التواريخ المتتابعة سلسلة متصلة من الأعداد الصحيحة المتزايدة خطياً.
أما الوقت، فيتم تمثيله رياضياً في هذه المعمارية ككسر عشري دقيق يمثل النسبة المئوية المنقضية من اليوم الكامل المكون من 24 ساعة. فالأيام تُمثل بالأعداد الصحيحة، بينما تُمثل الساعات والدقائق والثواني بالكسور العشرية المحصورة بين 0.00000000 و 0.99999999. على سبيل المثال، فإن الساعة الثانية عشرة ظهراً (12:00 PM) تمثل نصف يوم بالتمام، وبالتالي تُخزن رياضياً ككسر عشري قيمته 0.5. والساعة السادسة صباحاً (06:00 AM) تمثل ربع اليوم، وتكافئ القيمة العشرية 0.25، في حين تعادل الساعة السادسة مساءً (18:00 أو 06:00 PM) الكسر 0.75. وتُحسب الساعة الواحدة رياضياً بقسمة 1 على 24، وهو ما يعادل الكسر الدوري 0.04166667 تقريباً.
من الأهمية بمكان للباحث ومحلل البيانات إدراك الفجوة التقنية بين “القيمة المخزنة فعلياً” (Underlying Stored Value) في نواة برنامج إكسل، و”القيمة المعروضة ظاهرياً” (Formatted Display Value) على واجهة المستخدم. فعندما تُظهر الخلية نصاً مثل “2026-10-21 14:35:00″، فإن إكسل لا يرى هذه الحروف إطلاقاً، بل يتعامل داخلياً مع رقم تسلسلي حقيقي يتألف من جزء صحيح يمثل عدد الأيام المنقضية منذ عام 1900، وجزء كسري عشري يمثل الساعات والدقائق المنصرمة. وتغيير تنسيق الخلية إلى أي شكل بصري لا يغير من بنيتها الحسابية، وهو المبدأ الرياضي الذي ترتكز عليه جميع دوال استخراج الوقت اللاحقة.
1.2 أهمية عزل مكون الساعة في التحليلات الإحصائية والزمنية
يمثل استخراج وعزل مكون الساعة (Hour Component) عن التاريخ الكامل خطوة تمهيدية حاسمة في معالجة سلاسل البيانات الزمنية (Time-Series Preprocessing). الطوابع الزمنية الكاملة بطبيعتها تتمتع بدرجة عالية من التباين؛ إذ تندر مطابقة طابع زمني لآخر حتى مستوى الثانية أو الدقيقة عبر الأيام المتعاقبة. هذا التباين الشديد يُصعّب من إجراء عمليات التجميع الرياضي والمقارنة المباشرة. ولكن عبر استخلاص قيمة الساعة وتجريدها من التاريخ اليومي، يتحول المتغير الزمني التراكمي إلى مقياس دوري (Cyclical Metric) يتكرر بانتظام كل أربع وعشرين ساعة، مما يتيح للباحثين دراسة الأنماط السلوكية المتكررة بكفاءة إحصائية عالية.
في مجالات دراسة الكفاءة التشغيلية وبحوث العمليات، يُشكل عزل الساعة متغيراً تصنيفياً مستقلاً (Categorical Independent Variable) ذا قدرة تفسيرية هائلة. فهو يتيح للمؤسسات تحديد فترات الذروة اليومية (Peak Hours) ومعدلات الانحدار في طلبات الخدمة، أو حركة المرور على المواقع الإلكترونية، أو فترات استهلاك الطاقة. كما يُسهم في تقييم مدى كفاءة الموارد البشرية وتوزيع الورديات بالاعتماد على مصفوفات زمنية موحدة. وبدلاً من تتبع كل واقعة كحدث زمني منفصل ومجهد تحليلياً، يصبح بالإمكان تجميع آلاف الأحداث ضمن أربعة وعشرين وعاءً تحليلياً متجانساً يمثل ساعات اليوم الفردي.
علاوة على ذلك، يُسهم عزل الساعة في تسهيل إجراء التحليلات الاستكشافية متعددة المتغيرات، مثل بناء الرسوم البيانية للتوزيعات التكرارية والمخططات الصندوقية (Boxplots) لكل ساعة على حدة، مما يكشف عن التغيرات اللحظية والتذبذبات المرتبطة بتوقيت اليوم. وتسمح هذه المتغيرات الزمنية المقطوعة بالمقارنة الدقيقة بين الأيام المختلفة، مثل مقارنة الساعة العاشرة صباحاً في يوم عمل رسمي بالساعة العاشرة صباحاً في عطلة نهاية الأسبوع، وهو ما يعزز دقة النماذج التنبؤية واختبارات الفروق الإحصائية مثل تحليل التباين الأحادي.
1.3 التمييز بين بيانات الوقت النصية والأرقام التسلسلية الحقيقية
تتمثل إحدى العقبات الأكثر شيوعاً في معالجة بيانات الوقت في الالتباس بين التواريخ المخزنة كأرقام تسلسلية حقيقية وتلك المخزنة كسلاسل نصية جامدة (String Literals). من الناحية البصرية، قد تبدو السلسلة النصية “14:30:00” مطابقة تماماً للقيمة الرقمية المتسلسلة المنسقة لعرض الوقت ذاته. إلا أن البنية التقنية خلف الكواليس مختلفة جذرياً؛ فالرقم التسلسلي يمتلك قيمة حسابية تقبل الجمع والطرح المباشر وتستجيب لدوال الوقت الرياضية، في حين أن النص هو مجرد مصفوفة من المحارف الأبجدية التي لا تمتلك أي وزن حسابي في ذاكرة البرنامج الرياضية.
للتحقق من طبيعة البيانات المدخلة في ورقة العمل، يوفر إكسل دوال فحص منطقية صارمة. يمكن للمحلل استخدام الدالة ISNUMBER لاختبار ما إذا كانت الخلية تحتوي على رقم تسلسلي حقيقي؛ فإذا أرجعت الدالة القيمة المنطقية TRUE، فهذا يقطع بأن المحتوى قابل للمعالجة الرياضية المباشرة بواسطة دوال الوقت. وبالمقابل، فإن تطبيق الدالة ISTEXT يحدد ما إذا كانت الخلية تتضمن نصاً صريحاً. وكقاعدة بصرية عامة في إعدادات إكسل الافتراضية، تتم محاذاة القيم الرقمية (بما فيها التواريخ والأوقات الصحيحة) إلى جهة اليمين داخل الخلية (أو اليسار وفق لغة الواجهة)، في حين تصطف السلاسل النصية تلقائياً في الجهة المعاكسة، ما لم يُعدل المستخدم التنسيق يدوياً.
يترتب على سوء تصنيف البيانات الزمنية إخفاقات برمجية وتحليلية فادحة. فعند محاولة تطبيق دالة استخراج الوقت على حقل نصي لا يتعرف عليه إكسل كتاريخ تسلسلي، ترجع الصيغة خطأ القيمة الشهير #VALUE!، مما يؤدي إلى تعطل العمليات الحسابية المتسلسلة وتشويه نتائج الجداول المحورية ولوحات القياس التفاعلية. لذلك، يعد التثبت المنهجي من طبيعة البيانات وتحويل النصوص إلى أرقام متسلسلة خطوة حتمية تسبق أي محاولة لاستخراج الساعات.
2. التشريح الدقيق لدالة HOUR وآلية عملها الرياضية
2.1 بناء الجملة النحوية لدالة HOUR ومتطلبات الوسائط
تُعد دالة HOUR الأداة المتخصصة والمباشرة التي صممها مهندسو مايكروسوفت لعزل قيمة الساعة من أي قيمة تاريخ ووقت تسلسلية. تتميز الدالة ببنيتها النحوية البسيطة والأنيقة، حيث تأخذ وسيطاً واحداً فقط وتُكتب بالصيغة القياسية التالية:
=HOUR(serial_number)
يمثل الوسيط الوحيد serial_number القيمة الزمنية المراد معالجتها. ويقبل هذا الوسيط عدة أشكال مدخلة، تشمل الإشارة المباشرة إلى خلية تحوي تاريخاً ووقتاً (مثل =HOUR(A2))، أو ناتج صيغة رياضية أخرى ترجع رقماً تسلسلياً (مثل =HOUR(NOW()))، أو حتى رقماً عشرياً مباشراً يمثل كسر اليوم (مثل =HOUR(0.75)). كما يمكن للدالة في الإصدارات الحديثة أن تقبل سلاسل نصية واضحة للوقت ينجح إكسل في تفسيرها تلقائياً، مثل =HOUR("6:45 PM")، مع أن الاعتماد على النصوص المباشرة غير محبذ في النماذج الاحترافية لتفادي أخطاء الترجمة الإقليمية.
تلتزم دالة HOUR بإرجاع قيمة عددية صحيحة (Integer) تقع حتماً وبشكل قطعي ضمن النطاق المقفل بين الرقم 0 والرقم 23. يمثل الرقم 0 بداية اليوم الفلكي الجديد، أي الساعة الثانية عشرة منتصف الليل تماماً (12:00:00 AM)، في حين يمثل الرقم 23 الساعة الحادية عشرة مساءً (11:00 PM). وتتبع الدالة بشكل افتراضي وحصري نظام التوقيت العسكري أو نظام الأربع وعشرين ساعة (24-Hour System)، متجاهلة تماماً أي محددات صباحية أو مسائية بنظام الاثنتي عشرة ساعة في مخرجاتها الرقمية الصرفة.
2.2 المعالجة الحسابية الداخلية للكسور العشرية بواسطة HOUR
لفهم الخوارزمية الداخلية التي توظفها دالة HOUR، يجب النظر في كيفية اقتطاع الكسر العشري لليوم وتحويله إلى قيمة ساعة صحيحة. عندما تُمرر الخلية ذات القيمة المدمجة للتاريخ والوقت، يقوم إكسل أولاً بعزل الجزء الكسري العشري متجاهلاً الجزء الصحيح الممثل للأيام والسنوات تماماً. على سبيل المثال، إذا كانت القيمة التسلسلية هي 45220.654167 (حيث يمثل 45220 تاريخ اليوم ويمثل 0.654167 الوقت)، فإن الدالة تُهمل الرقم 45220 وتركز حصرها الرياضي على الكسر 0.654167.
بعد عزل الكسر العشري، تقوم الخوارزمية بضرب هذا الكسر بالعدد 24 (وهو إجمالي عدد ساعات اليوم الكامل). وفي المثال السابق، يؤدي ضرب 0.654167 في 24 إلى الناتج 15.700008. هنا تطبق الدالة منطق الاقتطاع الرياضي نحو الأدنى (Truncation) متخلصة من الأجزاء العشرية المتبقية (التي تمثل الدقائق والثواني)، لترجع الرقم الصحيح 15، وهو ما يعادل الساعة الثالثة بعد الظهر تماماً بنظام 24 ساعة.
تتعامل الخوارزمية مع الفوارق الدقيقة المرتبطة بالتدوير الحسابي ومشاكل النقطة العائمة في المعالجات الدقيقة بحذر شديد. فالأجزاء من الثانية (Milliseconds) لا يمكن أن تؤدي إلى رفع قيمة الساعة إلى الرقم التالي مهما بلغت قيمتها، ما لم تتجاوز عتبة الانتقال الكاملة إلى الساعة التالية؛ أي أن القيمة التي تكافئ الساعة “14:59:59.999” ستظل ترجع بدقة الرقم 14 عبر دالة HOUR، ولن يتم تدويرها تلقائياً إلى 15، نظراً لأن الدالة تقيس الساعات المنقضية بالكامل داخل الدورة اليومية الحالية.
2.3 الحدود التشغيلية والقيود الرياضية للدالة
على الرغم من الكفاءة الفائقة لدالة HOUR، فإنها مقيدة بحدود تشغيلية صارمة يجب على المحلل مراعاتها لتفادي الاستنتاجات الخاطئة. يتمثل القيد الأول والأساسي في عدم قدرة الدالة على التعامل مع الفترات الزمنية التراكمية (Cumulative Durations) التي تتجاوز سقف 24 ساعة. إذا كان لديك حقل يمثل مجموع ساعات العمل لمشروع ما وبلغت قيمته “35:00:00” ساعة، فإن إكسل سيخزن هذا الوقت رياضياً كرقم صحيح مضافاً إليه كسر (1.45833 يوم). وعند تمرير هذه القيمة لدالة HOUR، فإنها ستقتطع اليوم الكامل وترجع فقط الساعات المتبقية من اليوم الثاني، أي الرقم 11، متجاهلة الساعات الأربع والعشرين الأولى تماماً.
يتمثل القيد الثاني في سلوك الدالة مع الأرقام السالبة. في نظام تواريخ إكسل الافتراضي (نظام 1900)، لا يمكن تمثيل التواريخ والأوقات بأرقام سالبة. إذا أسفرت عملية طرح حسابية عن وقت سالب ومُرر إلى دالة HOUR، فإن إكسل سيرجع مباشرة خطأ #NUM! أو سلسلة من علامات المربع (######)، مما يعطل استخراج الساعة. تتطلب معالجة مثل هذه السيناريوهات تحويل الفوارق إلى قيم مطلقة باستخدام دالة ABS قبل استخراج الساعة.
أخيراً، يؤدي تركيز الدالة الحصري على مدار اليوم الفردي إلى تجريد القيمة الناتجة من أي سياق زمني أوسع؛ فالرقم 8 المستخرج من طابع زمني يعود ليوم الإثنين لا يحمل أي إشارة برمجية تميزه عن الرقم 8 المستخرج من يوم الجمعة أو من شهر مختلف تماماً. وبالتالي، فإن الاعتماد على مخرجات دالة HOUR وحدها دون الاحتفاظ بمتغيرات التمايز اليومي والشهري قد يؤدي إلى تشويه التحليلات الإحصائية عند دراسة البيانات الممتدة لعدة سنوات.

3. التطبيق العملي المباشر لاستخراج الساعة باستخدام دالة HOUR
3.1 إعداد بيئة البيانات وهيكلة جدول الإدخال
تبدأ المعالجة الاحترافية للبيانات في إكسل بتهيئة بيئة العمل وهيكلة جدول الإدخال بصورة قياسية. يجب تنظيم البيانات المصدرية بحيث يحتوي كل سجل على طابع زمني متسق وموحد في عمود مخصص، ولتكن التسمية القياسية لهذا الحقل هي Timestamp في العمود A مثلاً. ومن الضروري فحص اتساق صيغ التواريخ والأوقات للتأكد من خلوها من الإدخالات الشاذة أو المسافات الزائدة التي قد تعيق المحرك الحسابي.
في الخطوة التالية، يتم تخصيص عمود مستقل ومجاور للبيانات المصدرية، مع تسميته بوضوح ليعكس طبيعة المتغير الجديد، مثل Extracted_Hour أو ساعة_الحدث في العمود B. إن عزل المخرجات في عمود جديد يحافظ على سلامة البيانات الخام (Raw Data) ويمنع الكتابة فوقها، مما يتيح للمحلل العودة إلى الأصل للتدقيق ومطابقة النتائج في أي مرحلة من مراحل التحليل المتقدم.
كما يُنصح في مرحلة التهيئة بإجراء فحص أولي للخلايا الفارغة؛ فالخلية الفارغة تماماً في إكسل تُفسر رياضياً على أنها القيمة صفر عند تمريرها إلى دوال الوقت. ونظراً لأن القيمة صفر تكافئ في النظام التسلسلي منتصف الليل لليوم المرجعي الأول (0 يناير 1900)، فإن دالة HOUR سترجع الرقم 0 لتلك الخلايا الفارغة، وهو ما قد يُفسر خطأ على أنه نشاط فعلي وقع عند منتصف الليل، مسبباً تزييفاً في التوزيعات التكرارية للعينات.
3.2 كتابة الصيغة ونشرها عبر نطاق البيانات
لتطبيق استخراج الساعة، يتم النقر على الخلية الأولى المخصصة للنتائج، ولتكن الخلية B2 المقابلة لأول طابع زمني في الخلية A2. تُكتب الصيغة الرياضية الأساسية على النحو التالي:
=HOUR(A2)
تستخدم هذه المعادلة مبدأ المراجع النسبية (Relative References)؛ حيث تشير الخلية A2 إلى الإحداثي الأفقي المباشر للبيانات المدخلة دون استخدام علامات التثبيت ($). يسمح ذلك للصيغة بالتكيف الديناميكي عند نسخها رأسياً إلى الأسفل لتشير تلقائياً إلى A3 ثم A4 وهكذا عبر كامل السجلات.
لنشر الصيغة بكفاءة على آلاف السجلات اللحظية، يمكن استخدام “مقبض التعبئة” (Fill Handle) عبر النقر المزدوج على المربع الصغير الكائن في الزاوية اليسرى السفلى (أو اليمنى حسب الواجهة) من حدود الخلية B2. يقوم النقر المزدوج بإرسال الصيغة فورياً إلى نهاية النطاق المتصل للبيانات دون الحاجة للسحب اليدوي المجهد. وإذا كانت البيانات مهيكلة ضمن جداول إكسل الرسمية (Excel Tables) المنشأة عبر الأمر Ctrl + T، فإن كتابة الصيغة باستخدام المراجع المنظمة ستكون بالصيغة التالية:
=HOUR([@Timestamp])
وفي هذه الحالة، سيتولى الجدول نشر الصيغة الرياضية تلقائياً على كامل العمود المنشأ دون أي تدخل إضافي من المستخدم، مع الحفاظ على التحديث التلقائي لأي سجلات جديدة تضاف للجدول لاحقاً.
3.3 التحقق من صحة النتائج وضبط جودة الاستخراج
عقب نشر الصيغة، يجب تطبيق بروتوكول صارم لمراقبة الجودة والتحقق من صحة النتائج المستخرجة. تتمثل أولى خطوات الفحص في مراقبة “تنسيق الخلية التلقائي”؛ ففي كثير من الأحيان، يخطئ إكسل في تخمين نوع المخرج، محولاً تنسيق خلية النتيجة تلقائياً إلى تنسيق وقت مثل “0:00” أو “12:00 AM” بدلاً من إبقائه رقماً صحيحاً مجرداً. لتصحيح ذلك، يجب تحديد عمود النتائج بالكامل وتغيير تنسيقه من شريط الأدوات الرئيسي إلى تنسيق General أو Number مع تقليص المنازل العشرية إلى الصفر، ليظهر الرقم بصورته الصحيحة كعدد مجرد يسهل قراءته وحسابه.
تتضمن المرحلة الثانية مقارنة عينة عشوائية من المخرجات بالقيم الأصلية للتأكد من عدم وجود انزياح زمني غير مقصود ناتج عن إعدادات التوقيت المحلي أو حسابات المناطق الزمنية. يتم فحص القيم الحرجة بصورة خاصة، مثل عينة السجلات التي وقعت في الدقائق الأخيرة من الساعة (مثل 14:59:45) للتأكد من أنها أرجعت بالفعل الرقم 14 ولم تدور إلى 15.
أخيراً، يجب تدقيق القيم المتطرفة عند حافتي اليوم: النقطة الصفرية (0) الممثلة لمنتصف الليل، والنقطة النهائية (23) الممثلة للساعة الحادية عشرة ليلاً. يتم تصفية العمود واختبار السجلات المقابلة للرقم 0 للتأكد من أنها نتجت عن أوقات فعلية تقع بين 00:00:00 و 00:59:59 وليست ناتجة عن خلايا فارغة في عمود المصدر جرى تمريرها دون معالجة وقائية.

4. دمج الساعات والدقائق لإنشاء تمثيلات زمنية مخصصة
4.1 الربط المتسلسل باستخدام عامل الربط (&) مع دالة MINUTE
في العديد من السيناريوهات التحليلية، لا يكون الاكتفاء بالساعة المفردة كافياً لبناء فئات دقيقة للظواهر المقاسة، بل يتطلب الأمر دمج الساعة مع الدقائق لتشكيل فترات زمنية نصف ساعية أو ربع ساعية (مثل 14:30). لتحقيق هذا التجميع المخصص، يلجأ محللو البيانات إلى تقنية الربط المتسلسل (String Concatenation) التي تجمع بين المخرجات الرقمية لدالة HOUR والمخرجات الرقمية لدالة MINUTE عبر عامل الربط الأبجدي الرياضي (&). تُكتب الصيغة المبدئية الشائعة لهذه العملية على النحو التالي:
=HOUR(A2) & ":" & MINUTE(A2)
تقوم هذه الصيغة باقتطاع قيمة الساعة من الخلية A2 كقيمة رقمية، ثم اقتطاع قيمة الدقيقة كقيمة رقمية منفصلة، وتدمجهما سوياً مع وضع محرف النقطتين الرأسيتين الفاصل في المنتصف. يقوم عامل الربط بتحويل القيم الرقمية المستخلصة تلقائياً إلى سلسلة نصية متصلة.
ومع ذلك، يجب أن يدرك المحلل الأثر الجوهري لهذا التحويل؛ فالمخرج الناتج عن هذه الصيغة يصبح كائناً نصياً جامداً (Text String). هذا يعني أن النتيجة لم تعد تمثل رقماً تسلسلياً يمكن استخدامه مباشرة في حساب الفروق الزمنية بالدقائق أو إجراء العمليات الحسابية القياسية كالجمع والمتوسطات، بل أصبحت وسيلة عرض بصرية تفيد في إعداد التقارير النصية وتصنيف الحقول الاسمية في أدوات الاستعلام.
4.2 معالجة مشكلة غياب الصفر البادئ في الدقائق الفردية
تكشف الصيغة البسيطة الموضحة أعلاه عن عيب هيكلي كبير عند تطبيقها على أوقات تحتوي على دقائق فردية تقل قيمتها عن 10. فعندما ترجع دالة MINUTE قيمة الدقيقة 5 مثلاً لوقت مثل “14:05:00″، فإنها ترجع الرقم 5 مجرداً دون الصفر البادئ (Leading Zero). وبالتالي، تُسفر عملية الربط المتسلسل البسيطة عن مخرج نصي مشوه بصرياً يظهر بالشكل “14:5” بدلاً من التنسيق القياسي الدولي المتعارف عليه “14:05″، وهو ما يخل بجمالية التقارير ويفسد عمليات الترتيب الأبجدي في الجداول.
للتغلب على هذه المشكلة الشائعة، يتم دمج دالة TEXT لتنسيق ناتج الدقيقة قبل الربط، أو توظيف دالتي RIGHT و الربط النصي لفرض خانتين ثابتتين. الصيغة المثلى التي تعتمد على دالة TEXT تُصاغ كالتالي:
=HOUR(A2) & ":" & TEXT(MINUTE(A2), "00")
بدلاً من ذلك، يمكن استخدام المقاربة الميكانيكية بالاعتماد على دالة RIGHT عبر إضافة صفر بادئ وهمي ثم اقتطاع الخانتين الأخيرتين من اليمين حتماً:
=HOUR(A2) & ":" & RIGHT("0" & MINUTE(A2), 2)
تضمن كلتا الطريقتين ظهور الأوقات بدقة رقمية قياسية تحتوي دائماً على خانتين لكل من الدقائق والساعات، مما يجعل السلسلة الناتجة محايدة وأنيقة وقابلة للفرز التلقائي من الألف إلى الياء بصورة متسقة زمنياً ومنطقياً.
4.3 بناء مقاييس زمنية ثلاثية تجمع الساعات والدقائق والثواني
يمكن توسيع هذا المفهوم المعماري لبناء مقاييس زمنية ثلاثية الأبعاد تعزل وتدمج الساعات والدقائق والثواني في سلسلة مخصصة، وذلك بإدخال دالة SECOND في تركيبة المعادلة. تتكامل هذه البنية في الصيغة الموسعة التالية:
=HOUR(A2) & ":" & TEXT(MINUTE(A2), "00") & ":" & TEXT(SECOND(A2), "00")
تتيح هذه الصيغة تشكيل طابع زمني نقي مجرد من التاريخ ومعاد بناؤه بالكامل وفق خوارزميات المستخدم. غير أنه من منظور الكفاءة الحاسوبية، فإن استخدام هذه المعادلات الطويلة لاستهداف المظهر البصري المجرد يعد هدراً لموارد المعالجة في المصنفات الضخمة؛ إذ يمكن تحقيق النتيجة البصرية ذاتها دون أي صيغ مركبة، وذلك عبر نسخ القيمة الأصلية للخلية وتطبيق “تنسيق مخصص” (Custom Cell Format) مباشر بالصيغة [h]:mm:ss أو hh:mm:ss.
تبرز الحاجة الحقيقية للمعادلات المركبة الثلاثية فقط عندما يرغب المحلل في نقل السلسلة النصية الناتجة إلى برمجيات خارجية كقواعد بيانات أو تصديرها كملفات CSV مهيكلة تتطلب نمطاً صارماً من النصوص المنفصلة التي تمنع برامج الوجهة من إعادة تفسير الوقت وفق إعداداتها المحلية التلقائية.
5. استخراج الساعة باستخدام دالة TEXT كبديل نصي متقدم
5.1 الصياغة العامة لدالة TEXT وأكواد التنسيق الزمني
تُمثل دالة TEXT إحدى أقوى أدوات التحويل الصرفي في برنامج إكسل؛ إذ تسمح للمستخدم بتحويل أي قيمة رقمية أو تسلسلية إلى سلسلة نصية ذات مظهر محدد بدقة باستخدام أكواد تنسيق التنسيق المخصص. في سياق استخراج الساعة، تُعد هذه الدالة بديلاً متقدماً ومرناً للغاية لدالة HOUR، وتُبنى نحويّاً على النحو التالي:
=TEXT(value, format_text)
يقوم الوسيط value باستقبال الرقم التسلسلي للطابع الزمني، بينما يحدد الوسيط format_text كود التنسيق الزمني المحصور بين علامتي اقتباس مزدوجتين. لاستخراج الساعة فقط، يمتلك المحلل خيارين رئيسيين من الأكواد:
- الكود
"h": يستخرج رقم الساعة بنظام 24 ساعة دون صفر بادئ للساعات التي تقل عن 10 (مثل إرجاع"9"للساعة التاسعة صباحاً، و"14"للثانية ظهراً). - الكود
"hh": يستخرج رقم الساعة بنظام 24 ساعة مع فرض الصفر البادئ حتماً (مثل إرجاع"09"و"14")، وهو الخيار الأنسب لبناء المفاتيح الفئوية الموحدة.
الخاصية المحورية هنا هي أن مخرج دالة TEXT يكون دائماً نصاً (String) وليس رقماً حسابياً، حتى لو كانت النتيجة الظاهرة تتألف من أرقام بحتة مثل "09". هذا التمييز حاسم للمحلل الإحصائي؛ فالنص الناتج لن يُحتسب في المتوسطات الرياضية ولن تراه دوال الجمع، إلا إذا أُجبر إكسل على تحويله رياضياً عبر المعاملات الحسابية الثنائية.
5.2 الاستخراج وفق نظام 12 ساعة مقابل نظام 24 ساعة
من أبرز نقاط التفوق الوظيفي لدالة TEXT على دالة HOUR قدرتها الفائقة على التعامل مع نظام التوقيت المدني أو نظام الاثنتي عشرة ساعة (12-Hour System) المرفق بمؤشرات الصباح والمساء، وهو ما تعجز دالة HOUR عن تقديمه بصورة مباشرة ومجردة. تتيح دالة TEXT تضمين محددات الفترة (AM/PM) في كود التنسيق بسهولة بالغة عبر الصيغة التالية:
=TEXT(A2, "hh AM/PM")
عند تطبيق هذه الصيغة على طابع زمني يحتوي على الوقت “14:35:00″، فإنها ترجع السلسلة النصية الأنيقة "02 PM". وتُعد هذه الميزة ذات أهمية قصوى عند إعداد التقارير الإدارية الموجهة للقيادات التنفيذية، أو في سجلات الملاحظات السريرية الطبية التي تعتمد تقليدياً على نظام التوقيت المدني لمنع الالتباس لدى مقدمي الرعاية الصحية.
يقارن الجدول المفاهيمي التالي بين المخرجات النصية لنظامي العرض؛ فنظام 24 ساعة يوفر تدرجاً زمنياً مستمراً ومتوافقاً مع الفرز الآلي وقواعد البيانات الرقمية، بينما يوفر نظام 12 ساعة وضوحاً تفسيرياً مباشراً للبشر، دون الحاجة إلى كتابة معادلات شرطية مركبة مثل IF(HOUR(A2)>12, ...) لاختبار ما إذا كان الوقت يقع في الشطر الصباحي أو المسائي من اليوم.
5.3 مقارنة مقاربة دالة HOUR مقابل دالة TEXT
تقتضي الكفاءة البرمجية في معالجة البيانات الضخمة المفاضلة الدقيقة بين توظيف دالة HOUR الرقمية وتوظيف دالة TEXT النصية. ترتكز المفاضلة على ثلاثة محاور رئيسية: طبيعة الاستخدام النهائي، وسرعة المعالجة الحاسوبية، والتوافق مع قواعد البيانات الخارجية.
من حيث استهلاك الذاكرة وسرعة المعالجة الحسابية (Performance Overhead)، تتفوق دالة HOUR تفوقاً ساحقاً؛ إذ تتعامل مع الأرقام مباشرة ضمن مسجل العمليات الحسابية في وحدة المعالجة المركزية، ولا تتطلب إنشاء كائنات نصية جديدة في الذاكرة. في المقابل، فإن دالة TEXT تتطلب تحويل الرقم إلى كود محرفي وتخزينه في جدول النصوص بالذاكرة، وهو ما يستهلك زمناً أطول عند تطبيق الصيغة على مئات الآلاف من السجلات.
أما من زاوية التوافق واستخدام المخرجات، فإن دالة HOUR هي الخيار الإلزامي إذا كانت الساعات المستخرجة ستدخل في معادلات إحصائية لاحقة، أو ستُستخدم كمحاور رقمية مستمرة في النماذج الانحدارية. بينما تصبح دالة TEXT الخيار الأمثل عندما يكون الهدف هو العرض البصري المباشر، أو عندما يُشترط وجود الصفر البادئ لربط السجلات بمفاتيح بحث نصية في برمجيات أخرى أو تصديرها إلى أنظمة ERP صارمة من حيث قيود الأنماط النصية.
6. تقنيات استخراج الساعة من البيانات النصية غير القياسية
6.1 توظيف دوال النصوص الرياضية (MID, LEFT, RIGHT, FIND)
في كثير من الحالات العملية، لا تتوفر البيانات الزمنية بتنسيق تسلسلي نظامي، بل تأتي على هيئة نصوص مشوهة أو غير قياسية ناتجة عن تصدير خاطئ من استبيانات إلكترونية أو أجهزة قياس بيئية قديمة. قد يُخزن الوقت داخل نصوص مدمجة مثل “Log_14:35:10_Report”. في هذه السيناريوهات، تفشل دوال الوقت التقليدية تماماً، ويتعين على المحلل استخدام ترسانة دوال معالجة النصوص البرمجية لاقتطاع خانة الساعة بدقة رياضية.
تعتمد الإستراتيجية الأساسية على استخدام دالة FIND (أو SEARCH غير الحساسة لحالة الأحرف) لتحديد الإحداثي الدقيق للرمز الفاصل، وهو في الغالب محرف النقطتين الرأسيتين (:). وبمجرد تحديد موقع هذا الفاصل، يمكن توظيف دالة MID للتحرك خطوتين إلى الوراء لاقتطاع رقم الساعة المكون من خانتين. تُصاغ هذه التركيبة النصية كالتالي:
=MID(A2, FIND(":", A2) - 2, 2)
إذا كان الوقت يقع دائماً في أقصى يسار أو أقصى يمين السلسلة النصية بطول ثابت، يمكن الاعتماد مباشرة على دالتي LEFT أو RIGHT دون الحاجة للبحث عن الفواصل. إلا أن التباين الشديد في أطوال النصوص الناتجة عن أخطاء الإدخال اليدوي يفرض دائماً استخدام دالة FIND لضبط نقطة الانطلاق ديناميكياً، مما يضمن اقتطاع الساعة بصورة صحيحة بصرف النظر عن طول النصوص التي تسبقها أو تليها في السجل.
6.2 تحويل السلاسل المستخرجة إلى قيم تسلسلية عبر TIMEVALUE
بعد اقتطاع الساعة أو النص الزمني من السلسلة المعقدة، تظل النتيجة نصاً صريحاً. وهنا يأتي الدور المحوري لدالة TIMEVALUE؛ وظيفة هذه الدالة هي استقبال أي سلسلة نصية تمثل وقتاً مفهوماً وتحويلها مباشرة إلى الكسر العشري التسلسلي المكافئ لها في نظام إكسل. وبمجرد استرجاع الكسر العشري، يمكن تطبيق دالة HOUR بسلاسة متناهية.
يمكن دمج العمليتين في صيغة فائقة الكفاءة تتعامل مع النصوص الزمنية المقتطعة وتستخلص منها قيمة الساعة الرقمية في خطوة واحدة:
=HOUR(TIMEVALUE(TRIM(CLEAN(A2))))
لاحظ هنا الإدراج الوقائي لدالتي TRIM و CLEAN؛ حيث تتولى دالة CLEAN إزالة أي محارف تحكم غير مرئية قد تنشأ عن تصدير ملفات الأنظمة المدمجة، بينما تتولى دالة TRIM مسح المسافات البادئة واللاحقة غير المرئية التي تُعد السبب الأكثر شيوعاً لفشل دالة TIMEVALUE وإرجاعها لخطأ #VALUE!. تضمن هذه الصياغة المركبة تحويل أعتى النصوص المشوهة إلى رقم تسلسلي صحيح ومن ثم اقتطاع ساعته بدقة.
6.3 تفكيك طوابع الوقت المستوردة من أنظمة خارجية (ISO 8601 وUnix)
تفرض التطورات التقنية الحديثة التعامل مع طوابع زمنية معيارية دولية مثل معيار ISO 8601 (مثل: 2026-10-21T14:35:00Z)، حيث يفصل الحرف T بين مكون التاريخ ومكون الوقت، وينتهي الطابع بالحرف Z للدلالة على توقيت غرينتش. عند استيراد هذه السلاسل في إصدارات إكسل التي لا تتعرف عليها تلقائياً، يمكن استخراج الساعة بالبحث عن موضع الحرف T واقتطاع الخانتين التاليتين له مباشرة باستخدام الصيغة الرياضية التالية:
=MID(A2, FIND("T", A2) + 1, 2) + 0
لاحظ إضافة + 0 في نهاية الصيغة؛ هذه الحيلة الرياضية تجبر محرك إكسل على تحويل المخرج النصي المقتطع فورياً إلى رقم صحيح دون الحاجة لدوال تحويل إضافية.
أما النمط الثاني شديد الأهمية في قواعد البيانات السحابية وسجلات الخوادم فهو “طابع يونكس الزمني” (Unix Timestamp أو Epoch Time)، والذي يمثل إجمالي عدد الثواني المنقضية منذ 1 يناير 1970 UTC. لاقتطاع الساعة من طابع يونكس المسجل في الخلية A2، يجب أولاً تحويله إلى نظام تاريخ إكسل عبر قسمة الثواني على عدد ثواني اليوم الكامل (86400 ثانية) وإضافة تاريخ البداية، ثم تطبيق دالة HOUR على النحو التالي:
=HOUR((A2 / 86400) + DATE(1970, 1, 1))
تُعيد هذه المعادلة الحسابية المتقنة ربط البيانات الخام المستوردة من خوادم الويب بالمعمارية الزمنية لبرنامج إكسل، مما يمكن المحلل من عزل ساعة الحدث بدقة متناهية ودون أي انزياح حسابي.
7. الحلول الحسابية الرياضية والمنطقية البديلة لاستخراج الساعة
7.1 استخراج الساعة باستخدام دالتي INT وMOD دون دوال زمنية
بعيداً عن الاعتماد على دوال التاريخ والوقت الجاهزة، يمتلك المحلل الرياضي القدرة على استخراج الساعة باستخدام العمليات الحسابية البحتة وخوارزميات بواقي القسمة. تستند هذه التقنية إلى حقيقة أن الوقت هو الكسر العشري المتبقي بعد طرح الأيام الصحيحة من الرقم التسلسلي الكامل. هنا تبرز دالة MOD التي ترجع باقي القسمة الرياضية؛ فعند قسمة أي رقم تسلسلي على العدد 1، يُلغى الجزء الصحيح بالكامل ويبقى الكسر العشري فقط ممثلاً الوقت المنقضي من اليوم:
=MOD(A2, 1)
بمجرد عزل الكسر العشري الصافي، نقوم بضربه في 24 للحصول على إجمالي الساعات بصيغة كسرية. ولإلغاء الكسور المتبقية (التي تعبر عن أجزاء الساعة من دقائق وثوانٍ)، نطبق دالة الاقتطاع الصحيح INT (أو TRUNC)، فتكون المعادلة الرياضية المتكاملة كالتالي:
=INT(MOD(A2, 1) * 24)
تتمتع هذه الطريقة الحسابية بفلسفة معمارية متميزة؛ فهي تعمل بشكل مستقل تماماً عن أي إعدادات إقليمية أو لغوية للبرنامج، وتتفوق في النماذج الخوارزمية التي تتطلب أقصى درجات سرعة المعالجة الحاسوبية (High-Performance Computing). كما أنها تشكل أساساً لفهم كيفية عمل خوارزميات إكسل الداخلية في عزل الوحدات الزمنية.
7.2 توظيف الدوال الديناميكية الحديثة LET وLAMBDA لأتمتة الاستخراج
مع إطلاق الدوال الديناميكية الحديثة في مايكروسوفت 365، ارتقى مستوى صياغة المعادلات الحسابية ليتطابق مع ممارسات هندسة البرمجيات الاحترافية. تتيح دالة LET للمحلل تعريف متغيرات وسيطة داخل الصيغة الواحدة لمنع تكرار العمليات الحسابية المجهدة وتسهيل قراءة المعادلات المعقدة. يمكن صياغة استخراج الساعة المتقدم بواسطة LET كالتالي:
=LET(RawData, A2, CleanData, IFERROR(TIMEVALUE(RawData), RawData), HOUR(CleanData))
الأمر الأكثر إثارة للإعجاب هو استخدام دالة LAMBDA لبناء دالة مخصصة (Custom Reusable Function) يحددها المستخدم ويحفظها في “مدير الأسماء” (Name Manager) باسم رمزي دائم مثل GET_HOUR. تُكتب الصيغة خلف الكواليس كالتالي:
=LAMBDA(dt, HOUR(IF(ISNUMBER(dt), dt, TIMEVALUE(TRIM(dt)))))
بعد حفظ هذا التعريف، يصبح بمقدور أي مستخدم في المصنف كتابة الصيغة البسيطة =GET_HOUR(A2) مباشرة في أي خلية. تتولى هذه الدالة المخصصة فحص نوع البيانات، وتنظيف النصوص إن وجدت، واستخراج الساعة الرقمية دون الحاجة لإعادة كتابة منطق المعالجة في كل مرة، مما يقلل من احتمالات الخطأ البشري في المشاريع الكبرى.
7.3 تصنيف الساعات المستخرجة إلى فترات عمل ونوبات تشغيل
نادراً ما يتوقف التحليل الإحصائي عند مجرد استخراج الرقم المجرد للساعة؛ بل يتطلب في العادة تصنيف تلك الساعات إلى نوبات عمل وظيفية (Work Shifts) أو فترات زمنية دالة (مثل: وردية صباحية، وردية مسائية، وردية ليلية). لتحقيق ذلك بكفاءة، يتم دمج دالة HOUR مع دالة الاختيار المنطقي المتعدد الحديثة IFS وفق قواعد منطقية محددة:
=IFS(HOUR(A2)<8, "الوردية الليلية", HOUR(A2)<16, "الوردية الصباحية", HOUR(A2)<24, "الوردية المسائية")
تتعامل هذه المعادلة مع الساعات بتسلسل منطقي تصاعدي دقيق. غير أن التحدي الرياضي الأكبر يظهر عندما تمتد الوردية عبر منتصف الليل الفاصل بين يومين (مثل وردية تبدأ من الساعة 10 مساءً وحتى 6 صباحاً). في هذه الحالة، يمكن توظيف دالة OR المنطقية، أو استخدام دالة البحث التقريبي LOOKUP أو VLOOKUP عبر جدول مرجعي مصغر يربط كل ساعة من الساعات الأربع والعشرين بمسمى الوردية المقابلة، مما يضمن تصنيفاً مرناً وقابلاً للتعديل الفوري دون كسر البنية المنطقية للمعادلات.
8. استخراج الساعة عبر بيئة Power Query لمعالجة مجموعات البيانات الضخمة
8.1 استيراد البيانات وتعيين النوع الزمني الصحيح
عندما تتعاظم أحجام البيانات لتصل إلى مئات الآلاف أو الملايين من السجلات (مثل سجلات الحساسات الحيوية وسجلات تسجيل الدخول للخوادم)، يصبح استخدام صيغ الخلايا التقليدية في أوراق العمل أمراً غير عملي ومجهداً لذاكرة الحاسوب. هنا يبرز دور محرك الاستخراج والتحويل والتحميل المدمج في إكسل المعروف باسم Power Query، والذي يوفر بيئة معالجة خطية (Data Pipeline) فائقة السرعة والاستقرار.
تبدأ العملية باستيراد البيانات عبر تبويب Data > Get Data وتحميل الجدول إلى محرر Power Query. الخطوة الإلزامية الأولى التي لا غنى عنها تتمثل في التحقق من “نوع بيانات العمود” (Column Data Type). يجب أن يحرص المحلل على تعيين نوع عمود الطوابع الزمنية صراحة إلى Date/Time عبر النقر على أيقونة رأس العمود واختيار النوع الملائم.
إن التحويل الصريح للنوع في مرحلة مبكرة يمنع حدوث أخطاء المعالجة اللاحقة؛ فلو بقي العمود مصنفاً كنص (Text) أو كنوع غير محدد (Any)، فإن أدوات استخراج الوقت المدمجة لن تتمكن من تطبيق العمليات الرياضية الزمنية، مما قد يضطر المحلل لإعادة خطوات التحويل وهدر الوقت التشغيلي لخط المعالجة.
8.2 استخدام أدوات واجهة المستخدم الرسومية لاستخراج الساعة
يوفر محرر Power Query واجهة رسومية ثرية بالخيارات التي تتيح استخراج الساعة بنقرات معدودة ودون الحاجة لكتابة أي كود برمجي. بعد تحديد عمود الطابع الزمني المنسق كـ Date/Time، يتوفر للمحلل مساران وظيفيان عبر شريط الأدوات:
- مسار التعديل المباشر (Transform): عبر الذهاب إلى تبويب
Transform > Time > Hour > Hour، حيث يُستبدل الطابع الزمني الأصلي مباشرة بقيمة الساعة الرقمية، مما يوفر المساحة ولكنه يزيل تفاصيل التاريخ والوقت الأصلية. - مسار إضافة عمود جديد (Add Column): وهو المسار الموصى به دائماً في التحليلات الاحترافية؛ ويتم عبر
Add Column > Time > Hour > Hour. يؤدي هذا الخيار إلى إنشاء عمود جديد بالكامل يحمل اسمHourمع الاحتفاظ بالبيانات الأصلية دون أي مساس.
علاوة على استخراج الساعة المجردة، تتيح القائمة خياراً إضافياً بالغ الأهمية يُعرف باسم “بداية الساعة” (Start of Hour). هذا الخيار لا يرجع مجرد رقم صحيح، بل يرجع طابعاً زمنياً كاملاً ومعدلاً بحيث تُصفّر فيه الدقائق والثواني (مثل تحويل 2026-10-21 14:35:12 إلى 2026-10-21 14:00:00)، وهو تنسيق مثالي لتجميع الأحداث عبر فترات زمنية ساعية متصلة مع الحفاظ على تسلسل الأيام والتواريخ التاريخية دون انقطاع.
8.3 كتابة دوال استخراج الساعة بلغة M المتقدمة
للمستخدمين المتقدمين الذين يسعون لأتمتة معالجة البيانات وتضمين شروط مخصصة، تتيح لغة البرمجة الوظيفية المدمجة في Power Query، والمعروفة باسم لغة M، تحكماً دقيقاً في مسار التحويل. الدالة البرمجية القياسية لعزل الساعة من حقل زمني هي Time.Hour، وتُستخدم داخل تعبير إنشاء الأعمدة المخصصة بالصيغة التالية:
Time.Hour(DateTime.Time([Timestamp]))
تقوم هذه العبارة البرمجية أولاً بتحويل قيمة التاريخ والوقت في السجل الحالي إلى قيمة وقت صافية باستخدام DateTime.Time، ثم تُمرر النتيجة لدالة Time.Hour لاقتطاع القيمة الصحيحة للساعة والتي تتراوح بدقة بين 0 و 23.
ولضمان صمود خط المعالجة أمام البيانات المفقودة أو القيم التي تحتوي على أخطاء دون أن يتوقف تحديث الاستعلام، يمكن دمج كتل الحماية البرمجية try...otherwise في كود M كما يلي:
try Time.Hour(DateTime.Time([Timestamp])) otherwise null
يضمن هذا التعبير البرمجي أنه في حال واجه المحرك خلية تالفة أو نصاً لا يمكن تحويله، فإنه سيسجل قيمة فارغة (null) بهدوء ويواصل معالجة ملايين السجلات المتبقية دون انقطاع. وعند إغلاق المحرر والتحميل (Close & Load)، تتدفق الساعات المستخرجة بسلاسة إلى ورقة عمل إكسل أو مباشرة إلى نموذج بيانات Power Pivot للبدء في التحليل الإحصائي المتقدم.
9. معالجة الأخطاء والتشخيص الفني لمشاكل استخراج الوقت
9.1 استكشاف أخطاء القيمة (#VALUE!) وتصحيح التنسيقات غير المتطابقة
يعد الخطأ #VALUE! العارض التقني الأكثر تكراراً عند محاولة استخراج الساعة في إكسل. يشير هذا الخطأ صراحة إلى أن الدالة المستدعية (مثل HOUR) تلقت وسيطاً رياضياً لا يمكنها التعرف عليه أو تحليله كقيمة رقمية أو تاريخ تسلسلي معتمد. ينشأ هذا عادة عندما يتم لصق البيانات من مصادر خارجية تحتفظ بنصوص مخفية، أو عندما يُكتب التاريخ بتنسيق يخالف منطق المحرك الرياضي المحلي للحاسوب.
لإجبار إكسل على إعادة قراءة القيم وتصحيح انحرافها، تمثل أداة “نص إلى أعمدة” (Text to Columns) الحل الجذري الأكثر سرعة وفاعلية. يمكن للمحلل تحديد عمود التواريخ المعطوبة بالكامل، ثم فتح الأداة من تبويب Data، والنقر المباشر على “Next” حتى الوصول إلى الخطوة الثالثة، ثم اختيار تنسيق Date وتحديد الترتيب الصحيح للأيام والأشهر كما تظهر في النص الأصلي (مثل DMY أو MDY)، ثم الضغط على “Finish”. تقوم هذه العملية بإعادة بناء الأرقام التسلسلية خلف الكواليس فورياً وتصحيح حسابات دالة HOUR المرتبطة بها تلقائياً.
كإجراء وقائي إضافي داخل الصيغ الرياضية نفسها، يمكن تغليف دالة الاستخراج داخل دالة IFERROR، مما يوفر مخرجاً بديلاً ومدروساً في حال تعثر الحساب، وتفادي تشويه لوحات القياس بسلاسل الأخطاء البرمجية:
=IFERROR(HOUR(A2), "بيانات غير صالحة")
9.2 إدارة مشاكل الإعدادات الإقليمية والفواصل الزمنية
تخلق الإعدادات الإقليمية (Regional Settings) لنظام التشغيل فجوة تشغيلية كبرى قد تؤدي إلى انهيار استخراج الوقت عند مشاركة المصنفات عبر الحدود الدولية. يكمن جوهر المشكلة في اختلاف الرموز الفاصلة المعتمدة؛ فبينما تعتمد الأنظمة المتوافقة مع المعايير الأمريكية والبريطانية محرف النقطتين الرأسيتين (:) كفاصل قياسي بين الساعات والدقائق (مثل 14:30)، تعتمد بعض البيئات الأوروبية ومناطق أخرى الفاصلة العشرية أو النقطة المفردة (14.30).
إذا فُتح مصنف يحتوي على أوقات كُتبت بنظام النقطة المفردة على جهاز حاسوب مهيأ بالفاصل القياسي، سيعجز إكسل تماماً عن تفسيرها كأوقات صالحة وسيعاملها كنصوص صماء، مما يعطل دالة HOUR على الفور. للتغلب على هذه المعضلة الحسابية دون تغيير إعدادات نظام التشغيل بالكامل، يمكن صياغة معادلة استبدال نصية تعيد توحيد الفواصل قبل المعالجة:
=HOUR(TIMEVALUE(SUBSTITUTE(A2, ".", ":")))
تقوم دالة SUBSTITUTE هنا بمسح الفواصل النقطية غير المتوافقة واستبدالها فورياً بالنقطتين الرأسيتين المعترف بهما عالمياً، مما يعيد تمكين دالتي TIMEVALUE و HOUR من قراءة الوقت واستخراج الساعة الصحيحة بسلاسة تامة بصرف النظر عن بيئة التشغيل.
9.3 التعامل مع حالات منتصف الليل والتوقيت الصيفي
تتطلب نقطة منتصف الليل (Midnight) فهماً خاصاً من محلل البيانات؛ فالرقم 0 الذي ترجعه دالة HOUR عند معالجة وقت منتصف الليل تماماً (12:00:00 AM) لا يعني على الإطلاق غياب البيانات أو فراغ القيمة، بل هو تمثيل حسابي دقيق للساعة الصفرية في مطلع اليوم الفلكي الجديد. وقد يقع بعض المحللين في فخ استخدام دوال الفحص المنطقي مثل IF(B2=0, ...) للتعامل مع الخلايا الفارغة، مما يؤدي دون قصد إلى حذف أو إهمال أنشطة حيوية حدثت بالفعل عند منتصف الليل. يجب التمييز البرمجي الصارم بين الخلية التي تحوي صفراً ناتجاً عن وقت حقيقي، وتلك الفارغة أصلاً باستخدام الدالة ISBLANK.
من جانب آخر، يفرض التوقيت الصيفي (Daylight Saving Time – DST) تحديات بنيوية على تحليل الساعات المستخرجة. فعند تقديم الساعة أو تأخيرها بمقدار ستين دقيقة في مطلع فصلي الربيع والخريف، يطرأ انقطاع أو تكرار في تسلسل الساعات الفلكية (ساعة تختفي تماماً وساعة تتكرر مرتين في اليوم ذاته). إذا كانت البيانات الزمنية تجمع نشاطاً حساساً ومستمراً (مثل مراقبة النبض أو أداء الخوادم)، فإن استخراج الساعة دون تعديل قد يظهر انحرافات مفاجئة لا تعكس السلوك الحقيقي.
تتمثل الممارسة القياسية للتغلب على اضطرابات التوقيت الصيفي وتعدد النطاقات الجغرافية في تحويل كافة الطوابع الزمنية المصدرية فورياً إلى توقيت غرينتش الموحد (UTC) قبل الشروع في استخراج الساعات. هذا يضمن تدفقاً خطياً منتظماً للساعات دون قفزات مفاجئة، مع إمكانية إضافة عمود إزاحة رياضي (Offset) لإرجاع الساعات للتوقيت المحلي عند الرغبة في إعداد التقارير السلوكية التي ترتبط بساعات الاستيقاظ والنوم الطبيعية.
10. تطبيقات تحليلية متقدمة مبنية على الساعة المستخرجة
10.1 التحليل التكراري والتوزيع الساعي عبر الجداول المحورية (Pivot Tables)
يُعد نقل عمود الساعات المستخرجة إلى بيئة الجداول المحورية (Pivot Tables) التطبيق العملي الأبرز لتحويل الأرقام المجردة إلى رؤى استراتيجية ملموسة. بمجرد سحب حقل Extracted_Hour ووضعه في منطقة الصفوف (Rows Area)، تتلخص آلاف الصفوف الزمنية المتناثرة فورياً في أربعة وعشرين صفاً بيانياً يمثل التدرج الزمني لليوم بالكامل.
بوضع حقل المعاملات أو الملاحظات في منطقة القيم (Values Area) وتعيين التلخيص على دالة العد Count، يتشكل منحنى التوزيع التكراري اليومي للنشاط. تتيح هذه الهيكلة للمحلل رصد “ساعات الذروة” بدقة إحصائية متناهية؛ حيث تقفز الساعات التي تشهد أعلى كثافة تشغيلية بوضوح تام، مما يوجه الإدارة لإعادة توزيع الموارد البشرية والتقنية لتغطية تلك الساعات الحرجة بكفاءة.
علاوة على التكرار العددي البسيط، يمكن تغيير إعدادات عرض القيم لإظهار “النسبة المئوية من الإجمالي” (% of Column Total). يكشف هذا التحويل عن الوزن النسبي لكل ساعة من ساعات اليوم بالنسبة لمجمل النشاط اليومي؛ فيتضح مثلاً أن الفترة المحصورة بين الساعة الواحدة ظهراً والثالثة عصراً تستحوذ وحدها على 35% من مجمل المبيعات أو الشكاوى، مما يوفر أساساً كمياً صلباً لبناء سياسات التشغيل المؤسسي.
10.2 التصور البصري والتنسيق الشرطي لبيانات الساعات
تكتسب الساعات المستخرجة قوة تواصلية مضاعفة عند دعمها بأدوات التصور البصري المباشر المدمجة في إكسل. يعد “التنسيق الشرطي” (Conditional Formatting) وسيلة فائقة التأثير لتمييز الأنماط الساعية؛ حيث يمكن تطبيق “مقاييس الألوان” (Color Scales) الثلاثية (من الأخضر إلى الأصفر ثم الأحمر) على عمود الساعات أو على قيم التكرار المرتبطة بها في الجداول، مما يحول جدول البيانات الصماء إلى “خريطة حرارية” (Heatmap) بديهية تكشف فترات الهدوء والضغط التشغيلي في لمحة بصرية خاطفة.
على صعيد الرسوم البيانية، يُعد المخطط العمودي (Column Chart) والمخطط المساحي (Area Chart) التمثيلين الهندسيين الأنسب لعرض البيانات الساعية. يعبر المحور الأفقي بدقة عن الساعات من 0 إلى 23 كمتغير ترتيبي متصل، بينما يعبر المحور الرأسي عن حجم النشاط أو التباين في الأداء المقاس، مما يرسم صورة واضحة للشكل الرياضي لتوزيع الأحداث عبر اليوم، سواء كان توزيعاً طبيعياً متماثلاً حول الظهيرة أو توزيعاً متعدد القمم يتبع مواعيد الدوام الرسمي.
بالإضافة إلى ذلك، يمكن استخدام التنسيق الشرطي المعتمد على الصيغ لرصد الحوادث الأمنية والتشغيلية غير الطبيعية فور وقوعها. فبإدخال صيغة شرطية مثل:
=OR(B2<7, B2>19)
يمكن تلوين السجلات التي تشير إلى عمليات تسجيل دخول أو سحب مالي حدثت خارج ساعات العمل الرسمية (قبل السابعة صباحاً أو بعد السابعة مساءً) باللون الأحمر التنبيهي فورياً، مما يوفر نظام تدقيق لحظي سريع يدعم فرق الرقابة والامتثال الداخلي.
10.3 الاستفادة من بيانات الساعات في الدراسات السلوكية والنماذج التفسيرية
في الأبحاث المنهجية التطبيقية، مثل دراسات النظم اليومية وتتبع الاستجابات البيولوجية والسلوكية عبر الزمن (Experience Sampling Methods و Ambulatory Monitoring)، تكتسب الساعة المستخرجة وزناً علمياً فائق الأهمية. في هذه الدراسات المتقدمة، لا يُنظر للوقت ككيان إداري، بل كمتغير مفسر للتقلبات الفسيولوجية والنفسية والأداء الحركي والإدراكي لدى المشاركين على مدار ساعات اليقظة والعمل (Yang, 2020).
تُعد عملية استخراج الساعة والتنظيف الزمني للبيانات في إكسل وبرمجيات التحليل خطوة حاسمة لمعالجة تدفقات سلاسل البيانات الكثيفة الناتجة عن المستشعرات الذكية والأجهزة القابلة للارتداء التي تقيس المؤشرات الحيوية بشكل مستمر لدى الكوادر المهنية كالممرضين في البيئات الحرجة (Hosseini et al., 2022؛ Hosseini et al., 2021). يسمح عزل متغير الساعة للمحللين بدراسة تباين مستويات الإجهاد والتوتر النفسي بحسب أوقات اليوم المختلفة ونوبات العمل، مما يوفر مدخلات نظيفة ومحددة لبناء خوارزميات التنبؤ المتقدمة بمستويات الضغط العصبي باستخدام نماذج تعلم الآلة (Korkmaz et al., 2025؛ Roy, 2024).
وعلاوة على ذلك، يُسهم استخلاص الساعات في التنبؤ الزمني بالمؤشرات الرقمية الحيوية للصحة النفسية وحالات الوجدان والانفعال الإيجابي والسلبي بدقة متناهية عبر الأجهزة الذكية (Saylam & İncel, 2023). كما يفيد تتبع البصمة الزمنية للساعات المستخرجة في رصد التغيرات السلوكية والأنماط التعبيرية عبر التدوينات والمنشورات الرقمية، وهو ما يدعم تدريب الشبكات العصبية العميقة لغايات الكشف المبكر عن اضطرابات الصحة النفسية بناءً على توقيت نشاط المستخدمين اليومي (Saeed & Cha, 2025). بعد استخراج ساعات الأحداث، يمكن توظيف اختبارات تحليل التباين (ANOVA) لاختبار دلالة الفروق الإحصائية في الأداء السلوكي أو الاستجابة الفسيولوجية عبر الساعات المتعاقبة، وصولاً إلى بناء لوحات تحكم ديناميكية تفاعلية تعتمد على مقسمات طريقة العرض (Slicers) لفلترة المؤشرات اللحظية بحسب الساعة المختارة بدقة بالغة.
خاتمة
استعرض هذا الدليل الأكاديمي الموسع الأبعاد المتكاملة لعملية استخراج الساعة من التاريخ والوقت في برنامج إكسل، بدءاً من تفكيك الأساس النظري للبنية الرقمية المتسلسلة التي تعتمد عليها البرمجية، وصولاً إلى أحدث تقنيات المعالجة عبر محرك الاستعلامات Power Query والدوال الديناميكية الحديثة. وقد تبين بجلاء أن النجاح في إدارة هذه البيانات يرتكز أولاً وقبل كل شيء على الإدراك العميق للفرق بين القيمة العددية التسلسلية المخزنة في الذاكرة الحسابية، والصيغة النصية المعروضة للمستخدم، مع ضرورة التحقق المستمر من نوع البيانات وتطهيرها من شوائب الإدخال غير القياسي.
إن إتقان توظيف دالة HOUR للمخرجات الرقمية الحسابية، ودالة TEXT للعروض النصية والإدارية، والحلول الحسابية البديلة المعتمدة على دالتي INT و MOD، يمنح محلل البيانات مرونة استثنائية في مواجهة شتى تحديات البيانات الزمنية المعقدة. وسواء كان الهدف هو بناء تقارير إدارية ملخصة، أو تصنيف نوبات العمل الوظيفية، أو تغذية خوارزميات الذكاء الاصطناعي والدراسات السلوكية بمتغيرات زمنية محددة ونظيفة، فإن استخراج الساعة يظل الإجراء المنهجي الجوهري الذي يحيل سلاسل الطوابع الزمنية الخام إلى مؤشرات قابلة للقياس، والتحليل، واتخاذ القرار الرشيد.
المراجع
- Hosseini, S., Gottumukkala, R. N., Katragadda, S., Bhupatiraju, R. T., Ashkar, Z. M., Borst, C. W., et al. (2022). A multimodal sensor dataset for continuous stress detection of nurses in a hospital. Scientific Data. https://doi.org/10.1038/s41597-022-01361-y
- Hosseini, S., Katragadda, S., Bhupatiraju, R. T., Ashkar, Z. M., Borst, C. W., Cochran, K., et al. (2021). A multimodal sensor dataset for continuous stress detection of nurses in a hospital. arXiv (Cornell University). https://doi.org/10.48550/arxiv.2108.07689
- Korkmaz, A. Ç., Korkmaz, A. Ç., Korkmaz, A., Korkmaz, A., & Koşunalp, S. (2025). Predicting Nurse Stress Levels Using Time-Series Sensor Data and Comparative Evaluation of Classification Algorithms. https://doi.org/10.3390/engproc2025104030
- Roy, S. (2024). Data preprocessing and machine learning in wearable data analysis : assessing efficacy and challenges for mental health monitoring of healthcare professionals. https://doi.org/10.70675/bdabcabdz273cz4ff3z8b79zc9434acdf00d
- Saeed, Q. B., & Cha, Y.-J. (2025). Multi-modal deep-attention-BiLSTM based early detection of mental health issues using social media posts. Scientific Reports. https://doi.org/10.1038/s41598-025-19141-0
- Saylam, B., & İncel, Ö. D. (2023). Quantifying Digital Biomarkers for Well-Being: Stress, Anxiety, Positive and Negative Affect via Wearable Devices and Their Time-Based Predictions. Sensors. https://doi.org/10.3390/s23218987
- Yang, L. (2020). Characterizing Middle School Students’ Physical Literacy: A Sequential Mixed Methods Study. https://doi.org/10.31390/gradschool_dissertations.5278