דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תוכנה
  3. עזרה | משתנה חודשים עוקבים שחוזר לתחילת שנה

עזרה | משתנה חודשים עוקבים שחוזר לתחילת שנה

מתוזמן נעוץ נעול הועבר תוכנה
20 פוסטים 7 כותבים 572 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מ מנותק
    מ מנותק
    מטעמים
    כתב ב נערך לאחרונה על ידי
    #1

    אני צריך ליצור משתנה במאקרו אקסל שיכיל מספרי חודשים מ01 עד 12 שכל פעם שהוא מגיע ל-12 , הבא בתור יהיה 01.

    כמו המאקרו הבא שמוסיף בתוך לולאה כל פעם עוד אחד למספר ובכל פעם שיש הודעה המספר משתנה:

    For I = 1 To 12
    MsgBox I
    Next I
    
    

    אבל שיחזור תמיד לחודש 1 (וגם שלא יהיה בתוך לולאה).
    אשמח לדעת אם מישהו מכיר אופציה כזו.

    M א 2 תגובות תגובה אחרונה
    0
    • M מנותק
      M מנותק
      mekev
      השיב למטעמים ב נערך לאחרונה על ידי mekev
      #2

      @מטעמים
      אולי משהו בסגנון הזה

      
      Dim monthNumber As Integer
      monthNumber = Month(Now)
      If monthNumber > 12 Then
      monthNumber = 1
      End If
      
      תגובה 1 תגובה אחרונה
      1
      • א מנותק
        א מנותק
        ארי
        השיב למטעמים ב נערך לאחרונה על ידי
        #3

        @מטעמים כתב בעזרה | משתנה חודשים עוקבים שחוזר לתחילת שנה:

        (וגם שלא יהיה בתוך לולאה)

        איך אתה רוצה להוסיף חודשים בלי לולאה?
        אני לא בטוח שאפשר.

        אם אתה רוצה עם לולאה אולי משהו כזה:

        for a = 1 to 100
            for b = 1 to 12
                msgbox b
            text b
        text a
        
        תגובה 1 תגובה אחרונה
        1
        • I מנותק
          I מנותק
          ivrtikshoret
          כתב ב נערך לאחרונה על ידי ivrtikshoret
          #4

          אתה יכול לכתוב ככה:

          Sub x()
          a = 1
          b = 12
          c = a Mod b
          ' אם c = 0 תדפיס 12 אם לא תדפיס c
          If c = 0 Then
              MsgBox b
          Else
              MsgBox c
          End If
          End Sub
          

          כאשר i יהיה תמיד פחות מ 12 אם תכתוב:

          Sub x()
          a = 13
          b = 12
          c = a Mod b
          ' אם c = 0 תדפיס 12 אם לא תדפיס c
          If c = 0 Then
              MsgBox b
          Else
              MsgBox c
          End If
          End Sub
          

          תקבל 1
          וככה אתה יכול תמיד להעלות את a ב 1

          תגובה 1 תגובה אחרונה
          1
          • א מנותק
            א מנותק
            ארי
            כתב ב נערך לאחרונה על ידי
            #5

            אני רק ממשיך את @ivrtikshoret :

            i = 1
            Do
                If i < 13 Then
                    MsgBox i
                Else
                    MsgBox i Mod 12
                End If
                i = i + 1
            Loop
            
            תגובה 1 תגובה אחרונה
            1
            • מ מנותק
              מ מנותק
              מטעמים
              כתב ב נערך לאחרונה על ידי מטעמים
              #6

              תודה לכולם על ההשקעה בעזרה, אבל עדיין לא הגעתי לתוצאה.

              אנסה לשאול את השאלה מכיוון אחר (עם דוגמה אחרת).
              נניח שהשעה היא עכשיו 11, ואני רוצה שיהיה כתוב בתא מקביל את השעה בפריז, 4 שעות קדימה. (שעה 3)
              איך אני מכניס את זה לקוד?

              ועכשיו לחודשים:
              נניח שאנחנו בחודש 11 ואני רוצה שיהיה כתוב בתא מקביל את החודש שיגמר הסמסטר, 4 חודשים קדימה. (חודש 03)

              האם יש משתנה שמכיר מסגרת כזו?

              תגובה 1 תגובה אחרונה
              0
              • dovidD מנותק
                dovidD מנותק
                dovid ניהול
                כתב ב נערך לאחרונה על ידי
                #7

                אם הבנתי את כוונתך (אתה קצת שאלת בפורמט בעיית הXY...)
                אתה רוצה להוסיף מספר למונה עם גבול מסויים, שבעת מעבר הגבול הספירה חוזרת להתחלה.
                הדרך הפשוטה והאנושית לזה היא ככה,
                מספר חדש: מספר נוכחי + הגדלה
                אם מספר חדש > תקרה, מספר חדש: מספר חדש - תקרה.

                בתכנות משתמשים עם טריק מתמטי לזה שנקרא מודולו.
                מודולו מחזיר שארית, כלומר השארית של 13 לחלק ל12 היא 1, וזה הספירה מחדש.
                כותבים ככה:

                current = 9 'למשל
                newNumber = (current + 4) Mod 12
                

                מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                בכל נושא אפשר ליצור קשר dovid@tchumim.com

                תגובה 1 תגובה אחרונה
                4
                • א מנותק
                  א מנותק
                  ארי
                  כתב ב נערך לאחרונה על ידי ארי
                  #8

                  או נוסחה כזו באקסל:

                  =MOD(A1+4,12)
                  
                  תגובה 1 תגובה אחרונה
                  1
                  • מלאמ מנותק
                    מלאמ מנותק
                    מלא
                    כתב ב נערך לאחרונה על ידי
                    #9

                    @מטעמים
                    אני חושב שאם תכתוב מה התוצאה שאתה רוצה לקבל מהלולאה/משתנה.
                    יהיה יותר קל לכוון אותך למקום נכון.

                    א תגובה 1 תגובה אחרונה
                    2
                    • א מנותק
                      א מנותק
                      ארי
                      השיב למלא ב נערך לאחרונה על ידי
                      #10

                      @מלא אני חושב שבסוף @מטעמים הסביר מצוין מה הוא רוצה.

                      @מטעמים כתב בעזרה | משתנה חודשים עוקבים שחוזר לתחילת שנה:

                      נניח שאנחנו בחודש 11 ואני רוצה שיהיה כתוב בתא מקביל את החודש שיגמר הסמסטר, 4 חודשים קדימה. (חודש 03)

                      מלאמ תגובה 1 תגובה אחרונה
                      2
                      • clickoneC מנותק
                        clickoneC מנותק
                        clickone
                        כתב ב נערך לאחרונה על ידי clickone
                        #11

                        אם אתה יודע את החודש והשנה (או התאריך) שמשם אתה רוצה לספור, אתה יכול להשתמש בפונקצייה DateAdd ולהוסיף את מספר החודשים שאתה רוצה

                        x=DateAdd("m", 1, Date())
                        

                        ראה עוד
                        כאן
                        וכאן

                        כמובן שאתה יכול בשיטה הזו להוסיף גם ימים, שנים, וכן דקות שעות וכו'

                        אין טסט כמו פרודקשן.

                        המייל שלי urivpn@gmail.com

                        תגובה 1 תגובה אחרונה
                        4
                        • מלאמ מנותק
                          מלאמ מנותק
                          מלא
                          השיב לארי ב נערך לאחרונה על ידי
                          #12

                          @ארי

                          @מטעמים כתב בעזרה | משתנה חודשים עוקבים שחוזר לתחילת שנה:

                          אנסה לשאול את השאלה מכיוון אחר (עם דוגמה אחרת).
                          נניח שהשעה היא עכשיו 11, ואני רוצה שיהיה כתוב בתא מקביל את השעה בפריז, 4 שעות קדימה. (שעה 3)
                          איך אני מכניס את זה לקוד?

                          ועכשיו לחודשים:
                          נניח שאנחנו בחודש 11 ואני רוצה שיהיה כתוב בתא מקביל את החודש שיגמר הסמסטר, 4 חודשים קדימה. (חודש 03)

                          אני מניח מניסוח השאלה שהוא עדיין מחפש רמז לתוצאה הסופית.

                          וזה קורה הרבה פעמים בפורום, שאנשים נוטים להסביר את מה שהם שואלים, ברמז או בדבר הדומה לדומה.
                          ואחרי 5-10 תשובות, כששואלים את השאלה בצורה ישירה. ב2 תגובות מתקבלת התשובה.

                          תגובה 1 תגובה אחרונה
                          3
                          • מ מנותק
                            מ מנותק
                            מטעמים
                            כתב ב נערך לאחרונה על ידי מטעמים
                            #13

                            @dovid כתב בעזרה | משתנה חודשים עוקבים שחוזר לתחילת שנה:

                            אם הבנתי את כוונתך (אתה קצת שאלת בפורמט בעיית הXY...)

                            ממש לא שאלתי בפורמט המדובר... פשוט ראיתי שלא הבינו את כוונתי אז עברתי ל-Y.

                            כיוון שהחברים כאן דנים בשאלתי אם היא X או Y.
                            אני אפרוס בפניכם בדיוק מה אני צריך, אבל זה קצת ארוך, אם יש לכם סבלנות. (אתם שאלתם ..😉)

                            אני באמצע לכתוב את הקוד הבא:

                            יש לי תיקיה במחשב, בתוך התיקיה יש 12 תיקיות משנה שכולם מסתיימים ב-2 תווים המכילים שמות של חודשים " 01", "02" וכן הלאה.

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

                             Sub PK12()
                            
                             Dim B_tikia As FileDialog
                             Dim M_tikia As String
                             Dim ntiv_M As String
                             Dim ntiv_H As String
                             Dim mon_A As String
                             
                             
                            'בחר תיקיה ראשונה מתוך 12 בחלון שיפתח
                                Set B_tikia = Application.FileDialog(msoFileDialogFolderPicker)
                                B_tikia.Title = "בחר תיקיה המכילה את קבצי חודש 09 "
                            
                            'פתח חלון שאילתא למשתמש
                                 B_tikia.Show
                            'הכנס למשתנה את נתיב התיקיה שנבחרה
                                    M_tikia = B_tikia.SelectedItems(1)
                            
                            'בדיקה לקובץ אפשרי בתוך התיקיה
                             ntiv_M = M_tikia & "\" & "*.csv"
                             
                            'נתיב חדש המספק את השם של הקובץ
                             ntiv_H = M_tikia & "\" & Dir(ntiv_M)
                             
                            'פתיחת הקובץ
                            If Dir(ntiv_M) <> "" Then Workbooks.Open ntiv_H
                             
                            'משתנה 2 תוים אחרונים בסוף נתיב התיקיה
                            mon_A = Right(M_tikia, 2)
                            
                             End Sub
                            

                            המשתנה "mon_A" מכיל את החודש הראשון ואני מחפש משתנה שיקצר לי את הקוד.

                            תגובה 1 תגובה אחרונה
                            1
                            • dovidD מנותק
                              dovidD מנותק
                              dovid ניהול
                              כתב ב נערך לאחרונה על ידי
                              #14

                              @מטעמים זה המקרה הכי טוב של בעיית הXY.
                              בשאלה הראשונה במבט ראשון אתה רק שואל איך להוסיף 0.
                              אבל אתה מוסיף שמה עוד שתי נקודות קטנות: א. שיחזור ל12 ב. "גם לא בתוך לולאה"
                              יאהוו, אין סיכוי להבין את שתי הנקודות!
                              בטח שמבינים צורך להוסיף על 12 ולהגיע חזרה ל1 אבל עבור מה, מה רע בלולאה? למה להתחיל מהאמצע ולא מ1?
                              מפה מתחיל אי הבנה ארוך.

                              כעת אחרי שהסברת נשארו קצת שאלות:
                              למה שיבחר תיקיה של 09 ולא את תיקיית האב ואז תעשה לולאה מ01 עד 12 בלי שום בעיה?
                              ועכ"פ אם זה הצורך, אז אתה צריך לקצוץ מהנתיב את התיקיה הנוכחית (למשל אם זה 09 להגיע לתיקיית האב שמחזיקה את 1-12 להבנתי), ואז לעשות לולאה.

                              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                              בכל נושא אפשר ליצור קשר dovid@tchumim.com

                              מ תגובה 1 תגובה אחרונה
                              3
                              • מ מנותק
                                מ מנותק
                                מטעמים
                                השיב לdovid ב נערך לאחרונה על ידי
                                #15

                                @dovid כתב בעזרה | משתנה חודשים עוקבים שחוזר לתחילת שנה:

                                מפה מתחיל אי הבנה ארוך.

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

                                למה שיבחר תיקיה של 09

                                כי זו תמיד התיקיה הראשונה בסדרה (זו תיקיה שמכילה קבצים לפי שנה"לים , הם תמיד מתחילים ב-09 ומסתיימים ב08 של שנה שלאחר מכן)

                                ועכ"פ אם זה הצורך, אז אתה צריך לקצוץ מהנתיב את התיקיה הנוכחית (למשל אם זה 09 להגיע לתיקיית האב שמחזיקה את 1-12 להבנתי), ואז לעשות לולאה.

                                ניסיתי את הדרך הזו. לא הצלחתי. בכל אופן, אני מנסה עכשיו את מה שהציע @clickone , תודה בכל אופן.

                                תגובה 1 תגובה אחרונה
                                2
                                • dovidD מנותק
                                  dovidD מנותק
                                  dovid ניהול
                                  כתב ב נערך לאחרונה על ידי
                                  #16

                                  @מטעמים לא עלה על דעתי שזה מכוון או שהייתה לך בכלל ברירה, הייתי הרבה פעמים במקום שלך.

                                  לא ענית עדיין למה לא לבחור את תיקיית האב, וגם מה אכפת אם זה מתחיל ב09 ונגמר ב09 או כל דבר אחר אם בכל מקרה יש שנים עשר תיקיות.
                                  והפתרון של @clickone זה בלי לדעת מה אתה צריך, אם מדובר בתיקיות וזה תמיד 12 הוא לא היה עונה ככה..

                                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

                                  תגובה 1 תגובה אחרונה
                                  2
                                  • א מנותק
                                    א מנותק
                                    ארי
                                    כתב ב נערך לאחרונה על ידי
                                    #17

                                    @מטעמים אני מצטרף למה ש@dovid אומר.
                                    בלי ההתעקשות לבחור תיקייה אחת ולא את התיקייה הראשית, אתה צריך קוד פשוט של לולאה (כן, לולאה!) מ1 ועד 12 שפותחת את הקבצים אחד אחרי השני.

                                    מ תגובה 1 תגובה אחרונה
                                    4
                                    • מ מנותק
                                      מ מנותק
                                      מטעמים
                                      השיב לארי ב נערך לאחרונה על ידי
                                      #18

                                      @ארי כתב בעזרה | משתנה חודשים עוקבים שחוזר לתחילת שנה:

                                      לבחור תיקייה אחת ולא את התיקייה הראשית

                                      אוקי. ננסה. איך אני מתגבר על הבעיה של ה-0 ? בקוד שהבאתי לעיל הוא מוריד לי את זה באופן אוטומטי:

                                      For I = 1 To 12
                                      MsgBox I
                                      Next I
                                      
                                      תגובה 1 תגובה אחרונה
                                      1
                                      • dovidD מנותק
                                        dovidD מנותק
                                        dovid ניהול
                                        כתב ב נערך לאחרונה על ידי
                                        #19
                                         Format(i, "00")
                                        

                                        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                                        בכל נושא אפשר ליצור קשר dovid@tchumim.com

                                        מ תגובה 1 תגובה אחרונה
                                        3
                                        • מ מנותק
                                          מ מנותק
                                          מטעמים
                                          השיב לdovid ב נערך לאחרונה על ידי
                                          #20

                                          @dovid
                                          איזה יופי!
                                          תודה רבה!!

                                          תגובה 1 תגובה אחרונה
                                          1

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

                                          • אין לך חשבון עדיין? הרשמה

                                          • התחברו או הירשמו כדי לחפש.
                                          • פוסט ראשון
                                            פוסט אחרון
                                          0
                                          • דף הבית
                                          • קטגוריות
                                          • פוסטים אחרונים
                                          • משתמשים
                                          • חיפוש
                                          • חוקי הפורום