تمثل إدارة البيانات الزمنية في بيئات الأعمال الحديثة أحد الأعمدة الجوهرية التي ترتكز عليها تحليلات الأعمال، ونمذجة القرارات التشغيلية، وهندسة قواعد البيانات. وفي هذا السياق، يُعد برنامج مايكروسوفت إكسيل (Microsoft Excel) الأداة الأكثر انتشاراً واستخداماً للتعامل مع الجداول الحسابية والبيانات المجدولة عبر مختلف القطاعات الصناعية والأكاديمية. غير أن أحد أبرز التحديات التي تواجه محللي البيانات والباحثين يكمن في البنية المدمجة للقيم الزمنية؛ حيث تُسجل التواريخ مصحوبة بالأوقات داخل خلية واحدة (Date-Time Stamp). يؤدي هذا الدمج البصري والحسابي في كثير من الأحيان إلى تعقيدات تشغيلية عند الرغبة في إجراء مقارنات شرطية، أو بناء جداول محورية، أو تنفيذ عمليات تصفية دقيقة تعتمد حصراً على اليوم التقويمي دون الالتفات إلى الساعة أو الدقيقة التي سُجل فيها الحدث.
تنشأ هذه التعقيدات من الفجوة المعرفية بين المظهر الخارجي للتنسيق المرئي والتمثيل الرقمي الداخلي الذي يعتمده محرك الحساب في إكسيل. فعندما يرى المستخدم تاريخاً مقترناً بتوقيت محدد، يتعامل محرك البرنامج مع هذا المعطى كرقم تسلسلي ذي فاصلة عائمة يتألف من شقين متكاملين: شق صحيح يعبر عن عدد الأيام المنقضية منذ نقطة زمنية مرجعية، وشق عشري كسرّي يعكس الجزء المنقضي من ساعات اليوم الواحد. ونتيجة لذلك، فإن محاولات المقارنة البسيطة مثل مطابقة تاريخين قد تبوء بالفشل التقني غير المفسر للمستخدم المبتدئ، نظراً لاختلاف الكسور العشرية غير المرئية، مما يفرض ضرورة التفكيك المنهجي والفصل الرياضي والتقني الدقيق بين التاريخ والوقت إلى أعمدة مستقلة.
يتناول هذا الدليل الشامل والمفصل الأسس النظرية والتطبيقية لعملية فصل التاريخ والوقت في مايكروسوفت إكسيل، مقدماً تشريحاً متكاملاً للآليات الرياضية الكامنة خلف النظام التسلسلي، ومستعرضاً شريحة واسعة من الحلول التي تتدرج من الدوال الحسابية المباشرة، ودوال التفكيك الزمني، إلى الأدوات التفاعلية المدمجة مثل أداة تحويل النص إلى أعمدة والتعبئة السريعة، وصولاً إلى الأتمتة المتقدمة عبر محرر Power Query ولغة البرمجة النصية VBA. ويستهدف هذا الطرح تمكين القارئ من فهم الطبيعة الرياضية للبيانات وتطبيق أكثر الممارسات كفاءة وموثوقية في إدارة البيانات الضخمة والمعقدة، بما يضمن دقة النمذجة الرياضية وسلامة المخرجات التحليلية.
1. الأسس البنيوية لنظام التاريخ والوقت في برنامج مايكروسوفت إكسيل
1.1 النظام الرقمي التسلسلي لتخزين البيانات الزمنية
لا يتعامل برنامج مايكروسوفت إكسيل مع التواريخ والأوقات كنصوص أبجدية أو كبنى برمجية زمانية معقدة بالمعنى الحرفي، بل يرتكز في جوهره على نظام تخزين رقمي تسلسلي خطي (Serial Number System). في هذا النظام، تُحول جميع التواريخ إلى أعداد حقيقية موجبة تمثل المسافة الزمنية المحسوبة بعدد الأيام المنقضية بدءاً من نقطة ارتكاز زمنية قياسية تُعرف بـ “تاريخ الأساس” (Epoch Base Date). في نظام تاريخ 1900 الافتراضي المعتمد في إصدارات إكسيل لنظام ويندوز، يمثل الرقم التسلسلي 1 اليوم الأول من يناير عام 1900 (1/1/1900)، وتتزايد الأرقام التسلسلية بمقدار وحدة صحيحة واحدة عن كل يوم تقويمي ينقضي بعد هذا التاريخ. وقد استُلهم هذا التصميم المعماري من برنامج لوتس 1-2-3 (Lotus 1-2-3) الذي أُطلق عام 1983 بواسطة ميتش كابور وجوناثان ساكس، قبل إطلاق إكسيل لنظام ماكنتوش في 30 سبتمبر 1985 ولنظام ويندوز في نوفمبر 1987.
بناءً على هذه البنية التحتية، يُعبر الرقم الصحيح دائماً عن التاريخ الكامل، بينما تُخصص الكسور العشرية لتمثيل الوقت كنسبة رياضية مجردة من اليوم المكون من 24 ساعة. فعلى سبيل المثال، يمثل الكسر 0.5 منتصف النهار تماماً (الساعة 12:00 ظهراً)، نظراً لأن 12 ساعة تمثل نصف اليوم الواحد ($\frac{12}{24} = 0.5$). وبالمثل، تمثل الساعة الواحدة بعد منتصف الليل الكسر $\frac{1}{24} \approx 0.04166667$، في حين تمثل الدقيقة الواحدة جزءاً من 1440 جزءاً من اليوم ($\frac{1}{1440} \approx 0.00069444$). وبالتالي، فإن أي طابع زمني مُسجل في إكسيل هو قيمة رقمية مركبة ومدمجة تجمع بين التاريخ والوقت في بنية متصلة رياضياً. إن استيعاب هذه الطبيعة الحسابية المتأصلة يُعد شرطاً أساسياً لا غنى عنه قبل الشروع في عمليات التفكيك والفصل؛ إذ إن أي معالجة لا تراعي هذه الخلفية الرقمية قد تؤدي إلى تشويه البيانات أو تفسيرها بشكل مضلل في جداول التحليل المتقدمة.
1.2 التمييز الرياضي بين الجزء الصحيح والكسر العشري
يقتضي الفهم العميق لبيانات التاريخ والوقت الفصل الصارم بين مدلول الشقين الرياضيين المكونين للرقم التسلسلي المركب. فالجزء الصحيح الواقع على يسار الفاصلة العشرية يمثل حصراً اليوم التقويمي المستقل دون أي ارتباط بالساعات والدقائق. وفي المقابل، يمثل الجزء الكسري الواقع على يمين الفاصلة العشرية التجزئة الزمنية لليوم نفسه. وإذا أخذنا نموذجاً رياضياً عملياً مثل الرقم التسلسلي 44927.177، نجد أنه يتكون تحليلياً من جزأين: الجزء الصحيح 44927، والجزء الكسري 0.177. عند تحويل هذا الرقم إلى صيغة تاريخ ووقت مقروءة، نجد أن 44927 يوافق يوم 1 يناير 2023 (باعتباره اليوم رقم 44927 منذ مطلع عام 1900)، بينما يُترجم الكسر 0.177 بضربه في 24 ساعة إلى قرابة 4.248 ساعات، أي الساعة الرابعة فجراً وحوالي 14 دقيقة و53 ثانية.
تلعب الدقة العشرية دوراً حاسماً وحساساً للغاية في قياس الفروق الزمنية المجهرية داخل جداول البيانات الكبيرة؛ حيث يعتمد إكسيل على معيار الفاصلة العائمة المزدوجة وفق مواصفات IEEE 754. وهذا يعني أن الفروق الضئيلة جداً في الأرقام العشرية الممتدة حتى الخانة الخامسة عشرة قد تمثل أجزاءً من الثانية الواحدة. فإذا لم يُدرك المحلل هذه العلاقة الرياضية، قد يواجه تناقضات ظاهرية عند مقارنة خليتين تبدوان متطابقتين بصرياً في عرض الوقت ولكنهما تختلفان في الكسور الميكروثانية. إن القدرة على استخلاص الشق الكسري بمعزل عن الشق الصحيح هي جوهر عمليات التفكيك الحسابي للبيانات الزمنية، وهي الضمانة الوحيدة للحفاظ على الدقة التحليلية في البيئات البحثية والمؤسسية الحساسة.

