המרות תאריכים ו-VBA (אקסל 2013)

pinkys brain1

New member
המרות תאריכים ו-VBA (אקסל 2013)

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

על מנת שהנתונים יסתנכרו עם שאר הלשוניות, ביצעתי החלפה בין "." ל"/" והיה נראה שהפתרון עובד טוב, אך ככל שעבר הזמן שמתי לב שההמרה הזאת היא לא בדיוק 100% אלא חלק מהתאריכים מומרים לtype=1 וחלק ל-type=2.
(ההשערה שלי היא שהמחשב כנראה מזהה חלק מהתאריכים האלה כתאריכים לועזיים, ואז כאשר מגיע ל"תאריך" כמו 15.12.19 (כביכול, יום 12 לחודש 15) הוא לא מזהה כתאריך ולכן משאיר אותו בסוג string.

הבעיה הזאת יצרה לי כאב ראש אחד גדול (בכל שאר הלשוניות התאריכים יוצאים מהמערכת כבר בפורמט עם "/" ולא הייתה שום בעיה, רק הדוח הספציפי הזה תוקע לי הכל
)

מצורף קובץ לדוגמא המכיל טבלה עם תאריכים, וקטע המאקרו שמבצע את ההחלפה בין "." לבין "/"...ניתן לראות שאת התאריך 12/12/2019 הוא כן מזהה כtype=1 לאחר ההמרה בעוד את התאריכים האחרים משאיר type=2...
קוד:
i = 2
While Cells(i, 1) <> ""
    Cells(i, 3) = Replace(Cells(i, 2), ".", "/")
    i = i + 1
Wend
*הערה: בקובץ המקורי היו 3 עמודות ולפני ששלחתי את הגיליון לאתר הוספתי עמודה נוספת כדי לבצע השוואת types..אז בקטע המאקרו צריך לשנות מ
cells(i,3) ל-cells(i,4)

אשמח לדעת אם יש איזשהיא דרך לגרום לקוד / לגיליון לזהות את כלל התאריכים כתאריכים בפורמט עברי (ולא לועזי), כלומר שאם כתוב "15.12.2019" זה ייחשב כ"יום 15 לחודש 12" ואם כתוב "10.11.2019" זה ייחשב כ"יום 10 לחודש 11" (ולא יום 11 לחודש 10) - ואם אפשר אז ללא תלות בשפת מערכת ההפעלה (כי חלק מהמחשבים בארגון הם עם אנגלית וחלק בעברית וגם זה יוצר בלאגן, אבל מה שבטוח זה שהתאריך שיצא בדוח של המערכת הוא בפורמט עברי)

אגב, ניסיתי לעטוף את פונקציית ה-replace בפונקציית CDate וזה אכן ממיר ל-type1, אבל אז נוצרה בעיה חדשה - חלק מהתאריכים חוזרים באותה צורה כמו תאריך המקור (נניח 11.12.2019 מומר ל-11/12/2019) וחלק מהתאריכים מתהפכים (נניח 15.12.2019 הופך ל-12/15/2019)

תודה!
 

pinkys brain1

New member
הי,

ראשית כל - תודה
חשבתי על text to columns אבל הבעיה היא שלא ידעתי איך להמשיך מהשלב הזה ועד ההצגה הסופית של התאים המחולקים כתאריך..?
 

pinkys brain1

New member
אוקי, ביצעתי את החלוקה ולאחר מכן השתמשתי בפונקציה DateSerial

אז נראה בינתיים שזה פתר את הבעיה..
&nbsp
תודה!
 
למעלה