שלום וברכה,

מישהו שאל אותי בייעוץ טלפוני את השאלה הבאה:

יש לי טווח זמן בימים (הפרש בין תאריך סיום לתאריך התחלה) ואני מעוניין לתרגם את זה ל-שנים, חודשים וימים.

לדוגמא , בין התאריכים הבאים, יש 1402 יום, כמה שנים, כמה חודשים וכמה ימים יש כאן ?

ובכן, אני הולך ממש עוד רגע להראות כאן את הנוסחאות.

במקרה הזה , יש לפחות 2 צורות לעשות זאת:

צורה אחת - מצריכה שימוש בפונקציה DateDif , ומגיעה לתוצאה מדויקת.
אך אליה וקוץ בה  - הפונקציה לא מתועדת (כלומר אין לה Help בגירסאות הנוכחיות של אקסל).
אני ממליץ עליה בתור פתרון ראשון למי שמוכן קצת לחקור, וללמוד ממקורות “לא מיקרוסופטיים”, ויש הסבר מעולה כאן, וכאן.

היות ומשתמשים רבים מעדיפים רק פונקציות עם “עזרה” - אני אתמקד בפתרון פשוט יותר, אבל רק “כמעט” מושלם.

הפתרון כאמור מתאים למי שרוצה להתשמש רק בפונקציות “עם עזרה” - אבל הוא מדויק רק ב-99%, כי יש חודשים שאורכים 28 יום, ישנם כאלו שאורכים 31 יום ופעם בכמה שנים יש גם פברואר שאורך 29 יום.

לצורך הדוגמא נניח שאנחנו רוצים למנות את הימים בין 15/4/1985 לבין 15/02/1989.

שלב 1- נוסחה שמחשבת כמה ימים עברו בין התאריכים 

קודם כל אנחנו צריכים לדעת כמה ימים סה"כ עברו בין 2 התאריכים האלו. לצורך זה נשתמש בנוסחה פשוטה ביותר של הפחתה (התאריך המאוחר יותר פחות התאריך המוקדם יותר).

איך לתרגם טווח זמן שמוצג בימים, לטווח זמן מדוייק (שנים,חודשים,ימים) עם אקסל ?
איך לתרגם טווח זמן שמוצג בימים, לטווח זמן מדוייק (שנים,חודשים,ימים) עם אקסל ?

איך לתרגם טווח זמן שמוצג בימים, לטווח זמן מדוייק (שנים,חודשים,ימים) עם אקסל ?

שלב 2 - לחשב שנים, חודשים וימים

בלי הקדמות מיותרות - החישוב הוא כזה

שנים - נחלק את מספר הימים שעברו בין התאריכים ב-365 (=מספר הימים בשנה) ואת התוצאה נעגל כלפי מטה. כך נמצא את מספר השנים השלמות שחלפו.

=INT(D29/365)

 חודשים - את שארית הימים שנותרו לנו מהחישוב של השנים, נחלק ל-30 ונעגל כלפי מטה.

=INT(MOD(D29,365)/30)

 ימים - נציג את שארית הימים שנותרו אחרי חישוב החודשים.

=MOD(D29,365)-30*F29