1.3 الدوافع التحليلية لفصل البيانات الزمنية إلى أعمدة مستقلة
تتعدد الدوافع التحليلية التي تفرض على مديري البيانات والباحثين عزل التاريخ عن الوقت ونقلهما إلى حقول منفصلة. يرتبط الدافع الأول بزيادة كفاءة المعالجة الإحصائية وجودة نمذجة البيانات؛ إذ إن عزل المتغير اليومي يسمح بإجراء تحليلات السلاسل الزمنية اليومية، وقياس العوائد أو المقاييس المجمعة لكل دورة تقويمية دون تشتيت النموذج بالتغيرات اللحظية للساعات. كما يتجلى هذا التحسين في تيسير بناء الجداول المحورية (Pivot Tables)؛ حيث إن ترك التاريخ والوقت مدمجين يؤدي إلى التعامل مع كل طابع زمني كقيمة فريدة ومستقلة، مما يمنع التجميع التلقائي السلس حسب الأيام والأسابيع والشهور، ويخلق جداول مفرطة التمدد وصعبة التفسير.
علاوة على ذلك، يُسهم الفصل في توحيد مصفوفات البيانات لإجراء المقارنات المقطعية والتحليلات الطولية الدقيقة بين مصادر متعددة للبيانات. ومن أهم الأسباب التقنية لتطبيق الفصل تجنب أخطاء الدوال الشرطية؛ فعند استخدام دوال التحقق والبحث مثل VLOOKUP أو XLOOKUP أو COUNTIF، تفشل هذه الدوال في العثور على التطابق المنطقي إذا كانت القيمة المرجعية تحتوي على تاريخ مجرد (مثل 44927.000) بينما القيمة المستهدفة في قاعدة البيانات تحتوي على التاريخ والوقت معاً (مثل 44927.177). فالمعادلة الرياضية تعتبر القيمتين غير متساويتين قطعاً، وهو خطأ شائع يتسبب في إهدار ساعات عمل طويلة في التدقيق اليدوي ومحاولات تصحيح الأخطاء التي كان يمكن تلافيها بالاعتماد على ممارسات هيكلية سليمة منذ البداية (Cascio & Montealegre, 2016).
2. استخراج التاريخ بالاعتماد على دالة الجزء الصحيح (INT)
2.1 آلية عمل دالة INT والمنطق البرمجي الخاص بها
تُعد دالة الجزء الصحيح INT من أبسط وأقوى الدوال الرياضية المدمجة في مايكروسوفت إكسيل لاستخلاص التاريخ المستقل من القيم الزمنية المركبة. يقوم التعريف الرياضي لدالة INT على اقتطاع أي كسر عشري ملحق بالرقم الحقيقي وإرجاع الجزء الصحيح الأدنى، أي أنها تقرب الرقم دائماً نزولاً إلى أقرب عدد صحيح. وفي سياق التواريخ التسلسلية، بما أن التواريخ والأوقات تمثل أرقاماً موجبة (حيث يبدأ التاريخ من 1 ويتصاعد)، فإن تطبيق دالة INT على أي رقم تسلسلي زمني مركب يؤدي تلقائياً وبكفاءة قطعية إلى إزالة الشق العشري الذي يعبر عن الوقت، والإبقاء على الشق الصحيح الممثل لليوم التقويمي فقط.
بالمقارنة مع دوال التقريب الأخرى، تتميز دالة INT بأداء مكافئ لدالة الاقتطاع TRUNC فيما يتعلق بالأرقام الموجبة، حيث تقوم الأخيرة بحذف الكسور العشرية دون تقريب، محققة النتيجة نفسها عند استخراج التواريخ. غير أن دالة INT تتفوق بصورة واضحة على دوال التقريب القياسية مثل ROUND؛ إذ إن استخدام ROUND لاستخراج التاريخ قد يتسبب في أخطاء فادحة وتزييف خطير للبيانات، فإذا تجاوز الوقت منتصف اليوم (أي كانت القيمة الكسرية أكبر من أو تساوي 0.5، كما في الساعة الواحدة ظهراً وما بعدها)، ستقوم دالة ROUND بتقريب الرقم إلى العدد الصحيح الأعلى، مما يؤدي إلى قفز التاريخ يوماً كاملاً إلى الأمام بطريقة غير محسوبة. لذا، فإن الاعتماد المنهجي على INT يوفر حصانة رياضية تامة ضد أي إزاحة تقويمية غير مقصودة.
2.2 خطوات التطبيق العملي لمعادلة INT على عمود التاريخ والوقت
لتطبيق هذه الدالة عملياً على قاعدة بيانات تحتوي على قيم مدمجة للتاريخ والوقت، نتبع سلسلة من الخطوات الإجرائية الدقيقة. بافتراض أن القيمة المركبة موجودة في الخلية الأولى من عمود البيانات A2، يتم الانتقال إلى الخلية المجاورة الفارغة في عمود التاريخ المستهدف ولتكن B2، ثم تُكتب الصيغة الحسابية المباشرة التالية:
=INT(A2). بمجرد الضغط على مفتاح الإدخال (Enter)، يقوم محرك إكسيل باحتساب الجزء الصحيح فوراً، مجرداً التاريخ من أي أثر للكسور العشرية المرتبطة بالتوقيت اللحظي لتلك القيمة.
بعد التحقق من ظهور النتيجة في الخلية الأولى، يتم تعميم الصيغة الحسابية على كامل النطاق الرأسي لقاعدة البيانات. يتم ذلك من خلال النقر المزدوج على “مقبض التعبئة التلقائية” (Fill Handle) الواقع في الزاوية اليسرى أو اليمنى السفلية لخلية المعادلة (حسب لغة الواجهة)، أو سحب المقبض رأسياً لتغطية كافة الصفوف. نظراً لأن المرجع A2 كُتب بصيغة مرجعية نسبية دون علامات التثبيت بالدولار ($)، فإن إكسيل يعدل المرجع آلياً مع كل صف هبوطاً (ليصبح A3 ثم A4 وهكذا)، مما يضمن مطابقة مخرجات كل صف لسجله الأصلي المقابل بدقة مطلقة دون أي تداخل في المؤشرات المرجعية، وهو أمر بالغ الأهمية للحفاظ على سلامة التسجيل الرقمي في المستندات الكبيرة.

