Skip to main content

Kutools for Office — مجموعة واحدة. خمسة أدوات. أنجز المزيد.

كيفية حساب النسبة المئوية بين تاريخين في Excel؟

Author Xiaoyang Last modified

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

تُظهر لقطة الشاشة التالية قائمة مهام عينة مع تاريخ البدء وتاريخ الانتهاء والنسبة المئوية المحسوبة المطلوبة للإكمال:

calculate the percentage between two dates


حساب النسبة المئوية للإكمال بين تاريخين باستخدام صيغة

لحساب النسبة المئوية لإكمال المهمة بين تاريخين، يمكنك استخدام صيغة تعتمد على وظائف DATEDIF وTODAY في Excel. هذا النهج مناسب عندما يكون لديك عدد قليل من المهام ولا تتغير مجموعة البيانات بشكل متكرر.

1. أدخل الصيغة التالية في خلية فارغة في الصف الذي تريد رؤية النتيجة فيه (على سبيل المثال، في الخلية D2):

=(DATEDIF(B2,TODAY(),"d")+1)/(DATEDIF(B2,C2,"d")+1)

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

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

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

format the cell values as percentage format

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

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


رمز VBA – أتمتة حساب النسبة المئوية لتحديث ديناميكي عبر الصفوف والتواريخ

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

1. اضغط على Alt + F11 لفتح محرر Microsoft Visual Basic for Applications. في محرر VBA، انتقل إلى إدراج > وحدة لإنشاء وحدة جديدة، ثم ألصق الكود التالي فيها:

Sub UpdateTaskCompletionPercent()
'Updated by Extendoffice 20250724
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim StartDateCol As String, EndDateCol As String, PercentCol As String
    Dim startDate As Variant, endDate As Variant, todayDate As Date
    Dim pct As Double
    
    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    
    Set ws = Application.ActiveSheet
    
    ' Adjust these column letters as needed
    StartDateCol = "B"
    EndDateCol = "C"
    PercentCol = "D"
    
    todayDate = Date
    lastRow = ws.Cells(ws.Rows.Count, StartDateCol).End(xlUp).Row
    
    For i = 2 To lastRow ' Skip header
        startDate = ws.Cells(i, StartDateCol).Value
        endDate = ws.Cells(i, EndDateCol).Value
        
        If IsDate(startDate) And IsDate(endDate) Then
            If endDate >= startDate Then
                If todayDate < startDate Then
                    pct = 0
                ElseIf todayDate >= endDate Then
                    pct = 1
                Else
                    pct = (todayDate - startDate + 1) / (endDate - startDate + 1)
                End If
                ws.Cells(i, PercentCol).Value = pct
                ws.Cells(i, PercentCol).NumberFormat = "0.00%"
            Else
                ws.Cells(i, PercentCol).Value = "Invalid dates"
            End If
        Else
            ws.Cells(i, PercentCol).Value = "Date error"
        End If
    Next i
End Sub

2. بعد إدخال الكود، اضغط F5 (أو انقر فوق الزر Run button تشغيل) لتنفيذ البرنامج النصي. ستقوم هذه العملية الجماعية بتعبئة العمود الخاص بالنسبة المئوية (D) لكل صف بناءً على التواريخ الحالية.

ملاحظات واستكشاف للأخطاء:

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

هذا الحل VBA مفيد لإعدادات البيانات المتكررة والتقارير الأوتوماتيكية حيث يكون نسخ الصيغ يدويًا غير فعال.



مقالات أكثر عن النسبة المئوية:

  • حساب السعر الأصلي من الخصم بالنسبة المئوية
  • عادةً، في حياتنا اليومية، هناك بعض المنتجات التي يتم خصمها في مركز التسوق. إذا كان لديك السعر المخصوم والنسبة المئوية للخصم كما هو مبين في لقطة الشاشة التالية، كيف يمكنك حساب السعر الأصلي لهذا المنتج في Excel؟
  • استخدام COUNTIF لحساب النسبة المئوية في Excel
  • على سبيل المثال، لدي تقرير ملخص لورقة بحثية، وهناك ثلاث خيارات A و B و C، الآن أريد حساب النسبة المئوية لكل واحدة من هذه الخيارات الثلاثة. هذا يعني أنني أحتاج إلى معرفة الخيار A يمثل النسبة المئوية من جميع الخيارات. في هذه المقالة، سأتحدث عن كيفية الحصول على النسبة المئوية لخيار معين في نطاق.

  • شريط الصيغة الفائق (تحرير سهل للنصوص والصيغ المتعددة الأسطر); تخطيط القراءة (قراءة وتحرير سهل للخلايا الكبيرة العدد); لصق إلى النطاق المُرشح...
  • دمج الخلايا/الصفوف/الأعمدة مع الاحتفاظ بالبيانات; تقسيم محتوى الخلايا; دمج الصفوف المكررة والمجموع/المتوسط... منع الخلايا المكررة; مقارنة النطاقات...
  • تحديد الصفوف المكررة أو الفريدة; تحديد الصفوف الفارغة (جميع الخلايا فارغة); البحث المتقدم والبحث الضبابي في العديد من المصنفات; اختيار عشوائي...
  • نسخ دقيق للخلايا المتعددة دون تغيير مرجع الصيغة; إنشاء تلقائي للمراجع إلى أوراق متعددة; إدراج رموز تعداد نقطي، مربعات اختيار وأكثر...
  • تفضيل وإدراج سريع للصيغ، النطاقات، الرسوم البيانية والصور; تشفير الخلايا بكلمة مرور; إنشاء قائمة بريدية وإرسال رسائل البريد الإلكتروني...
  • استخراج النص، إضافة نص، إزالة الأحرف في موضع محدد، إزالة المسافات; إنشاء وطباعة إحصاءات صفحة البيانات; التحويل بين محتويات الخلايا والتعليقات...
  • مرشح متقدم (حفظ وتطبيق مخططات التصفية على أوراق أخرى); ترتيب متقدم حسب الشهر/الأسبوع/اليوم، التكرار وأكثر; تصفية خاصة حسب العريض، المائل...
  • تجميع المصنفات وأوراق العمل; دمج الجداول بناءً على الأعمدة الرئيسية; تقسيم البيانات إلى أوراق متعددة; تحويل دفعة xls، xlsx وPDF...
  • تجميع جدول محوري حسب رقم الأسبوع، يوم الأسبوع وأكثر... عرض الخلايا غير المؤمنة، المؤمنة بألوان مختلفة; تمييز الخلايا التي تحتوي على صيغة/اسم...
kte tab 201905
  • تمكين التحرير والقراءة بتبويب في Word، Excel، PowerPoint، Publisher، Access، Visio وProject.
  • فتح وإنشاء مستندات متعددة في تبويبات جديدة لنفس النافذة، بدلاً من النوافذ الجديدة.
  • يزيد من إنتاجيتك بنسبة 50%، ويقلل من مئات النقرات بالماوس لك كل يوم!
officetab bottom