كيف يمكنك حساب ساعات العمل الشهرية في Excel؟
في العديد من المؤسسات، يتبع الموظفون جدول عمل قياسي، مثل 8 ساعات يوميًا على مدى 5 أيام في الأسبوع. ويُعد حساب إجمالي ساعات العمل الشهرية بدقة أمرًا بالغ الأهمية لمعالجة الرواتب، وتتبع المشاريع، وإدارة القوى العاملة بكفاءة. ومع ذلك، فإن جمع إجمالي الساعات يدويًّا كل شهر قد يكون عُرضةً للخطأ ويستهلك وقتًا طويلاً، خاصةً عند الحاجة إلى أخذ عطلات نهاية الأسبوع أو العطلات الرسمية أو اختلاف جداول العمل بين الموظفين بعين الاعتبار. ولحسن الحظ، يوفّر Excel أدوات وطرقًا عملية تُبسّط هذا الحساب وتُؤتمتَه، مما يضمن دقةً وكفاءةً عالية في عملياتك.
فيما يلي عدة حلول فعالة لحساب ساعات العمل الشهرية في Excel، ومناسبة لهياكل بيانات واحتياجات مختلفة:
احسب إجمالي ساعات العمل الشهرية باستخدام الصيغ
رمز VBA – احسب ساعات العمل الشهرية تلقائيًّا لعدة صفوف
احسب إجمالي ساعات العمل الشهرية باستخدام الصيغ
توفر دوال صيغ Excel طريقةً مباشرةً وموثوقةً لحساب إجمالي ساعات العمل الشهرية، شريطة أن تعرف تاريخ البدء وتاريخ الانتهاء ومعدّل ساعات العمل اليومية. وتعمل هذه الطريقة بأفضل شكلٍ عندما يكون لديك جدول عمل ثابت لكل يوم، وترغب في احتساب عطلات نهاية الأسبوع — مع إمكانية تضمين العطلات الرسمية اختياريًّا. إليك كيفية إعداد هذا الحساب:
1. حدد الخلية الفارغة التي ترغب في عرض النتيجة فيها، ثم أدخل الصيغة التالية:
=NETWORKDAYS(A2,B2) *8 بعد كتابة الصيغة، اضغط على مفتاحEnter. قد تظهر النتيجة أولًا بتنسيق التاريخ، كما يوضح ذلك لقطة الشاشة التالية:

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

نصائح: لتعكس الفترات التي تتضمّن العطلات بدقة، يمكنك استبعاد تلك الأيام بإضافة نطاق العطلات في صيغتك. استخدم:
=NETWORKDAYS(A2,B2, C2:C4) *8 حيث إنA2 هو تاريخ البدء، وB2 هو تاريخ الانتهاء، وC2:C4 يسرد تواريخ العطلات التي تريد استبعادها. قم بتنسيق الخلية إلىعامكما ورد أعلاه.

