تعدّ =DATEDIF(A2,B2,"M") الأشهر الكاملة بين تاريخ البداية في A2 وتاريخ النهاية في B2. والوسيط الثالث، الوحدة، يحدد ما يُعدّ: "Y" السنوات، و"M" الأشهر، و"D" الأيام، إضافة إلى ثلاث وحدات تتجاهل جزءًا من التاريخين.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Start | End | Unit | Result | |
| 2 | 2024-04-15 | 2026-09-10 | Y | 2 | |
| 3 | M | 28 | |||
| 4 | D | 878 | |||
| 5 | YM | 4 | |||
| 6 | MD | 26 | |||
| 7 | YD | 148 |
من 2024-04-15 إلى 2026-09-10 سنتان كاملتان، و28 شهرًا كاملًا، و878 يومًا. غيّر تاريخ النهاية في B2 وراقب كل وحدة تتغير. ويمكن كتابة الوحدة في الصيغة ("M") أو قراءتها من خلية، كما هنا.
صيغة DATEDIF ووحداتها
=DATEDIF(start_date, end_date, unit)
| الوحدة | تعدّ | من 2024-04-15 إلى 2026-09-10 |
|---|---|---|
"Y" | السنوات الكاملة | 2 |
"M" | الأشهر الكاملة | 28 |
"D" | الأيام | 878 |
"YM" | الأشهر بعد آخر سنة كاملة | 4 |
"MD" | الأيام بعد آخر شهر كامل | 26 |
"YD" | الأيام بعد آخر سنة كاملة | 148 |
"كاملة" تعني أن DATEDIF لا تقرّب إلى الأعلى أبدًا. من 31 يناير إلى 28 فبراير 0 أشهر، لأن 28 فبراير يأتي قبل علامة الشهر الواحد. والوحدة لا تفرّق بين الأحرف الكبيرة والصغيرة ("m" تعمل أيضًا)، لكن يجب أن تكون بين علامتي اقتباس أو في خلية.
لماذا لا توجد DATEDIF في قائمة الدوال
جاءت DATEDIF إلى الاكسل من Lotus 1-2-3، وتحتفظ بها Microsoft للتوافق فقط. فهي ليست في مربع حوار إدراج دالة، ولا يقترحها الإكمال التلقائي للصيغ، ولا يظهر تلميح بوسائطها. لكنها ما زالت تحسب في كل إصدارات الاكسل على Windows وMac، وفي Google Sheets. اكتب الاسم كاملًا والقوس الافتتاحي، =DATEDIF(، وأضف الوسائط بنفسك.
الأشهر بين تاريخين
الأشهر الكاملة هي ما تحتاج إليه معظم العقود والاشتراكات وتقارير مدة الخدمة. ولرقم عشري، تعيد YEARFRAC(A2,B2)*12 الأشهر مع الاحتفاظ بالكسر (يحتسب أساسها الافتراضي كل شهر 30 يومًا).
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Start | End | Full months | Decimal months |
| 2 | 2025-03-10 | 2026-01-05 | 9 | 9.8 |
| 3 | 2024-04-15 | 2026-09-10 | 28 | 28.8 |
| 4 | 2026-01-31 | 2026-02-28 | 0 | 0.9 |
| 5 | 2025-11-01 | 2026-05-01 | 6 | 6.0 |
استمر الاشتراك الأول 9 أشهر كاملة: يقع 5 يناير قبل اليوم العاشر، لذا لا يُحتسب الشهر العاشر. ويُظهر الصف الثالث حالة 31 يناير، 0 أشهر.
السنوات والأشهر والأيام معًا
صُممت "Y" و"YM" و"MD" لتُستخدم معًا. تبدأ كل واحدة من حيث توقفت سابقتها، لذا تجيب الثلاث عن سؤال "كم المدة بالضبط": سنتان و4 أشهر و26 يومًا للتاريخين أعلاه. وتستخدم صفحة حساب العمر الوحدات الثلاث نفسها على تواريخ الميلاد.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Hired | Years | Months | Days | Service | As of |
| 2 | 2019-06-03 | 7 | 3 | 27 | 7y 3m 27d | 2026-09-30 |
| 3 | 2023-11-20 | 2 | 10 | 10 | 2y 10m 10d |
خدم الموظف الأول 7 سنوات و3 أشهر و27 يومًا في 2026-09-30.
لماذا تعيد DATEDIF الخطأ #NUM!
ترفض DATEDIF العد إلى الوراء. عندما يكون تاريخ البداية بعد تاريخ النهاية، تكون النتيجة #NUM!. وإذا كان الترتيب قد يختلف، فأعطِ DATEDIF التاريخ الأقدم بالدالة MIN والأحدث بالدالة MAX.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Start | End | DATEDIF | With MIN and MAX |
| 2 | 2026-03-10 | 2026-01-05 | #NUM! | 64 |
#NUM! أحد الأرقام خارج النطاق الذي تقبله هذه الدالة.تعرض C2 الخطأ #NUM!؛ وتعيد D2 القيمة 64. وللأيام وحدها، تعطي =ABS(B2-A2) القيمة نفسها 64 دون DATEDIF. وتعيد DATEDIF أيضًا #NUM! لوحدة غير معروفة مثل "W"، و#VALUE! عندما يكون التاريخ نصًا لا يستطيع الاكسل قراءته تاريخًا.
الوحدة MD قد تكون خاطئة
تنصح وثائق Microsoft نفسها بعدم استخدام "MD": عندما لا يكون يوم البداية موجودًا في الشهر السابق لتاريخ النهاية، قد تعيد رقمًا سالبًا.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Start | End | MD | D |
| 2 | 2026-01-31 | 2026-03-01 | -2 | 29 |
من 31 يناير إلى 1 مارس تكون نتيجة "MD" هي -2: تعدّ DATEDIF من "31 فبراير"، الذي يتحول إلى 3 مارس، أي بعد تاريخ النهاية بيومين. أما عدد الأيام، 29، فصحيح. عندما يمكن أن تقع تواريخ البداية بين اليوم 29 واليوم 31، فاعرض المدة بالأيام، أو تحقق من رقم MD يدويًا.
تمرين: عدّ الأشهر
| A | B | C | |
|---|---|---|---|
| 1 | Start | End | Months |
| 2 | 2025-03-10 | 2026-01-05 |
دورك: في C2، عدّ الأشهر الكاملة بين تاريخ البداية في A2 وتاريخ النهاية في B2.
| A | B | C | |
|---|---|---|---|
| 1 | Date 1 | Date 2 | Days |
| 2 | 2026-04-18 | 2026-02-01 |
دورك: في C2، عدّ الأيام بين التاريخين، أيًا كان الذي يأتي أولًا.
الأسئلة الشائعة
ماذا تفعل DATEDIF في الاكسل؟
تعدّ السنوات أو الأشهر أو الأيام الكاملة بين تاريخين: =DATEDIF(A2,B2,"Y") للسنوات، و"M" للأشهر، و"D" للأيام. ويجب أن يأتي تاريخ البداية أولًا.
لماذا لا أجد DATEDIF في الاكسل؟
أُبقيت DATEDIF للتوافق مع Lotus 1-2-3، لذا يستبعدها الاكسل من مربع حوار إدراج دالة ومن الإكمال التلقائي للصيغ. لكنها ما زالت تعمل في كل الإصدارات: اكتب =DATEDIF( كاملة وأضف الوسائط بنفسك.
لماذا تعيد DATEDIF الخطأ #NUM!؟
لأن تاريخ البداية بعد تاريخ النهاية. بدّل الوسيطين، أو استخدم =DATEDIF(MIN(A2,B2),MAX(A2,B2),"D") عندما لا تعرف أي التاريخين يأتي أولًا.
ما الفرق بين YM وMD وYD في DATEDIF؟
تتجاهل جزءًا من التاريخين: تعطي "YM" الأشهر المتبقية بعد السنوات الكاملة، و"MD" الأيام المتبقية بعد الأشهر الكاملة، و"YD" الأيام المتبقية بعد السنوات الكاملة. ومعًا تعطي "Y" و"YM" و"MD" العمر بالسنوات والأشهر والأيام.
هل تعمل DATEDIF في Google Sheets؟
نعم، بالوسائط والوحدات نفسها. كما يدرجها Google Sheets في مساعدة الدوال، على عكس الاكسل.