KutoolsforOffice — حل واحد، خمس أدوات قوية.تحقيق المزيد بجهد أقل.

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

المؤلفXiaoyangتاريخ التعديل

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

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

احسب النسبة المئوية بين تاريخين


حساب نسبة الإنجاز بين تاريخين باستخدام صيغة

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

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

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

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

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

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

قم بتنسيق قيم الخلايا بهيئة نسبة مئوية

تحذيرات:هذا الأسلوب مرن جدًّا، لكن تأكد من أن جميع خلايا التواريخ منسَّقة كتواريخ فعلية في 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(أو انقر على زر)زر التشغيل التشغيل) لتنفيذ البرنامج النصي. ستقوم هذه العملية التلقائية بتعبئة عمود النسبة المئوية (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