2.3 ضبط التنسيق البصري للخلية لعرض التاريخ بصورة نظامية
في كثير من الحالات، يُفاجأ المستخدم بعد إدخال صيغة =INT(A2) بأن القيمة الظاهرة في الخلية ليست تاريخاً مألوفاً، بل رقم صحيح مجرد يتكون من خمس خانات مثل 44927. يرجع السبب الحصري في ذلك إلى أن تنسيق الخلية الافتراضي يكون مضبوطاً على الفئة “عام” (General)، مما يدفع إكسيل لعرض القيمة الرقمية التسلسلية الخام كما هي مخزنة في الذاكرة دون تطبيق طبقة العرض البصرية التقويمية عليها. لا يشير هذا الرقم المجرد إلى خطأ في الصيغة الحسابية بأي حال من الأحوال، بل يؤكد نجاح الدالة رياضياً في عزل الجزء الصحيح المطلوب.
لتحويل هذا العرض الرقمي إلى صيغة تقويمية نظامية، يجب تغيير تنسيق الخلايا. يتم ذلك بتحديد نطاق الخلايا المعنية، ثم الضغط على مفاتيح الاختصار Ctrl + 1 للوصول المباشر إلى نافذة “تنسيق الخلايا” (Format Cells)، واختيار تبويب “رقم” (Number)، ثم النقر على فئة “تاريخ” (Date). يُفضل من منظور إدارة البيانات المؤسسية اختيار التنسيقات القياسية الدولية مثل YYYY-MM-DD، لتجنب اللبس الشائع والخلط الإقليمي بين اليوم والشهر، خصوصاً عند تبادل الملفات بين دول تعتمد الترتيب الأمريكي (الشهر أولاً) ودول تعتمد الترتيب البريطاني والأوروبي (اليوم أولاً). وبمجرد تأكيد التنسيق، تكتمل عملية الاستخراج لتظهر التواريخ نظيفة ومجردة من أي مكونات زمنية خفية.
3. استخلاص الوقت عبر العمليات الحسابية المباشرة
3.1 المنطق الحسابي لطرح التاريخ المستخرج من القيمة المركبة
بعد نجاح عملية استخلاص التاريخ وتخزينه كقيمة رقمية صحيحة في عمود مستقل، تبرز الحاجة إلى استخراج الشق المتبقي وهو الوقت. يستند المنطق الرياضي في هذه المرحلة إلى المبدأ الحسابي التفاضلي التكميلي: إذا كانت القيمة الأصلية تمثل حاصل جمع التاريخ والوقت ($V_{\text{Total}} = D + T$)، وتمكنا بالفعل من عزل التاريخ ($D$) في متغير مستقل، فإن الوقت الخالص ($T$) يمكن الحصول عليه ببساطة متناهية من خلال عملية طرح جبرية مباشرة:
الوقت = القيمة الأصلية - التاريخ المستخرج.
بالتطبيق العملي على خلايا إكسيل، إذا كانت القيمة الأصلية المدمجة في الخلية A2 وكان التاريخ المستخرج موجوداً في الخلية B2، فإن المعادلة في الخلية C2 تُكتب على النحو التالي:
=A2-B2. من الناحية الرياضية المجردة، تؤدي هذه العملية إلى طرح الجزء الصحيح من الرقم التسلسلي الكلي، مما يُبطل أثر الأيام تماماً ويُبقي فقط على الكسر العشري الصافي. يتميز هذا الأسلوب المباشر بكونه يستهلك الحد الأدنى المطلق من قدرات المعالجة الحاسوبية؛ إذ إن العمليات الحسابية الأساسية (الجمع والطرح) تُنفذ على مستوى المعالج الدقيق بسرعة تفوق استدعاء الدوال البرمجية المعقدة، وهو ما يُعد عاملاً جوهرياً في تحسين أداء المصنفات الضخمة التي تحتوي على مئات الآلاف من الصفوف السجلية.
3.2 تحويل الناتج الكسري إلى صيغة وقت قياسية ومقروءة
يظهر الناتج الأولي لعملية الطرح الحسابي =A2-B2 في صورة كسر عشري موجب يقع دائماً بين الصفر والواحد الصحيح (على سبيل المثال: 0.177048). يمثل هذا الكسر الحصة الزمنية التي انقضت من اليوم المكون من 24 ساعة. ولكي يتحول هذا الرقم المجرد إلى معلومة مفهومة ومفيدة للمحلل وصانع القرار، يتعين إخضاعه لطبقة التنسيق الزمني المخصصة. يتم ذلك عبر تحديد عمود الوقت، والدخول إلى نافذة تنسيق الخلايا (Ctrl + 1)، واختيار فئة “الوقت” (Time).
يوفر إكسيل منظومة متكاملة من خيارات التنسيق التي تلبي متطلبات التوثيق المختلفة؛ حيث يمكن للمستخدم الاختيار بين نظام العرض التقليدي المعتمد على دورة 12 ساعة مع إظهار محددات الصباح والمساء (AM/PM)، مثل hh:mm:ss AM/PM، أو نظام العرض العسكري الدولي المعتمد على 24 ساعة، مثل HH:mm:ss. وفي بيئات البحث العلمي ومراقبة العمليات الصناعية الدقيقة، يمكن تخصيص التنسيق من فئة “مخصص” (Custom) ليشمل أجزاء الثواني بدقة متناهية عبر إدخال الكود التنسيقي hh:mm:ss.000، مما يضمن عرض التوقيت بدقة الميلي ثانية دون أي فقدان أو تشويه للبيانات الدقيقة المحفوظة في خلفية الخلية.
3.3 إدارة العمليات الحسابية في خطوة واحدة دون عمود وسيط
على الرغم من وضوح الاعتماد على عمود وسيط للتاريخ ثم استخراج الوقت منه، إلا أن أفضل الممارسات الهندسية لجداول البيانات تميل في كثير من الأحيان إلى تقليل الأعمدة المساعدة غير الضرورية، بهدف توفير مساحة العرض التفاعلية وترشيد الذاكرة. لتحقيق ذلك، يمكن دمج الخطوات السابقة في معادلة واحدة مكتفية ذاتياً تُكتب في عمود الوقت مباشرة دون الحاجة للرجوع إلى أي عمود وسيط:
=A2-INT(A2).
تقوم هذه المعادلة المركبة باستدعاء القيمة الأصلية A2 ثم تطرح منها الجزء الصحيح لنفس القيمة في خطوة حسابية آنية واحدة. يُلغي هذا الحل الديناميكي أي اعتمادية تشغيلية على أعمدة أخرى، مما يمنح مصمم الجدول حرية مطلقة في حذف أو نقل أي أعمدة إضافية دون الخوف من حدوث خطأ المرجع الشهير #REF!. ومن زاوية الحوكمة والتدقيق، تُعد هذه الصيغة معياراً برمجياً واضحاً وسهل الفهم والمراجعة لأي محلل أو مدقق بيانات خارجي، إذ تعبر بوضوح عن اقتناص الكسر العشري الزمني مباشرة من السجل الأصلي.
4. فصل الوقت باستخدام دالة باقي القسمة (MOD)
4.1 التحليل الرياضي لاستخدام دالة MOD لعزل الوقت
تُمثل دالة باقي القسمة MOD إحدى أذكى وأرقى الطرق الرياضية المستخدمة في مايكروسوفت إكسيل لعزل الوقت بشكل مباشر ومستقل. تقوم دالة MOD(number, divisor) بإرجاع باقي القسمة الإقليدية الناتجة عن قسمة وسيط المعامل الأول (العدد) على وسيط المعامل الثاني (المقسوم عليه). والمنطق المبتكر هنا يكمن في قسمة الرقم التسلسلي المركب للتاريخ والوقت على الرقم الصحيح 1، من خلال الصيغة التالية:
=MOD(A2, 1).
وفقاً لقواعد الجبر الإقليدي، عند قسمة أي رقم حقيقي موجب يتكون من جزء صحيح وجزء عشري على الرقم 1، فإن ناتج القسمة الصحيح يكون مساوياً تماماً للجزء الصحيح من الرقم، في حين يمثل الجزء المتبقي الذي لا يمكن قسمته على 1 الكسر العشري الخالص نفسه. فعلى سبيل المثال، إذا قمنا بقسمة الرقم 44927.177 على 1، فإن العدد يقبل القسمة 44927 مرة كاملة، ويتبقى الكسر 0.177 كباقٍ قطعي للقسمة. تتميز دالة MOD بقدرتها الفائقة على عزل الوقت في معادلة مستقلة وأنيقة للغاية، وتتفوق على غيرها من الطرق بمرونتها البالغة؛ حيث إنها لا تتطلب استخراج التاريخ مسبقاً ولا تستلزم كتابة تعبيرات طرح مكررة.
4.2 التطبيق الإجرائي لدالة MOD على النماذج الزمنية المتنوعة
لتطبيق هذه الدالة، يكتفي المستخدم بإدراج المعادلة =MOD(A2, 1) في الخلية المخصصة للوقت، ثم تطبيق تنسيق الوقت المطلوب (مثل hh:mm AM/PM)، وسحب المعادلة على باقي السجلات. تظهر قوة هذه الطريقة بشكل لافت عند التعامل مع النماذج الزمنية المتنوعة، لاسيما سجلات الحضور والانصراف، وسجلات الخوادم، ومصفوفات الدخول الإلكتروني التي تتضمن توقيتات ليلية وتحولات عبر منتصف الليل (Cross-Midnight Intervals).
عند تسجيل الفترات الزمنية التي تبدأ في يوم وتنتهي في اليوم التالي، تحافظ دالة MOD على استقرار رياضي ممتاز؛ نظراً لأنها تحصر النتائج دائماً في النطاق الدوري المغلق $[0, 1)$ الممثل لدورة اليوم الواحد. وبالإضافة إلى ذلك، تتيح هذه النتائج النقية لدالة MOD تطبيق قواعد التنسيق الشرطي (Conditional Formatting) بسهولة بالغة؛ حيث يمكن للمحلل تمييز الأوقات التي تقع في فترات ذروة معينة (مثلاً الأوقات التي تتجاوز قيمتها العشرية 0.375، أي التاسعة صباحاً، وتقل عن 0.708، أي الخامسة مساءً) عبر شروط رياضية رقمية مباشرة، مما يسرع عمليات الفرز البصري والاستكشاف الإحصائي المتقدم للبيانات التشغيلية.

