تابع datedif در اکسل
تابع DATEDIF در اکسل ابزاری ساده ولی قدرتمند برای محاسبه فاصلههای زمانی بین دو تاریخ است. این تابع که در مستندات رسمی اکسل کمتر برجسته شده، برای محاسبه تعداد سال، ماه یا روز بین دو تاریخ، یا ترکیبی از آنها، کاربرد فراوانی دارد. در این مقاله با نحوۀ استفاده، واحدها، محدودیتها و روشهای جایگزین و مثالهای واقعی آشنا میشوید.
فرمت تابع
فرمت کلی تابع:
=DATEDIF(start_date, end_date, unit)در این فرمول، start_date تاریخ شروع، end_date تاریخ پایان و unit یک رشته مشخصکننده واحد محاسبه است (مثل “Y” یا “M”).
واحدهای قابل استفاده
| واحد (unit) | معنی |
|---|---|
| “Y” | تعداد سال کامل بین تاریخها |
| “M” | تعداد ماه کامل بین تاریخها |
| “D” | تعداد روز بین تاریخها |
| “YD” | تعداد روز بین دو تاریخ با صرفنظر از سالها (سال را صفر فرض میکند) |
| “YM” | تعداد ماه باقیمانده پس از محاسبۀ سالها |
| “MD” | تعداد روز باقیمانده پس از محاسبۀ ماهها و سالها |
مثالهای پایه
- محاسبه سالهای کامل بین دو تاریخ:
=DATEDIF(A1, B1, "Y")اگر A1 برابر 01/01/2010 و B1 برابر 01/01/2023 باشد، خروجی 13 خواهد بود (۱۳ سال کامل).
- محاسبه کل ماهها بین دو تاریخ:
=DATEDIF(A1, B1, "M")نتیجه تعداد ماههای کامل بین تاریخها را برمیگرداند.
- محاسبه روزها بین دو تاریخ:
=DATEDIF(A1, B1, "D")تعداد کل روزها (تفاوت مطلق تاریخی) نمایش داده میشود.
ترکیب برای نمایش «سال، ماه، روز»
اغلب نیاز داریم فاصله را به شکل خواناتر مثل «x سال y ماه z روز» نمایش دهیم. این فرمول رایج است:
=DATEDIF(A1,B1,"Y") & " سال " & DATEDIF(A1,B1,"YM") & " ماه " & DATEDIF(A1,B1,"MD") & " روز"این ترکیب ابتدا سالهای کامل را محاسبه میکند، سپس ماههای باقیمانده و در انتها روزهای باقیمانده. اگر A1 تاریخ تولد باشد و B1 تاریخ امروز، این عبارت سن دقیق را برمیگرداند.
نکات مهم و محدودیتها
- تابع DATEDIF در راهنمای داخلی برخی نسخههای اکسل مستند نشده ولی در همه نسخهها کار میکند.
- اگر start_date بزرگتر از end_date باشد، تابع خطای #NUM! یا نتایج نامشخص میدهد؛ همیشه ترتیب تاریخها را درست وارد کنید.
- واحد “MD” در مواردی که با پایان ماه سر و کار دارد، گاهی نتایج غیرمنتظره برمیگرداند (برای مثال اختلاف روزها بین 31 ژانویه و 28 فوریه).
- تابع برای تاریخهای غیرمعتبر یا متنی باید با توابع DATE یا VALUE ترکیب شود تا از خطا جلوگیری شود.
- در Google Sheets نیز تابع DATEDIF پشتیبانی میشود، اما بهتر است کیفیت خروجی را در هر پلتفرم بررسی کنید.
مثال پیشرفته: رفع مشکل MD هنگام پایان ماه
فرض کنید A1 = 31/01/2021 و B1 = 28/02/2021. اگرچه ماه کامل بین آنها صفر است، DATEDIF(…,”MD”) ممکن است رفتار غیرمنتظرهای نشان دهد. یک راهکار جایگزین برای محاسبۀ روزهای باقیمانده:
=IF(DAY(B1)>=DAY(A1),
DAY(B1)-DAY(A1),
DAY(B1)+DAY(EOMONTH(A1,0))-DAY(A1)
)این فرمول بررسی میکند که آیا روز ماه در تاریخ پایان بزرگتر یا مساوی روز ماه در تاریخ شروع است یا خیر. اگر کمتر باشد، از پایان ماه تاریخ شروع استفاده میکند تا تعداد روزهای واقعی محاسبه شود. تابع EOMONTH آخرین روز ماه را برمیگرداند و از مشکلات پایان ماه جلوگیری میکند.
مثال کاربردی: محاسبۀ سابقه کاری
فرض کنید تاریخ شروع خدمت در A2 و تاریخ خروج یا امروز در B2 است. برای نمایش سابقه کاری بصورت خوانا از فرمول ترکیبی استفاده کنید:
=DATEDIF(A2,B2,"Y") & " سال، " & DATEDIF(A2,B2,"YM") & " ماه، " & DATEDIF(A2,B2,"MD") & " روز"این فرمول به مدیران منابع انسانی و تیمهای حقوق و دستمزد کمک میکند سابقه را دقیق و قابلفهم نمایش دهند.
جایگزینها و روشهای تکمیلی
- برای محاسبۀ سال به صورت اعشاری میتوان از YEARFRAC استفاده کرد: =YEARFRAC(A1,B1)
- برای محاسبه روزهای کاری بین دو تاریخ (بدون تعطیلات) از NETWORKDAYS یا NETWORKDAYS.INTL استفاده کنید.
- اگر نیاز به دقت بالاتر یا محاسبات سفارشی دارید (مانند محاسبۀ ماهها با طول متغیر یا تعطیلات خاص)، ترکیب DATE، EOMONTH و توابع روز/ماه/سال مفید خواهد بود.
مثال: محاسبه تعداد سال به صورت اعشاری
=YEARFRAC(A1,B1,1)این فرمول سالها را به صورت عدد اعشاری برمیگرداند (پارامتر سوم نوع سالشمار است؛ 1 معمولاً برای محاسبۀ دقیق روزها استفاده میشود).
نکات عملی و بهترین روشها
- همیشه فرمت سلولها را بدنۀ تاریخ (Date) قرار دهید و از وارد کردن تاریخها به صورت متن خودداری کنید.
- برای گزارشها، خروجی DATEDIF را با TEXT یا CONCAT ترکیب کنید تا نمایشی خواندنی داشته باشید.
- وقتی با ماهها و روزهای پایان ماه سروکار دارید، EOMONTH را برای جلوگیری از خطا استفاده کنید.
- در آرایهها یا محاسبات انبوه، DATEDIF سریع و کمحجم است اما برای سناریوهای پیچیده ممکن است به توابع مکمل نیاز داشته باشید.
خلاصه
تابع DATEDIF یک ابزار ساده و کاربردی برای محاسبۀ تفاوت تاریخهاست که در محاسبات سن، سابقه کاری، گزارشهای مالی و موارد مشابه بسیار مفید است. آگاهی از واحدها، محدودیتها و روشهای ترکیبی مانند استفاده از EOMONTH یا YEARFRAC باعث میشود نتایج دقیقتر و قابل اعتمادتر بهدست آورید.
آیا این مطلب برای شما مفید بود ؟