ملاحظة:قم بتعديل مراجع الخلايا (مثل A2 وB2 وC2:C4) وفقًا لموقع بياناتك. هذه الطريقة تناسب ساعات العمل اليومية القياسية بشكل مثالي. أما إذا كان الموظفون يعملون بدوام جزئي أو كانت ساعات العمل اليومية متغيرة، فقد تحتاج إلى تعديل الصيغة أو استخدام إحدى الطرق البديلة أدناه.
تتميّز الصيغ بميزة رائعة تتمثل في أنها، بمجرد إعدادها، تتجدّد تلقائيًّا كلما تم تعديل التواريخ أو العطلات. ومع ذلك، إذا كانت مجموعات البيانات تتضمّن عدة موظفين أو سجلات حضور أكثر تعقيدًا، فقد تجد الحلول المتقدمة التالية أنسب لك.
رمز VBA – احسب ساعات العمل الشهرية تلقائيًّا لعدة صفوف
إذا كانت ورقة العمل الخاصة بك تحتوي على سجلات لعدة موظفين أو صفوف—كلٌّ بفترات عمل مختلفة أو تواريخ بداية وانتهاء متباينة—فإن إدخال الصيغ يدويًّا صفًّا تلو الآخر يصبح أمرًا مملًّا. أما باستخدام ماكرو VBA، فيمكنك حساب ساعات العمل تلقائيًّا لكل الصفوف دفعة واحدة، مما يوفّر وقتك ويقلل الأخطاء اليدوية!
يُعد هذا الحل مفيدًا بشكل خاص عندما يحتوي جدولك على صف لكل موظف أو فترة عمل مميزة، مع أعمدة لتاريخ البدء وتاريخ الانتهاء، وعطلات اختيارية. وسيقوم الماكرو أدناه بالمرور عبر جميع الصفوف وتعبئة ساعات العمل المحسوبة لكل إدخال.
1. افتح محررVisual Basic for Applications بالنقر علىأدوات المطور > Visual Basic. في النافذة الجديدة، انقر علىإدراج > وحدة نمطية، ثم الصق رمز VBA التالي في منطقة الكود:
Sub CalculateMonthlyWorkingHours()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim startCol As String, endCol As String, holidayCol As String, resultCol As String
Dim holidays As Variant
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set ws = Application.ActiveSheet
' Adjust these column letters as needed
startCol = "A" ' Start Date in Column A
endCol = "B" ' End Date in Column B
holidayCol = "C" ' Holiday list in Column C (optional; can be blank)
resultCol = "D" ' Results in Column D
lastRow = ws.Cells(ws.Rows.Count, startCol).End(xlUp).Row
For i = 2 To lastRow
If ws.Cells(i, startCol).Value <> "" And ws.Cells(i, endCol).Value <> "" Then
If ws.Cells(i, holidayCol).Value <> "" Then
holidays = Split(ws.Cells(i, holidayCol), ",")
ws.Cells(i, resultCol).Value = WorksheetFunction.NetworkDays(ws.Cells(i, startCol), ws.Cells(i, endCol), holidays) * 8
Else
ws.Cells(i, resultCol).Value = WorksheetFunction.NetworkDays(ws.Cells(i, startCol), ws.Cells(i, endCol)) * 8
End If
Else
ws.Cells(i, resultCol).Value = ""
End If
Next i
End Sub ملاحظات وتعليمات:
- عدّل أحرف الأعمدة ()startCol،endCol،holidayCol،resultCol) حسب احتياجاتك لتتناسب تمامًا مع تخطيط ورقة العمل الخاصة بك.
- يجب أن يحتوي العمودholidayCol على تواريخ مفصولة بفواصل، مثل 7/3/2025 ،7/18/2025. وإذا لم يكن مطلوبًا، يمكنك تركه فارغًا.
- يفترض هذا الماكرو أن البيانات تبدأ من الصف 2، أي بعد العنوان الرئيسي مباشرةً.
2. لتشغيل الماكرو، انقر على الزر
أو اضغط علىF5 أثناء تحديد الوحدة النمطية. سيقوم الكود تلقائيًّا بحساب وتعبئة إجمالي ساعات العمل الشهرية لجميع الصفوف في عمود النتائج. وإذا واجهت خطأً، فتحقق من صحة مراجع بياناتك وتنسيق التاريخ.
تُعد هذه الطريقة فعّالة بشكل خاص لأتمتة الحسابات عبر قوائم موظفين كبيرة أو جداول زمنية متعددة الصفوف، حيث تضمن الاتساق وتقلل من احتمالية تفويت أي سجلات. أما إذا كان هيكل بياناتك أكثر مرونة أو رغبت في تلخيص سجلات الحضور اليومية، فننصحك باستخدام جدول بيانات محوري كما هو موضح أدناه.
أفضل أدوات الإنتاجية لمكتبتك
عزِّز مهاراتك في 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 يومًا بكامل الميزات— بدون تسجيل، بدون بطاقة ائتمان
- أفضل قيمة— وفِّر مقارنةً بشراء الإضافات بشكل منفصل