كيف تحسب الوقت المنقضي — سواءً كان أيامًا أو أشهرًا أو سنوات — بين تاريخين ووقتين في Excel؟
عند إدارة الجداول الزمنية أو تتبع خطط المشاريع أو تحليل سجلات الأحداث في Excel، ستحتاج غالبًا إلى تحديد المدة الزمنية المنقضية بين نقطتين زمنيتين معيّنتين. على سبيل المثال، إذا كانت لديك قائمتان—إحداهما تحتوي على أوقات البدء والأخرى على أوقات الانتهاء—فقد ترغب في حساب الوقت المنقضي لكل زوج منهما في نفس الصف بسرعة، كما يظهر في لقطة الشاشة أدناه. ويُعدّ هذا مفيدًا للغاية لإعداد تقارير ساعات العمل، أو حساب الأعمار، أو مراقبة المواعيد النهائية.
احسب الوقت المنقضي/الأيام/الأشهر/السنوات باستخدام صيغة
استخدم كود VBA لحساب الوقت المنقضي مباشرةً
احسب الوقت المنقضي/الأيام/الأشهر/السنوات باستخدام صيغة
احسب الوقت المنقضي
يجعلك Excel قادرًا بسهولة على حساب الفرق بين وقتنين—وهو مفيد في سيناريوهات مثل تتبع نوبات عمل الموظفين أو حساب أوقات الإنجاز أو مراقبة تقدم المشروع. بالنسبة للأوقات في نفس اليوم، اتبع الخطوات التالية:
1. انقر في خلية فارغة حيث تريد عرض الوقت المنقضي (مثلًا، الخلية C2)، ثم أدخل الصيغة التالية:
=IF(B2<A2,1+B2-A2, B2-A2)يجب أن تحتوي الخلية A2 على وقت البدء، والخلية B2 على وقت الانتهاء. وتتعامل هذه الصيغة بذكاء مع الحالات التي يكون فيها وقت الانتهاء أبكر من وقت البدء—مثل النوبات التي تمتد عبر منتصف الليل—لضمان دقة الحساب.2. بعد إدخال الصيغة، اضغطEnter. ولتطبيق هذه الصيغة على صفوف أخرى، استخدم مقبض التعبئة: انقر على المربع الصغير في الزاوية السفلية اليمنى للخلية، ثم اسحبه لأسفل لتغطية السجلات الإضافية. بهذه الطريقة، يمكنك بسهولة حساب الأوقات المنقضية لمدخلات متعددة.
3. مع بقاء خلايا النتائج مُحدَّدة، انقر بزر الماوس الأيمن لفتح قائمة السياق، ثم اخترتعيين تنسيق الخلية. في مربع الحوارتعيين تنسيق الخلية، ضمن علامة التبويبNumber، اخترTime من القائمة على اليسار. ثم على اليمين، اختر تنسيق الوقت المفضَّل لديك (مثل hh:mm أو h:mm:ss، إلخ) لعرض النتائج كأوقات منقضية يسهل قراءتها.
4. انقرOK لتطبيق التنسيق. سيتم الآن عرض قيم الوقت وفقًا لاختيارك، مما يسهل تفسير مدد الوقت الإجمالية.
نصائح إضافية:
- تأكد من تنسيق عمودَي وقت البدء ووقت الانتهاء كأوقات صالحة في Excel لتجنب حدوث الأخطاء.
- إذا كنت تتوقّع أن يمتدّ بعض أوقات الانتهاء إلى اليوم التالي (مثلًا، في نوبات العمل الليلية)، فإن الصيغة أعلاه تأخذ ذلك في الحسبان بإضافة 1 —وهو ما يعادل يومًا كاملًا— عند الحاجة.
- إذا ظهر لك خطأ «#VALUE!»، فافحص الخلايا المصدر بحثًا عن إدخالات فارغة أو ذات تنسيق غير صحيح.
احسب الأيام أو الأشهر أو السنوات المنقضية
من الشائع حساب عدد الأيام أو الأشهر أو السنوات بين تاريخين لأغراضٍ مثل تخطيط المشاريع، أو تحديد فترات الخدمة، أو حساب الأعمار. إليك طريقة فعّالة لكل نوع:
لحساب الأيام المنقضية، انقر في خلية فارغة (مثل C2) وأدخل الصيغة التالية:
=B2-A2هنا، A2 هو تاريخ البدء وB2 هو تاريخ الانتهاء. بعد الضغط علىEnterاسحب مقبض التعبئة لأسفل لحساب القيم في باقي الصفوف.
ملاحظات:تأكد من استخدام كلا التاريخين لتنسيق تاريخ Excel؛ وإلا فقد تكون النتيجة غير صحيحة. إذا كنت تفضّل احتساب الأيام الكاملة فقط (مع تجاهل الساعات والدقائق)، فإن هذه الصيغة مناسبة.
لحساب الأشهر بين تاريخين، أدخل في خلية فارغة:
=DATEDIF(A2,B2,"m")تُرجع هذه الصيغة عدد الأشهر الكاملة المنقضية. وإذا كانت الأشهر الجزئية ذات أهمية، فيمكنك أيضًا عرض الأشهر الكسرية مع الأيام.للسنوات (بما في ذلك السنوات الجزئية)، استخدم:
=DATEDIF(A2,B2,"y")إذا أردت السنوات كرقم عشري، فقد تجرّب=DATEDIF(A2,B2,"m")/12وقم بتنسيق خلية النتيجة كرقم للحصول على دقة أعلى.احتياطات:
- إذا كان تاريخ الانتهاء يسبق تاريخ البدء، فستُرجع هذه الصيغ قيمًا سالبة—فكّر في إضافة تحقق من الصحة لتجنب هذا الموقف.
- تأكد من كتابة DATEDIF بدقة؛ إذ سيؤدي أي خطأ إملائي إلى ظهور رسالة الخطأ "#NAME؟" في Excel، نظرًا لأن هذه الدالة غير مدرجة في قائمة دوال Excel القياسية.
احسب السنوات والأشهر والأيام المنقضية بصيغة مدمجة
إذا كانت مهمتك تتطلب تقسيمًا أكثر تفصيلًا (مثلًا: «سنتان و6 أشهر و19 يومًا»)، فيمكن لبرنامج Excel تنفيذ ذلك بسهولة باستخدام دالة DATEDIF المدمجة. ويُعد هذا الحل مثاليًا لحساب مدد خدمة الموظفين، أو تحديد الأعمار بدقة، أو أي سيناريو يتطلب فصلًا واضحًا بين السنوات والأشهر والأيام.
حدد خلية فارغة (مثل C2)، وأدخل الصيغة التالية:
=DATEDIF(A2,B2,"Y") & " Years, " & DATEDIF(A2,B2,"YM") & " Months, " & DATEDIF(A2,B2,"MD") & " Days"ثم اضغطEnter. يجمع هذا بين عدة عمليات حسابية باستخدام الدالة DATEDIF لإنشاء سلسلة نصية مقروءة تُظهر المدة الزمنية المنقضية بدقة.
إذا كنت بحاجة إلى تطبيق الصيغة على صفوف متعددة، فاستخدم مقبض التعبئة كما سبق. ولضمان عرض النص بشكل صحيح، ننصحك بتنسيق العمود الناتج كـ«عام».
نصيحة مفيدة:إذا شمل حسابك سنة كبيسة أو تواريخ ذات أطوال أشهر مختلفة، فلا تقلق—فإن دالة DATEDIF تحسب النتائج بدقة وفقًا للأشهر والسنين التقويمية.
استكشاف الأخطاء وتذكيرات:
- تحقق دائمًا من البيانات الأصلية بحثًا عن خلايا فارغة أو تنسيقات غير صحيحة للتاريخ/الوقت.
- إذا لاحظت أخطاءً، جرّب إعادة تنسيق أعمدة الإدخال كـ«تاريخ» أو «وقت» لتوحيد البيانات المُدخلة.
- إذا لم تُحدَّث الصيغ تلقائيًا بعد تعديل الخلية المصدر، اضغط F9 لإجبار Excel على إعادة الحساب، أو تأكد من أن خيار الحساب التلقائي مفعَّل في إعدادات Excel.
كود VBA لحساب الوقت المنقضي بين تاريخين ووقتين
إذا كنت بحاجة إلى أتمتة الحسابات أو معالجة مجموعات بيانات كبيرة، فإن VBA أداةٌ قوية وفعّالة. فعلى سبيل المثال، يمكنك دمج نتائج الوقت المنقضي في خلية واحدة أو تخصيص الحسابات وفقًا لاحتياجاتك بدقة.
1. انتقل إلىDeveloper Tools > Visual Basic؛ وستظهر نافذة جديدة باسمMicrosoft Visual Basic for Applications. انقرInsert > Module والصق الكود التالي:
Sub CalcElapsedTimeBySelection()
Dim startRange As Range
Dim endRange As Range
Dim outputCell As Range
Dim ws As Worksheet
Dim i As Long
Dim rowCount As Long
Dim elapsedTime As Double
Dim startTime As Variant, endTime As Variant
Dim xTitleId As String
xTitleId = "Kutools for Excel"
On Error Resume Next
' Prompt user for ranges
Set startRange = Application.InputBox("Select the range for Start Time:", xTitleId, Type:=8)
If startRange Is Nothing Then Exit Sub
Set endRange = Application.InputBox("Select the range for End Time:", xTitleId, Type:=8)
If endRange Is Nothing Then Exit Sub
Set outputCell = Application.InputBox("Select the top-left cell for output results:", xTitleId, Type:=8)
If outputCell Is Nothing Then Exit Sub
On Error GoTo 0
' Check matching range sizes
If startRange.Rows.Count <> endRange.Rows.Count Then
MsgBox "The start and end time ranges must have the same number of rows.", vbExclamation, xTitleId
Exit Sub
End If
' Loop through rows
rowCount = startRange.Rows.Count
For i = 1 To rowCount
startTime = startRange.Cells(i, 1).Value
endTime = endRange.Cells(i, 1).Value
If IsNumeric(startTime) And IsNumeric(endTime) Then
elapsedTime = CDbl(endTime) - CDbl(startTime)
' Handle next-day (cross-midnight) case
If elapsedTime < 0 Then elapsedTime = elapsedTime + 1
outputCell.Offset(i - 1, 0).Value = elapsedTime
outputCell.Offset(i - 1, 0).NumberFormat = "[h]:mm:ss"
Else
outputCell.Offset(i - 1, 0).Value = "Invalid Time"
End If
Next i
MsgBox "Elapsed times calculated successfully for " & rowCount & " rows.", vbInformation, xTitleId
End Sub 2. انقر على زر
لتشغيل الكود. سيُطلب منك تحديد نطاق وقت البدء ونطاق وقت الانتهاء، بالإضافة إلى المكان الذي تريد إخراج الوقت المنقضي فيه. وستُعرض النتيجة بتنسيق الوقت.
يُعد هذا النهج باستخدام VBA فعّالًا بشكل خاص عندما تريد تخصيص الحسابات أو التنسيق بشكل أكبر، ويوفّر وقتك عند العمل مع جداول بيانات ضخمة جدًّا.
أفضل أدوات الإنتاجية لمكتبتك
عزِّز مهاراتك في Excel باستخدام Kutools لـ Excel، وعايش الكفاءة كما لم تفعل من قبل.يقدّم Kutools لـ Excel أكثر من 300 ميزة متقدمة لتعزيز الإنتاجية ووقت الحفظ.انقر هنا للحصول على الميزة التي تحتاجها أكثر من غيرها...
يجلب Office Tab واجهة ذات علامات تبويب إلى Office، ويجعل عملك أسهل بكثير
- تمكّن من التحرير والقراءة باستخدام علامات التبويب في Word وExcel وPowerPoint، وPublisher وAccess وVisio وProject.
- افتح وأنشئ مستندات متعددة في علامات تبويب جديدة داخل النافذة نفسها، بدلاً من فتح نوافذ جديدة.
- يزيد إنتاجيتك بنسبة 50% ويوفّر لك مئات نقرات الفأرة كل يوم!
جميع الإضافات من Kutools في برنامج تثبيت واحد!
Kutools for Office حزمةٌ تحتوي على إضافاتٍ مخصصة لتطبيقات Excel وWord وOutlook وPowerPoint، إلى جانب Office Tab Pro، مما يجعلها الخيار المثالي للفِرق التي تعمل عبر تطبيقات Office.
- حزمة شاملة واحدة— إضافات Excel وWord وOutlook وPowerPoint بالإضافة إلى Office Tab Pro
- برنامج تثبيت واحد، ترخيص واحد— الإعداد خلال دقائق (جاهز لـ MSI)
- يعمل بشكل أفضل معًا— إنتاجية ميسَّرة عبر تطبيقات Office
- تجربة مجانية لمدة 30 يومًا بكامل الميزات— بدون تسجيل، بدون بطاقة ائتمان
- أفضل قيمة— وفِّر مقارنةً بشراء الإضافات بشكل منفصل