4.3 الاستقرار الحسابي لدالة MOD وتجنب أخطاء الفاصلة العائمة
على الرغم من الفاعلية الرياضية لدالة MOD، يجب على المحللين الانتباه إلى ظاهرة تقنية تتعلق بطريقة معالجة الحواسيب للأرقام العشرية، والمعروفة بـ “أخطاء تقريب الفاصلة العائمة” (Floating-Point Precision Issues). نظراً لأن إكسيل يحول الأرقام العشرية إلى النظام الثنائي (Binary) لإجراء العمليات في المعالج الدقيق، فإن بعض الكسور العشرية اللانهائية في النظام الثنائي قد تسفر عن تشوهات حسابية ضئيلة جداً في الخانات المتأخرة، مما قد يولد أحياناً قيماً مثل 0.99999999999999 بدلاً من القيمة الصفرية عند منتصف الليل تماماً.
لتفادي هذا الانحراف النادر وضمان دقة متناهية لا تتأثر بتقلبات المعالجة الثنائية، يُوصى في الأنظمة الحساسة بدمج دالة التقريب ROUND مع دالة MOD، بحيث يتم تقريب الناتج إلى عدد محدد من الخانات العشرية يضمن سلامة الثواني. يمكن صياغة هذه المعادلة المحصنة على النحو التالي:
=ROUND(MOD(A2, 1), 10). يضمن التقريب إلى 10 خانات عشرية استقراراً كاملاً لقيم الثواني والميلي ثواني مع إخماد أي ضجيج حسابي صادر عن وحدة الفاصلة العائمة. وتثبت هذه الصيغة كفاءة موحدة ومستقرة تماماً عبر مختلف إصدارات إكسيل، وتضمن سلامة التراكم الإحصائي عند إجراء عمليات الجمع اللاحقة لفترات العمل أو مدد التشغيل.
5. توظيف الدوال الزمنية التفكيكية المتخصصة
5.1 إعادة بناء التاريخ المستقل باستخدام DATE مع YEAR وMONTH وDAY
إلى جانب العمليات الرياضية الاقتطاعية، يوفر برنامج إكسيل مجموعة متخصصة من الدوال التقويمية التي تسمح بتفكيك القيمة المركبة إلى عناصرها الأساسية المكونة لها، ثم إعادة بنائها كقيمة تاريخية نقية بالكامل. يعتمد هذا الأسلوب على استخراج المكونات الثلاثة: السنة عبر دالة YEAR(A2)، والشهر عبر دالة MONTH(A2)، واليوم عبر دالة DAY(A2). تقوم كل دالة من هذه الدوال بقراءة الرقم التسلسلي واستخلاص المتغير الزمني الخاص بها كعدد صحيح مجرد.
في المرحلة التالية، يتم تمرير هذه القيم المفككة داخل دالة البناء التقويمي DATE بالصيغة التجميعية الشاملة:
=DATE(YEAR(A2), MONTH(A2), DAY(A2)). ينتج عن هذه المعادلة رقم تسلسلي صحيح تماماً يمثل تاريخ منتصف الليل لليوم المعني، مما يضمن بصورة قاطعة خلو القيمة الناتجة من أي امتدادات كسرية عشرية. تتجلى الفائدة الاستثنائية لهذه الطريقة عند الرغبة في التدخل التعديلي أثناء عملية الفصل؛ كأن يحتاج المحلل إلى توحيد اليوم ليكون الأول من كل شهر، أو ترحيل التواريخ إلى سنوات مالية محددة أثناء استخراجها، حيث توفر هذه الدوال مرونة هيكلية تتجاوز مجرد الاقتطاع الرقمي البسيط.
5.2 إعادة تشكيل الوقت بدقة باستخدام TIME مع HOUR وMINUTE وSECOND
بالمثل، يوفر إكسيل منظومة موازية لاستخلاص مكونات الوقت وإعادة تشكيلها عبر دالة البناء الزمني TIME. تعمل هذه المنظومة من خلال تجزئة الوقت إلى ساعاته ودقائقه وثوانيه باستخدام الدوال الثلاث: HOUR(A2) التي تعيد قيمة الساعة من 0 إلى 23، وMINUTE(A2) التي تعيد الدقيقة من 0 إلى 59، وSECOND(A2) التي تعيد الثواني كأعداد صحيحة. بعد عزل هذه العناصر، يُعاد دمجها في نسق معياري نقي عبر كتابة الصيغة التالية:
=TIME(HOUR(A2), MINUTE(A2), SECOND(A2)).
تُعد هذه المعادلة أداة ممتازة لتوحيد قياسات الوقت؛ إذ إنها تتجاهل تلقائياً أي كسور ميكروثانية قد تكون ملحقة بالسجلات المستخرجة من أجهزة الاستشعار أو قواعد البيانات المعقدة، محولة إياها إلى مصفوفة وقتية محكمة تتطابق مع متطلبات الأنظمة الخارجية. كما تمكن هذه الصيغة المحلل من تصفير الثواني إذا لزم الأمر، عبر كتابة 0 في وسيط الثواني، مما يتيح توحيد دقة السجلات الزمنية وتحسين إمكانيات المقارنة الجماعية دون عوائق حسابية.
5.3 مقارنة منهجية بين دوال البناء والتفكيك والعمليات الحسابية المباشرة
عند تقييم الطرق المتاحة للفصل من منظور هندسة البرمجيات والأداء الحاسوبي، تظهر فروق جوهرية بين استخدام دوال البناء (DATE وTIME) وبين العمليات الحسابية المباشرة (INT وMOD). من حيث استهلاك الذاكرة وسرعة المعالجة الحسابية، تتفوق الطرق الحسابية المباشرة (مثل INT وMOD) بشكل واضح؛ إذ تتطلب دالة DATE استدعاء أربع دوال برمجية متداخلة لكل صف (وهي: DATE وYEAR وMONTH وDAY)، مما يضاعف العبء الحسابي على محرك إكسيل أربع مرات مقارنة باستدعاء دالة واحدة بسيطة مثل INT.
ومع ذلك، تمتلك دوال التفكيك والبناء ميزة استراتيجية بالغة الأهمية تتعلق بـ “المقروئية الهندسية” للصيغ وصيانتها السلسة من قِبل فرق العمل والمدققين؛ إذ تعبر دالة DATE(YEAR... بوضوح لا لبس فيه عن نيتها الوظيفية، ولا تتطلب إلمام القارئ بالنظام التسلسلي للأرقام. وفي البيئات المؤسسية التي تتطلب عمليات تدقيق ومراجعة صارمة لسير البيانات، يفضل كثير من المحللين هذا الوضوح على حساب الفوارق الحسابية الطفيفة في السرعة، ما لم تكن قواعد البيانات تتجاوز مئات الآلاف من السجلات؛ حيث تصبح الكفاءة الحسابية حينها هي المعيار الحاسم في الاختيار.
6. فصل التاريخ والوقت باستخدام أدوات إكسيل غير المعتمدة على المعادلات
6.1 تطبيق أداة النص إلى أعمدة (Text to Columns)
إذا كانت الأولوية التنفيذية تقتضي فصل التاريخ والوقت بشكل نهائي وثابت دون إنشاء معادلات ديناميكية أو الحفاظ على ارتباطات حية، فإن ميزة “النص إلى أعمدة” (Text to Columns) تمثل الحل الكلاسيكي الأكثر سرعة وموثوقية. تعتمد هذه الأداة على تفكيك محتويات الخلية استناداً إلى فاصل مميز يفصل بين التاريخ والوقت، وهو في أغلب الحالات مسافة بيضاء مفردة تفصل بين المكونين التقويمي والزمني.
لتطبيق هذه الأداة، يتم تحديد عمود البيانات المدمجة بالكامل، ثم الانتقال إلى شريط الأدوات العلوي، والنقر على تبويب “بيانات” (Data)، واختيار “النص إلى أعمدة” (Text to Columns). في الخطوة الأولى من معالج التحويل، يتم اختيار نوع الفصل “محدد” (Delimited)، ثم النقر على “التالي”. في شاشة الفواصل، يتم إلغاء تحديد علامة التبويب واختيار فاصل “المسافة” (Space). سيظهر في نافذة المعاينة السفلية انقسام فوري للبيانات إلى عمودين مستقلين. في الخطوة الثالثة والأخيرة، يتم تحديد نوع البيانات للعمود الأول كـ “تاريخ” (Date) مع ضبط التنسيق (مثل YMD)، واختيار “عام” (General) للعمود الثاني. من الضروري جداً تعديل حقل “الوجهة” (Destination) لتحديد خلية مجاورة بدلاً من الخلية الأصلية، لتجنب الكتابة فوق البيانات المصدرية وفقدانها بصورة غير قابلة للاسترداد.

6.2 استخدام خاصية التعبئة السريعة (Flash Fill) للفرز الفوري
تمثل ميزة “التعبئة السريعة” (Flash Fill) إحدى أدوات الذكاء الاصطناعي المدمجة المتقدمة في إكسيل، حيث تعتمد على خوارزميات التعرف على الأنماط لتخمين واستنساخ ما يرغب المستخدم في إنجازه دون كتابة معادلة واحدة. للاستفادة من هذه الخاصية، يقوم المستخدم بإدراج عمودين فارغين بجوار عمود البيانات الأصلي، وتسمية الأول “التاريخ” والثاني “الوقت”.
في الخلية الأولى من عمود التاريخ (مثلاً B2)، يكتب المستخدم يدوياً التاريخ المماثل تماماً لما هو مدون في الخلية الأصلية A2، ثم يضغط على زر الإدخال. بعد ذلك، يضغط المستخدم على مفتاحي الاختصار Ctrl + E (أو ينقر على زر Flash Fill في تبويب Data). سيقوم إكسيل فوراً بالتعرف على النمط المقتطع وملء كامل العمود حتى نهايته بالتواريخ المستخلصة. وتُكرر العملية بدقة متطابقة في عمود الوقت المجاور (C2) بكتابة الوقت يدوياً للخلية الأولى والضغط على Ctrl + E. وعلى الرغم من سرعتها المذهلة، يجب توخي الحذر الشديد وفحص عينات متفرقة من المخرجات، نظراً لأن خوارزمية التعبئة السريعة قد تلتبس عليها الأنماط أحياناً إذا تباينت طرق كتابة البيانات داخل العمود الأصلي، خصوصاً مع وجود سجلات تحتوي على أيام وأشهر فردية الأرقام بجوار خانات مزدوجة.
6.3 الموازنة التقنية بين الحلول الديناميكية (المعادلات) والحلول الثابتة (الأدوات)
يفرض التصميم المنهجي للبيانات إجراء مقارنة واعية بين الحلول الديناميكية القائمة على المعادلات (مثل INT وMOD) والحلول الساكنة المعتمدة على الأدوات الجاهزة (مثل Text to Columns وFlash Fill). تكمن الميزة الكبرى للمعادلات في طبيعتها الديناميكية المتجاوبة؛ فإذا تغير الطابع الزمني في العمود الأصلي أو أُضيفت صفوف جديدة لاحقاً، يتم تحديث قيم التاريخ والوقت تلقائياً في التو واللحظة دون أي تدخل بشري، مما يجعلها الخيار الإلزامي في لوحات القيادة (Dashboards) والنماذج المالية التي تتطلب تغذية مستمرة وتحديثاً حياً للبيانات.
في المقابل، تتميز الأدوات الساكنة بالسرعة الفائقة لإنتاج تقارير مقطعية سريعة لمرة واحدة (Ad-hoc Reporting)، وتفريغ مصنف البيانات من أعباء الحساب التلقائي، مما يقلل من حجم الملف على القرص الصلب. غير أن خطورتها تكمن في “تجميد البيانات”؛ فإذا حدث أي تعديل لاحق في المصدر، ستصبح البيانات المفصولة غير متطابقة مع أصولها ومضللة تحليلياً. يوضح الجدول التالي أهم الفروق التقنية بين هذين المسارين:
| معيار المقارنة | الحلول الديناميكية (المعادلات: INT, MOD) | الحلول الساكنة (الأدوات: Text to Columns, Flash Fill) |
|---|---|---|
| الاستجابة للتحديث | تلقائية وفورية بمجرد تعديل الخلية المصدرية. | معدومة؛ تتطلب إعادة تنفيذ العملية يدوياً عند أي تغيير. |
| استهلاك الذاكرة والمعالج | يتطلب موارد معالجة مستمرة لحساب الصيغ، خصوصاً في الملفات المليونية. | معدوم بعد التنفيذ؛ حيث تُخزن البيانات كقيم نصية أو أرقام ثابتة. |
| مخاطر الكتابة فوق البيانات | منخفضة للغاية؛ حيث تعمل الصيغ داخل نطاقاتها دون مساس بالأصل. | مرتفعة إذا لم يتم ضبط حقل الوجهة بدقة في معالج النصوص. |
| الاستخدام النموذجي | النماذج المالية المستمرة، وقواعد البيانات الديناميكية، ولوحات التحكم. | تنظيف البيانات السريع لمرة واحدة، واستخراج التقارير المؤقتة. |
7. المعالجة المتقدمة للتواريخ المخزنة كنصوص وتصحيح التشوهات
7.1 تشخيص التواريخ النصية والتفريق بينها وبين الأرقام التسلسلية
تواجه محللي البيانات في كثير من الأحيان ظاهرة معقدة تتمثل في استيراد بيانات تبدو بصرياً كتواريخ وأوقات، ولكنها في الواقع مجرد سلاسل نصية بحتة (Text Strings) تفتقر إلى أي قيمة رقمية تسلسلية خلفية. تنشأ هذه المشكلة بشكل متكرر عند تصدير البيانات من أنظمة تخطيط موارد المؤسسات (ERP)، أو برمجيات إدارة علاقات العملاء (CRM)، أو عند استيراد ملفات بتنسيق CSV غير مهيأة بالشكل المناسب. وتتمثل المشكلة التقنية هنا في أن دوال الحساب الرقمي المباشرة مثل INT أو MOD تفشل فشلاً ذريعاً عند تطبيقها على هذه النصوص، معطية رمز الخطأ الشهير #VALUE!، لأنها عاجزة عن إجراء عمليات رياضية على حروف أبجدية.
لتشخيص هذه الحالة والتأكد من طبيعة البيانات، يمكن ملاحظة عدة مؤشرات بصرية وتقنية. بصرياً، يميل إكسيل افتراضياً إلى محاذاة الأرقام والتواريخ الحقيقية إلى اليمين (في الواجهات اللاتينية) أو اليسار بحسب إعدادات النظام، بينما يحاذي النصوص دائماً إلى الجانب المعاكس تلقائياً، فضلاً عن ظهور مثلث أخضر صغير في زاوية الخلية ينبه إلى أن “الرقم مخزن كنص”. أما منهجياً، فيمكن حسم الأمر باستخدام الدوال المنطقية الفاحصة؛ حيث تعيد المعادلة =ISNUMBER(A2) القيمة المنطقية FALSE إذا كانت الخلية نصية، بينما تؤكد المعادلة =ISTEXT(A2) ذلك بإرجاع القيمة TRUE، مما يضع المحلل أمام ضرورة استخدام أدوات المعالجة النصية والتحويل القسري.
7.2 استخدام الدوال النصية (LEFT, RIGHT, MID) للاجتزاء الحرفي
عند ثبوت الطبيعة النصية للبيانات الزمنية المركبة، يصبح الاجتزاء الحرفي للسلسلة النصية هو السبيل الأنسب لعزل مكونات التاريخ عن الوقت. إذا كانت السجلات تتبع نسقاً طولياً ثابتاً (مثل: 2023-01-01 14:30:00)، يمكن توظيف دالة الاقتطاع من اليسار LEFT لاستخراج التاريخ المكون من أول 10 خانات بالمعادلة التالية:
=LEFT(A2, 10). وبالمثل، يمكن اقتناص الشق الزمني المكون من آخر 8 خانات باستخدام دالة الاقتطاع من اليمين RIGHT بالصيغة التالية:
=RIGHT(A2, 8).
أما في الحالات الأكثر تعقيداً التي تتباين فيها أطوال التواريخ والأوقات (كأن يُكتب التاريخ أحياناً برقم فردي لليوم أو الشهر دون صفر بادئ)، فيتعين بناء صيغ ديناميكية تعتمد على رصد الفاصل المكاني بين التاريخ والوقت. يتم ذلك من خلال الاستعانة بدالة البحث النصي FIND لتحديد الموضع الرقمي للمسافة البيضاء داخل النص. وعليه، تصبح معادلة استخراج التاريخ الديناميكية:
=LEFT(A2, FIND(" ", A2) - 1). بينما يتم استخراج الوقت باستخدام تركيبة متقدمة تجمع بين دوال MID وFIND وLEN كالتالي:
=MID(A2, FIND(" ", A2) + 1, LEN(A2)). تضمن هذه التركيبات النصية مرونة تامة في التعامل مع البيانات غير المنتظمة واستخراج الأجزاء المستهدفة بصرف النظر عن تباين أطوال النصوص المدخلة.
7.3 تحويل السلاسل النصية المفصولة إلى قيم زمنية حقيقية عبر DATEVALUE وTIMEVALUE
إن مجرد اجتزاء التاريخ والوقت بالدوال النصية السابقة ينتج عنه في النهاية نصوص جديدة مجتزأة تظل غير قابلة للفرز والتحليل الرياضي داخل إكسيل. لتحويل هذه النصوص إلى قيم زمنية رقمية حقيقية تتكامل بسلاسة مع محرك الحساب الداخلي، يجب إخضاعها لدوال التحويل القيمي المتخصصة: دالة DATEVALUE ودالة TIMEVALUE.
تأخذ دالة DATEVALUE النص المقتطع للتاريخ وتعيد كتابته كرقم تسلسلي حقيقي معتمد، وتُصاغ كالتالي:
=DATEVALUE(LEFT(A2, 10)). وفي المقابل، تتولى دالة TIMEVALUE قراءة النص الخاص بالوقت وتحويله إلى كسر عشري خالص يمثل دورة الـ 24 ساعة:
=TIMEVALUE(RIGHT(A2, 8)). وهناك تقنية برمجية بديلة وشائعة بين محترفي النمذجة المالية تُعرف بـ “التحويل القسري عبر العمليات المحايدة”؛ وتتم بإضافة الصفر المزدوج (Double Unary --) أو الضرب في الرقم واحد، مثل:
=--LEFT(A2, 10). تجبر هذه العملية الحسابية محرك إكسيل على تحويل النص الداخلي إلى رقم فوري دون الحاجة لكتابة اسم الدالة، شريطة أن يكون التنسيق النصي متوافقاً مع الإعدادات الإقليمية لنظام التشغيل المستخدم.
8. أتمتة فصل التاريخ والوقت عبر محرر استعلامات البيانات (Power Query)
8.1 استيراد البيانات وإعدادها داخل بيئة Power Query
يُمثل محرر استعلامات البيانات (Power Query) الأداة الأكثر تطوراً وقوة ضمن منظومة إكسيل الحديثة لتنفيذ عمليات الاستخراج والتحويل والتحميل (ETL). وتكمن القوة الاستثنائية لـ Power Query في قدرته على معالجة البيانات غير المتجانسة وتوثيق خطوات التحويل آلياً في مسار عمل متكرر يمكن تطبيقه بضغطة زر واحدة كلما تدفقت بيانات جديدة، مما يحرر المحلل من مشقة إعادة كتابة المعادلات أو تكرار الإجراءات اليدوية المرهقة.
لبدء عملية الفصل عبر هذه البيئة، يتم تحديد جدول البيانات داخل مصنف إكسيل، ثم التوجه إلى تبويب “بيانات” (Data)، والنقر على أيقونة “من ورقة/نطاق” (From Sheet/Range). يؤدي هذا الإجراء إلى فتح نافذة محرر Power Query المنفصلة. عند تحميل البيانات، يفحص المحرك تلقائياً نوع البيانات لكل عمود. يظهر العمود المستهدف غالباً بنوع بيانات مركب مسمى Date/Time وتدل عليه أيقونة تجمع بين تقويم وساعة في رأس العمود. تُعد هذه البيئة مثالية للتعامل مع السجلات المليونية والبيانات المؤسسية الضخمة التي قد تتسبب المعادلات التقليدية في إبطاء معالجتها أو تجميد حركتها.
8.2 تنفيذ إجراءات الفصل المدمجة في واجهة الاستعلامات
تتميز واجهة Power Query بتوفير أدوات فصل تحويلية جاهزة لا تتطلب كتابة أي أكواد برمجية. لفصل العمود المركب، نتبع ممارسة معيارية تضمن الاحتفاظ بنسخ منفصلة للتاريخ والوقت. يتم أولاً تكرار العمود الأصلي بالنقر بزر الفأرة الأيمن على رأس العمود واختيار “تكرار العمود” (Duplicate Column)، ليصبح لدينا عمودان متطابقان تماماً يحملان الطابع الزمني المدمج نفسه.
في الخطوة التالية، يتم النقر بزر الفأرة الأيمن على رأس العمود الأول، واختيار “تغيير النوع” (Change Type)، ثم تحديد “التاريخ فقط” (Date). يقوم المحرك فوراً باقتطاع الوقت برمجياً وتحويل العمود إلى تواريخ تقويمية خالصة. ثم ننتقل إلى العمود الثاني المكرر، ونتبع الإجراء ذاته باختيار “الوقت فقط” (Time)، فيحذف المحرك التاريخ بالكامل ويبقي على الوقت. تترجم واجهة الاستعلام هذه النقرات في الخلفية إلى لغة البرمجة M عبر الدوال القياسية DateTime.Date([Column]) وDateTime.Time([Column])، مما يضمن دقة خوارزمية قطعية لا تشوبها أخطاء الفاصلة العائمة أو التشويه النصي.

8.3 تحميل البيانات المعالجة وتحديث الاتصال في بيئة العمل
بعد الانتهاء من ضبط التحويلات وتسمية الأعمدة الجديدة بشكل يلائم متطلبات التحليل، يتم إغلاق المحرر وإرجاع البيانات إلى المصنف. يتم ذلك من خلال النقر على زر “إغلاق وتحميل” (Close & Load) الموجود في الزاوية العلوية لتبويب الصفحة الرئيسية. يتيح إكسيل للمستخدم خيار تحميل المخرجات في جدول بيانات جديد ومستقل تماماً، أو ربطها بنموذج البيانات الداخلي (Data Model) الخاص بـ Power Pivot.
تتجلى القيمة الاستراتيجية لهذه الطريقة عند ورود بيانات جديدة في المستقبل؛ حيث لا يتطلب الأمر سوى النقر بزر الفأرة الأيمن على الجدول المعالج واختيار “تحديث” (Refresh). سيقوم مسار الاستعلام المسجل آلياً بسحب البيانات الجديدة، وتطبيق خطوات التكرار وتغيير النوع وعزل التاريخ عن الوقت بدقة متناهية وفي أجزاء من الثانية. توفر هذه الآلية بيئة عمل مؤتمتة ومحصنة بالكامل ضد الأخطاء البشرية العرضية، مما يجعلها الخيار الأفضل لإعداد التقارير الدورية ولوحات القيادة التشغيلية في المؤسسات الحديثة.
9. استخدام لغة البرمجة (VBA) لأتمتة عمليات الفصل المتكررة
9.1 كتابة ماكرو برمجي مخصص لفصل التواريخ والأوقات
في بيئات العمل التي تتطلب تخصيصاً برمجياً دقيقاً وسرعة معالجة فائقة دون الاعتماد على أدوات خارجية، تبرز لغة البرمجة المدمجة في إكسيل (Visual Basic for Applications – VBA) كأداة لا غنى عنها. يتيح إنشاء “ماكرو” مخصص معالجة آلاف السلاسل الزمنية المتراكمة وضخ مخرجات الفصل في الأعمدة المستهدفة بصورة فورية، متفادياً بقاء آلاف المعادلات النشطة التي تثقل كاهل الذاكرة العشوائية للجهاز.
لبناء هذا الإجراء البرمجي، يتم الضغط على الاختصار Alt + F11 لفتح محرر الفيجوال بيسك، ثم إدراج وحدة برمجية جديدة (Module) عبر قائمة Insert. بعد ذلك، تتم صياغة كود تنفيذي يعتمد على حلقة تكرارية تفحص النطاق المحدد خلية تلو أخرى. يتم استخدام دوال التحويل البرمجية الأصلية في بيئة VBA مثل Int لاقتطاع التاريخ وTimeValue لعزل التوقيت، كما يوضح النموذج البرمجي التالي:
كود ماكرو مقترح لفصل التاريخ والوقت برمجياً:
Sub SplitDateTime()
Dim cell As Range
Dim targetRange As Range
Set targetRange = Selection
For Each cell In targetRange
If IsDate(cell.Value) Then
cell.Offset(0, 1).Value = Int(cell.Value)
cell.Offset(0, 1).NumberFormat = "yyyy-mm-dd"
cell.Offset(0, 2).Value = cell.Value - Int(cell.Value)
cell.Offset(0, 2).NumberFormat = "hh:mm:ss"
End If
Next cell
End Sub
يقوم هذا الكود بالتحقق أولاً من احتواء الخلية على قيمة زمنية صالحة عبر دالة IsDate لتجنب الأخطاء البرمجية الناتجة عن الخلايا النصية التالفة، ثم يضع التاريخ في العمود المجاور والوقت في العمود الذي يليه، مع تطبيق التنسيقات الرقمية المعتمدة تلقائياً لكل حقل مستخرج.
9.2 تحسين كود الماكرو وإلغاء تحديث الشاشة لتسريع الأداء
عند التعامل مع مصفوفات بيانات تحتوي على عشرات الآلاف من الصفوف، قد يلاحظ المستخدم بطءاً ملموساً ووميضاً متكرراً في الشاشة ناتجاً عن قيام إكسيل بإعادة رسم الواجهة الرسومية عند تعديل كل خلية على حدة. لتحسين أداء الكود وتسريعه بصورة جذرية، يجب تطبيق ممارسات التحسين البرمجي القياسية؛ وأبرزها تعطيل تحديث الشاشة وتعليق الحساب التلقائي أثناء تنفيذ المعالجة.
يتحقق هذا التعطيل بإضافة السطر البرمجي Application.ScreenUpdating = False في مستهل الكود، والسطر Application.Calculation = xlCalculationManual. وقبل انتهاء الإجراء البرمجي، يُعاد تفعيل الإعدادات الأصلية بوضع True وxlCalculationAutomatic. والخطوة الأكثر تقدماً لرفع الكفاءة تتمثل في قراءة النطاق الزمني بالكامل داخل “مصفوفة ذاكرة” (VBA Variant Array)، وإجراء عمليات الفصل الحسابي داخل الذاكرة المؤقتة للمعالج، ثم تفريغ مصفوفة النتائج دفعة واحدة إلى ورقة العمل، مما يقلص زمن المعالجة من عدة دقائق إلى بضع ثوانٍ معدودة حتى مع قواعد البيانات الهائلة.
9.3 إنشاء دالة مخصصة (UDF) لفصل التاريخ والوقت عند الطلب
إلى جانب إجراءات الماكرو الشاملة، تتيح بيئة VBA ميزة متقدمة تتمثل في ابتكار دوال معرفة من قِبل المستخدم (User Defined Functions – UDFs). توفر هذه الدوال مرونة استثنائية من خلال تمكين المحلل من استدعاء دوال فصل شخصية مخصصة ومبسطة مباشرة من داخل ورقة العمل، مثل أي دالة قياسية أخرى من دوال إكسيل.
يمكن للمطور بناء دالتين مخصصتين؛ الأولى باسم GetDateOnly لاستخراج التاريخ فقط، والثانية باسم GetTimeOnly لاسترجاع الوقت مجرداً، كما هو موضح في البناء التالي:
بناء الدوال المعرفة من قِبل المستخدم (UDF):
Function GetDateOnly(CellRef As Range) As Variant
If IsDate(CellRef.Value) Then
GetDateOnly = Int(CellRef.Value)
Else
GetDateOnly = CVErr(xlErrValue)
End If
End Function
Function GetTimeOnly(CellRef As Range) As Variant
If IsDate(CellRef.Value) Then
GetTimeOnly = CellRef.Value - Int(CellRef.Value)
Else
GetTimeOnly = CVErr(xlErrValue)
End If
End Function
بمجرد حفظ هذا الكود داخل الوحدة البرمجية، يستطيع أي مستخدم كتابة =GetDateOnly(A2) أو =GetTimeOnly(A2) في ورقة العمل والحصول على نتائج نظيفة وفورية. وتجدر الإشارة هنا إلى ضرورة حفظ المصنف بصيغة تدعم وحدات الماكرو (مثل .xlsm أو .xlsb)، لضمان بقاء الأكواد البرمجية فعالة عند إعادة فتح المصنف في جلسات العمل اللاحقة.
10. دراسة حالة وتطبيق عملي شامل خطوة بخطوة
10.1 عرض مجموعة البيانات النموذجية وتحليل متطلباتها
لترسيخ المفاهيم النظرية والتقنية السابقة وربطها بالتطبيق العملي الميداني، نستعرض دراسة حالة متكاملة تتناول مصفوفة بيانات واقعية مستخرجة من نظام مراقبة الدخول الإلكتروني في مؤسسة صناعية. يتضمن السجل عموداً رئيسياً (العمود A) يحتوي على طوابع زمنية مدمجة تسجل اللحظة الدقيقة لدخول الموظفين والآليات إلى المنشأة عبر البوابات الذكية.
يواجه فريق التحليل متطلباً إدارياً يتمثل في إنشاء تقريرين مستقلين: الأول يقيس حجم الحضور اليومي الإجمالي لمطابقته مع جداول الإجازات الرسمية (وهو ما يتطلب عزلاً قاطعاً للتاريخ)، والتقرير الثاني يدرس أوقات الذروة الصباحية والمسائية وتوزيع الاختناقات الزمنية عند البوابات على مدار الساعة (وهو ما يتطلب استخلاص الوقت بمعزل تام عن الأيام). ويحتوي النموذج المستهدف على القيم الموضحة في السجلات التالية، وفي مقدمتها القيمة الرقمية المركبة 44927.177 التي تعبر عن التوقيت الدقيق 1/1/2023 4:15 AM:
| رقم الصف | البيانات الأصلية المركبة (العمود A) | القيمة التسلسلية الخام في الذاكرة | المتطلب التحليلي |
|---|---|---|---|
| الصف 2 | 2023-01-01 04:15:00 | 44927.177083 | استخراج تاريخ مستقل + وقت مستقل |
| الصف 3 | 2023-01-01 12:00:00 | 44927.500000 | عزل منتصف النهار تماماً بدقة |
| الصف 4 | 2023-01-02 18:45:30 | 44928.781597 | فصل الوقت المسائي مع الثواني |
| الصف 5 | 2023-01-03 23:59:59 | 44929.999988 | معالجة نهاية اليوم الحافة الحرجة |
10.2 التنفيذ العملي التتابعي: استخراج التاريخ والوقت وضبط التنسيق
نبدأ أولاً باستخراج التاريخ النقي في العمود B، والذي سنمنحه التسمية “تاريخ الدخول”. في الخلية B2، نقوم بإدخال الصيغة الرياضية المستندة إلى دالة الجزء الصحيح:
=INT(A2). نضغط على زر الإدخال، فنحصل فوراً على القيمة التسلسلية 44927. نطبق التنسيق القياسي للخلية بالضغط على Ctrl + 1، واختيار فئة “التاريخ”، وتحديد النسق YYYY-MM-DD، ليظهر التاريخ بصورته المقروءة 2023-01-01. بعد ذلك، نسحب مقبض التعبئة التلقائية من الخلية B2 حتى نهاية النطاق عند B5، فنلاحظ استخراج كافة التواريخ دون أي خطأ في الإزاحة التقويمية.
ثانياً، ننتقل إلى استخلاص الوقت في العمود C، ونسميه “وقت الدخول”. في الخلية C2، نعتمد على المنطق الحسابي التفاضلي المباشر بكتابة المعادلة:
=A2-B2 (أو الصيغة المستقلة =MOD(A2, 1)). يظهر الناتج الأولي كرقم عشري هو 0.177083. نضغط على Ctrl + 1، ونختار فئة “الوقت”، ونحدد التنسيق المعتمد بنظام 12 ساعة مع الثواني hh:mm:ss AM/PM، لتتحول القيمة الكسرية في الحال إلى 04:15:00 AM. وبسحب المعادلة للأسفل، تكتمل المصفوفة بنجاح باهر لتظهر الصفوف كالتالي:
| الصف | العمود A (الأصل) | العمود B: التاريخ (=INT(A2)) | العمود C: الوقت (=A2-B2) |
|---|---|---|---|
| 2 | 2023-01-01 04:15:00 | 2023-01-01 | 04:15:00 AM |
| 3 | 2023-01-01 12:00:00 | 2023-01-01 | 12:00:00 PM |
| 4 | 2023-01-02 18:45:30 | 2023-01-02 | 06:45:30 PM |
| 5 | 2023-01-03 23:59:59 | 2023-01-03 | 11:59:59 PM |

10.3 المراجعة والتدقيق والتحقق من سلامة التكامل الرياضي
لا تكتمل المعالجة المنهجية المتقدمة دون إخضاع المخرجات لاختبارات التدقيق والتحقق الصارمة للتأكد من سلامة التكامل الرياضي للبيانات. يُعد اختبار التحقق العكسي (Reverse Validation Test) الوسيلة المثلى للتأكد من عدم فقدان أي جزء مجهري من البيانات أثناء عملية التفكيك. يتم إجراء هذا الاختبار بإنشاء عمود تدقيق مؤقت يُكتب فيه المعادلة المنطقية التالية:
=(B2+C2)=A2.
إذا أرجعت المعادلة القيمة المنطقية TRUE، فهذا يقدم برهاناً رياضياً قاطعاً على أن حاصل جمع التاريخ المعزول والوقت المفصول يطابق تماماً القيمة التسلسلية للأصل المخزن في الخلية A2 حتى الخانة العشرية الأخيرة. وفي حال ظهور القيمة FALSE في حالات نادرة جداً ناتجة عن انحرافات معيار الفاصلة العائمة في الثواني الأخيرة، يمكن للمحلل تطبيق اختبار التحقق بفارق خطأ متناهي الصغر:
=ABS((B2+C2)-A2)<0.000001 لضمان التطابق التام، وتجنب أخطاء التقييم والتحيزات الإدراكية في فحص البيانات (Dunning et al., 2004).
أخيراً، كخطوة إجرائية احترازية يوصى بها عند الانتهاء من إعداد الجداول وقبل تسليمها للجهات المعنية أو تصديرها، يقوم المحلل بتحديد أعمدة النتائج المكتملة، ونسخها، ثم استخدام أمر “لصق كقيم” (Paste as Values). يؤدي هذا الإجراء الحاسم إلى تثبيت الأرقام الحقيقية في الخلايا وتعطيل ارتباطها بالصيغ البرمجية، مما يحمي المصنف من أي أعطال حسابية مفاجئة إذا ما حُذف العمود المصدر مستقبلاً أو نُقل الملف إلى أنظمة وبرمجيات تحليلية أخرى لا تدعم نفس المعمارية الصيغية لإكسيل.
خاتمة
إن إتقان آليات فصل التاريخ والوقت في برنامج مايكروسوفت إكسيل يمثل ركيزة لا غنى عنها لأي محلل بيانات أو مهندس جداول حسابية يسعى لبناء نماذج تحليلية تتسم بالرصانة والدقة الهندسية. وكما تبين في هذا الطرح المفصل، فإن العملية تتجاوز التعديلات الشكلية في خيارات التنسيق البصري؛ إذ إن تغيير التنسيق الخارجي لا يمس الجوهر الرقمي التسلسلي للبيانات المخزنة في الذاكرة. وتتطلب المعالجة الاحترافية وعياً عميقاً بالنظام التسلسلي الحسابي الذي أرسى قواعده محرك إكسيل منذ مطلع ثمانينيات القرن الماضي، حيث يمثل اليوم عدداً صحيحاً ويمثل الوقت كسراً عشرياً نسبياً.
تتعدد الخيارات التقنية وتتنوع بين استخدام الدوال الرياضية البسيطة مثل INT وMOD التي تمتاز بالخفة والسرعة الفائقة، مروراً بالدوال الهيكلية المتخصصة مثل DATE وTIME، والأدوات السريعة المدمجة، وصولاً إلى مسارات الأتمتة المتقدمة في محرر Power Query والأكواد البرمجية للغة VBA. ويتوقف اختيار الأداة المثلى دائماً على طبيعة المشروع؛ فالتقارير السريعة تناسبها الأدوات اليدوية، بينما النماذج الديناميكية تتطلب الصيغ الحسابية، في حين تفرض خطوط أنابيب البيانات الضخمة اللجوء الحتمي إلى حلول Power Query وأتمتة مسارات التحويل لضمان الموثوقية وتوفير الموارد الزمنية والمؤسسية.
المراجع
- Cascio, W. F., & Montealegre, R. (2016). How Technology Is Changing Work and Organizations. Annual Review of Organizational Psychology and Organizational Behavior. https://doi.org/10.1146/annurev-orgpsych-041015-062352
- Dunning, D. A., Heath, C., & Suls, J. M. (2004). Flawed Self-Assessment. Gothic.net. https://doi.org/10.1111/j.1529-1006.2004.00018.x