חוקי הפורום

חישוב הפרש תאריכים באקסל



  • לגבי הפרש תאריכים באקסל כלומר חישוב מס' ימים/חודשים/שנים בין 2 תאריכים, יש את פונקציית DATEDIF אבל הפונקציה מוסתרת ומייקרוסופט לא ממליצה להשתמש בה.

    שאלתי היא:

    1. האם אפשר להשתמש ב-DATEDIF, ומה הבעיות העלולות להיווצר?
    2. איזה פונקציה חילופית יש?

  • תכנות

    @UA אמר בחישוב הפרש תאריכים באקסל:

    לגבי הפרש תאריכים באקסל כלומר חישוב מס' ימים/חודשים/שנים בין 2 תאריכים, יש את פונקציית DATEDIF אבל הפונקציה מוסתרת ומייקרוסופט לא ממליצה להשתמש בה.

    שאלתי היא:

    האם אפשר להשתמש ב-DATEDIF, ומה הבעיות העלולות להיווצר?

    ליתר דיוק מיקרוסופט לא ממליצה להשתמש בפרמטר md של הפונקציה בלבד. עיין באתר מיקרוסופט. הסיבה לכך היא שלעתים התוצאות לא צפויות.

    איזה פונקציה חילופית יש?

    תשתמש בפונקציה ללא חשש, (היא לא היחידה שמוסתרת באקסל) אבל הימנע משימוש בפרמטר כפול md. אלא חשב את היום בנפרד על ידי d ואת החודש עלידי m.
    פונקציה זהה קיימת גם בVBA בשם הכמעט זהה DateDiff



  • כלומר אפשר להשתמש בפונקציה חוץ מהארגומנט md ולהיות רגועים?
    אני צריך את זה לאקסל שח-י-י-ב להיות מדויק

    עוד דבר, איזה אופציות נוספות יש לחשב מרחק של ימים/חודשים/שנים בעזרת פונקציות ולא VBA?


  • תכנות

    @UA אמר בחישוב הפרש תאריכים באקסל:

    לומר אפשר להשתמש בפונקציה חוץ מהארגומנט md ולהיות רגועים?
    אני צריך את זה לאקסל שח-י-י-ב להיות מדויק

    כן, אם אתה מודע למגבלות של DateDif. למשל בחישוב הפרש של שעות היא מעגלת את התוצאה
    לדוגמא:

    DateDiff("h", #4/13/2017 12:09PM#, #4/13/2017 3:59PM#)
    

    התוצאה היא 3, כי הדקות לא נכללות.
    אם תשתמש בארגומנט n לחישוב של דקות ואחר כך תחלק ב-60 תקבל דיוק של הדקות:

    DateDiff("n", #4/13/2017 12:09PM#, #4/13/2017 3:59PM#)
    

    התוצאה היא 230, וכשתחלק ב-60 תקבל 3.83 שעות.

    עוד דבר, איזה אופציות נוספות יש לחשב מרחק של ימים/חודשים/שנים בעזרת פונקציות ולא VBA?

    תוכל לכתוב נוסחא יותר ארוכה בשימוש בפונקציות המובנות

     Day() Month() Year() 
    

    שכן מופיעות.
    למשל:

    DATEDIFF($A2;$B2;"D") == INT($B2-$A2)
    DATEDIFF($A2;$B2;"M") == 12*(YEAR($B2)-YEAR($A2))+MONTH($B2)-MONTH($A2)-(DAY($B2)<DAY($A2))
    DATEDIFF($A2;$B2;"Y") == YEAR($B2)-YEAR($A2)-IF(MONTH($A2)>MONTH($B2);1;IF(MONTH($A2)=MONTH($B2);DAY($A2)>DAY($B2);0))
    

    אם תשקיע עוד מאמץ, יש גם אפשרות ליישם את הארגומנט md... עיין כאן למקור.


התחבר כדי לפרסם תגובה
 

בא תתחבר לדף היומי!