اگر از اکسل برای ردیابی اطلاعات پروژه ها استفاده می کنید، ممکن است بخواهید مدت زمان یک پروژه معین را بر حسب سال، ماه و روز بدانید. اگر تاریخ شروع و پایان هر پروژه را دارید، می توانید از تابع کاربرگ DATEDIF برای بازگرداندن اطلاعات به روش دلخواه استفاده کنید.
به عنوان مثال، فرض کنید که شما یک تاریخ شروع در سلول E7 و تاریخ پایان در سلول F7 دارید. با استفاده بسیار ساده از DATEDIF می توانید تفاوت بین این دو تاریخ را محاسبه کنید:
=DATEDIF(E7,F7,"d")
این تابع تعداد روزهای بین دو تاریخ را برمی گرداند، مشروط بر اینکه تاریخ در E7 کمتر یا مساوی با تاریخ F7 باشد. آرگومان سوم، "d" باعث می شود که DATEDIF نتیجه خود را در چند روز برگرداند. همچنین می توانید ماه ها ("m") و سال ها (y") را مشخص کنید. اما برای اهداف این مثال، چندین استدلال دیگر وجود دارد که بسیار مفید هستند: ماه ها به استثنای سال ها ("ym")، روزها به استثنای سال ها (" yd")، و روزها به استثنای ماه ها و سال ها ("md").
با استفاده از این استدلالهای مختلف، میتوانید فرمولی بسازید که پاسخی را ارائه دهد که روزهای سپری شده را به صورت سال، ماه و روز نشان میدهد. (به دلیل طولانی بودن فرمول های این نکته، آنها را به خطوط جداگانه تقسیم کردم تا خوانایی آنها کمی آسان تر شود. با این حال، این یک فرمول واحد است و باید در اکسل وارد شود.)
=DATEDIF(E7,F7,"y") & " years, " & DATEDIF(E7,F7,"ym")
& " months, " & DATEDIF(E7,F7,"md") & " days "
توجه داشته باشید که این فرمول مانند سال ها، ماه ها و روزها همیشه واحدهای جمع را برمی گرداند. برای کسانی که می خواهند از نظر گرامری صحیح باشند و واحدهای مفرد را در هنگام فراخوانی ارائه دهند، فرمول زیر این کار را انجام می دهد:
=IF(DATEDIF(E7,F7,"y")=1,DATEDIF(E7,F7,"y")&" year, ",
DATEDIF(E7,F7,"y")&" years, ")&IF(DATEDIF(E7,F7,"ym")=1,
DATEDIF(E7,F7,"ym") &" month, ",DATEDIF(E7,F7,"ym")
&" months, ")&IF(DATEDIF(E7,F7,"md")=1,DATEDIF(E7,F7,"md")
&" day",DATEDIF(E7,F7,"md")&" days")
این در همه موارد کار می کند به جز زمانی که سال، ماه یا روز صفر باشد. برای خلاص شدن از شر واحد مناسب زمانی که صفر است به فرمول طولانیتری نیاز است:
=IF(DATEDIF(E7,F7,"y")=0,"",IF(DATEDIF(E7,F7,"y")=1,
DATEDIF(E7,F7,"y")&" year, ",DATEDIF(E7,F7,"y")&" years, "))
&IF(DATEDIF(E7,F7,"ym")=0,"",IF(DATEDIF(E7,F7,"ym")=1,
DATEDIF(E7,F7,"ym")&" month, ",DATEDIF(E7,F7,"ym")&" months, "))
&IF(DATEDIF(E7,F7,"md")=0,"",IF(DATEDIF(E7,F7,"md")=0,
DATEDIF(E7,F7,"md")&" day ",DATEDIF(E7,F7,"md")&" days"))
این فرمول بسیار طولانی می شود، اما تنها واحدهایی را برمی گرداند که مقداری برای آنها وجود دارد. بنابراین، به جای بازگشت "0 سال، 2 ماه، 1 روز"، "2 ماه، 1 روز" باز خواهد گشت.
حتی این یک فرمول کامل نیست، زیرا در برخی موقعیتها که ضمانت لازم را ندارند، کاما بین ورودیها را نمایش میدهد. مگافرمول زیر باید جمع و کاما را برطرف کند و از شر ورودی های صفر خلاص شود.
=IF(DATEDIF(E7,F7,"y")=0,"",IF(DATEDIF(E7,F7,"y")=1,
DATEDIF(E7,F7,"y")&"year",DATEDIF(E7,F7,"y")&"years"))
&IF(AND(DATEDIF(E7,F7,"y")<>0,DATEDIF(E7,F7,"ym")<>0),", ","")
&IF(DATEDIF(E7,F7,"ym")=0,"",IF(DATEDIF(E7,F7,"ym")=1,
DATEDIF(E7,F7,"ym")&" month",DATEDIF(E7,F7,"ym")&" months"))
&IF(AND(OR(DATEDIF(E7,F7,"y")<>0,DATEDIF(E7,F7,"ym")<>0),
DATEDIF(E7,F7,"md")<>0),", ","")&IF(DATEDIF(E7,F7,"md")=0,"",
IF(DATEDIF(E7,F7,"md")=1,DATEDIF(E7,F7,"md")&" day",
DATEDIF(E7,F7,"md")&" days"))