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

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

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

מאקרו לזיהוי מחזוריות

מתוזמן נעוץ נעול הועבר תכנות
24 פוסטים 4 כותבים 473 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • O מנותק
    O מנותק
    one1010
    כתב ב נערך לאחרונה על ידי
    #1

    בהמשך לפוסט הזה: https://tchumim.com/post/151014

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

    1. חישוב המחזוריות יהיה בכל התאריכים המסומנים בצהוב.
    2. מחזוריות כמשמעה כל סדרת תאריכים בלפחות 3 תאריכים. כלומר סדרות של 3. 3 תאריכים שווים, 3 תאריכים מדלגים, 3 תאריכים מסרגים [כל חצי שנה פעמיים ואז שוב חצי שנה ואז שוב פעמיים] וכדו'
    3. לאחר הזיהוי התאריכים המדוברים יהפכו לאדום.

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

    @OdedDvir זאת גם התחלה של תשובה לשאלה שלך... אשמח למענה!

    dovidD תגובה 1 תגובה אחרונה
    0
    • dovidD מחובר
      dovidD מחובר
      dovid ניהול
      השיב לone1010 ב נערך לאחרונה על ידי dovid
      #2

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

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

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

      O תגובה 1 תגובה אחרונה
      0
      • O מנותק
        O מנותק
        one1010
        השיב לdovid ב נערך לאחרונה על ידי one1010
        #3

        @dovid כתב במאקרו לזיהוי מחזוריות:

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

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

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

          @one1010
          אני מבין שאתה רוצה לתפוס א) תאריכים זהים או ב) שונים אך בהפרש זהה, או ג) עם הפרש מדורג (למשל פער של 50,60,70 ימים).
          אבל לא הבנתי את זה:

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

          התאים בין צהוב לצהוב הם בדיוק הפער בין התאריכים בימים, כלומר יש תא שורה לכל יום?

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

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

          O תגובה 1 תגובה אחרונה
          0
          • O מנותק
            O מנותק
            one1010
            השיב לdovid ב נערך לאחרונה על ידי one1010
            #5

            @dovid כתב במאקרו לזיהוי מחזוריות:

            @one1010
            אני מבין שאתה רוצה לתפוס א) תאריכים זהים או ב) שונים אך בהפרש זהה, או ג) עם הפרש מדורג (למשל פער של 50,60,70 ימים).

            ב. יכול גם להתפרש בהפרש זהה של ימים כלומר לדוגמא 25 יום בין פעם לפעם ויכול גם להתפרש הפרש זהה של תאריך כלומר 15 לחודש 16 לחודש ו17 לחודש
            ג. נכון,

            אבל לא הבנתי את זה:

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

            התאים בין צהוב לצהוב הם בדיוק הפער בין התאריכים בימים, כלומר יש תא שורה לכל יום?

            אני לא בטוח שהיה כאן אמור להיות אמירה עמוקה שלי. פשוט שאלת לפי מה זה יחושב אז עניתי לפי ההפרש בין צהוב לצהוב.

            אם כבר אתה שואל [...] האם זה מחוייב המציאות לתת דוגמא לכל דפוס או שVBA יכול להבין יותר מזה וליצור כמו אלגוריתם שימציא לבד דפוסים שחוזרים על עצמם?

            dovidD תגובה 1 תגובה אחרונה
            0
            • dovidD מחובר
              dovidD מחובר
              dovid ניהול
              השיב לone1010 ב נערך לאחרונה על ידי dovid
              #6

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

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

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

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

                @dovid כתב במאקרו לזיהוי מחזוריות:

                @one1010 לא אכפת לי אם ניסוחיך עמוקים,

                🤡

                אני עד עכשיו לא קיבלתי מענה על השאלה הבסיסית האם התאריכים שנמצאו צריכים להיות שורות עוקבות או יכול להיות ביניהם שורות מפרידות וא"כ האם השורות האלו יכולות להיות גם עם צהובים.

                ברגע שאני מחפש תאריכים מחודש לחודש חייב להיות ביניהם ימים 'ללא צהובים' כי אם כן יהיה לי רצף ולא מחזוריות.

                ולגבי שאלתך האם צריך שלא יהיה ביניהם צהובים, בשלב ראשון כדי לראות שזה עובד אולי ננסה בלי צהובים בכלל באמצע.
                בשלב מתקדם יותר הייתי כן רוצה שיוכלו להיות כמה דפוסים חופפים כגון: 01.01 01.02 01.03 וגם 27.01 28.02 29.03 וכדו' ושיזוהו כדפוסים נפרדים.

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

                  @one1010 הערה מהיציע: תשקול להעלות לכאן קובץ עם דוגמית שעליה ניתן יהיה לדון, נראה כאילו אנרגיה חשובה של אנשים שרוצים לעזור מתבזבזת על הנסיון להבין 1. על אלו נתונים מדובר 2. מה אתה רוצה לעשות בהם

                  מנע בזבוז זמן, זכה את הרבים!

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

                    @מעלה-ומוריד בוודאי

                    סימנתי כמה וכמה דפוסים שכל אחד מהם בצבע אחר
                    כמובן שיש עוד אפשרויות רבות
                    אבל זאת דוגמא
                    Book22.xlsm

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

                      @מעלה-ומוריד כתב במאקרו לזיהוי מחזוריות:

                      1. על אלו נתונים מדובר 2. מה אתה רוצה לעשות בהם
                      1. לדוגמא כל יום שיורד גשם מסמנים. ואז רוצים לראות האם ניתן לראות דפוס של גשמים.
                      2. כשיזוהה דפוס ישתנה הצבע שלו וייתן הודעה שזוהה דפוס. או כל רעיון דומה
                      O תגובה 1 תגובה אחרונה
                      1
                      • O מנותק
                        O מנותק
                        one1010
                        השיב לone1010 ב נערך לאחרונה על ידי one1010
                        #11

                        אני כותב את הקוד הבא והוא כותב לי שלא נמצא דפוס.
                        במה הטעות?

                        Sub FindYellowPattern()
                        Dim dataRange As Range
                        Dim yellowCells As Range
                        Dim cell As Range
                        Dim currentCell As Range
                        Dim i As Integer
                        Dim j As Integer
                        Dim k As Integer
                        Dim patternFound As Boolean
                        Dim minRepetition As Integer
                        Dim maxGap As Integer
                        Dim numRepetitions As Integer
                        Dim repetitionCount As Integer
                        Dim lastPatternRow As Integer
                        
                        
                        
                        ' Set data range
                        Set dataRange = Range("A1:AD12")
                        
                        ' Set pattern parameters
                        minRepetition = 1 ' Minimum number of repetitions
                        maxGap = 100 ' Maximum gap between repetitions
                        numRepetitions = 3 ' Number of repetitions required for a pattern
                        
                        ' Loop through each yellow cell
                        For Each yellowCells In dataRange.Areas
                            ' Loop through each cell in the area
                            For Each cell In yellowCells
                                ' Check if cell is yellow
                                If cell.Interior.Color = vbYellow Then
                                    ' Check for pattern
                                    For i = 1 To maxGap
                                        ' Check for repetition
                                        repetitionCount = 0
                                        Set currentCell = cell
                                        For j = 1 To numRepetitions
                                            Set currentCell = currentCell.Offset(0, i)
                                            ' Check if cell is yellow
                                            If currentCell.Interior.Color = vbYellow Then
                                                repetitionCount = repetitionCount + 1
                                                ' Check if current cell is end of pattern
                                                If j = numRepetitions And currentCell.Offset(0, i).Interior.Color <> vbYellow Then
                                                    patternFound = True
                                                End If
                                            Else
                                                Exit For
                                            End If
                                        Next j
                                        ' If pattern found, exit loops
                                        If patternFound Then
                                            lastPatternRow = currentCell.Row
                                            Exit For
                                        End If
                                    Next i
                                    If patternFound Then Exit For
                                End If
                            Next cell
                            If patternFound Then Exit For
                        Next yellowCells
                        
                        ' Print last row with pattern
                        MsgBox "Last row with pattern: " & lastPatternRow
                        
                        End Sub
                        
                        
                        dovidD תגובה 1 תגובה אחרונה
                        0
                        • dovidD מחובר
                          dovidD מחובר
                          dovid ניהול
                          השיב לone1010 ב נערך לאחרונה על ידי
                          #12

                          @one1010
                          ראשית כל הקוד שאתה כותב תעטוף בשני שורות עם שלושה טילדות (~~~), ככהאבל בלי הגרשים:

                          /~~~
                          code
                          /~~~

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

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

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

                          O תגובה 1 תגובה אחרונה
                          1
                          • O מנותק
                            O מנותק
                            one1010
                            השיב לdovid ב נערך לאחרונה על ידי
                            #13

                            @dovid כתב במאקרו לזיהוי מחזוריות:

                            @one1010
                            ראשית כל הקוד שאתה כותב תעטוף בשני שורות עם שלושה טילדות (~~~), ככהאבל בלי הגרשים:

                            /~~~
                            code
                            /~~~

                            אתה מתכוון לתקן בקוד או כשאני מדביק כאן?

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

                            כשאתה אומר הנתונים היו מסודרים בשורות אתה מתכוון כמו בקובץ הבא?חוברת1.xlsm

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

                              @one1010

                              1. כן, בשביל שיהיה מעוצב נח לקריאה.
                              2. לא, אני מתכוון שכל שורה זה תאריך, ובמקום להסתמך על סימון עיצובי שיהיה מידע בעמודה שליד (B למשל) וכן בתוצאה שמסומן מחזוריות שזה ייכתב לעמודה שכנה (C).
                                אישית הייתי מעדיף לעבוד עם שפה מודרנית יותר מVBA לכזה אתגר, אבל אפשר לשרוד בנקודה הזו.

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

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

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

                                @dovid כתב במאקרו לזיהוי מחזוריות:

                                @one1010

                                1. כן, בשביל שיהיה מעוצב נח לקריאה.

                                אוקי

                                1. לא, אני מתכוון שכל שורה זה תאריך, ובמקום להסתמך על סימון עיצובי שיהיה מידע בעמודה שליד (B למשל) וכן בתוצאה שמסומן מחזוריות שזה ייכתב לעמודה שכנה (C).

                                הבעיה היא שאז יהיה מאד מסובך לעבוד עם זה כי זה יהיה הרבה שורות.

                                אישית הייתי מעדיף לעבוד עם שפה מודרנית יותר מVBA לכזה אתגר, אבל אפשר לשרוד בנקודה הזו.

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

                                dovidD Y.Excel.AccessY 2 תגובות תגובה אחרונה
                                0
                                • dovidD מחובר
                                  dovidD מחובר
                                  dovid ניהול
                                  השיב לone1010 ב נערך לאחרונה על ידי
                                  #16

                                  @one1010 מאה שנה זה רק 35 אלף שורות,
                                  אקסל עובד עם הרבה יותר שורות בלי למצמץ.

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

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

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

                                  O תגובה 1 תגובה אחרונה
                                  0
                                  • O מנותק
                                    O מנותק
                                    one1010
                                    השיב לdovid ב נערך לאחרונה על ידי
                                    #17

                                    @dovid כתב במאקרו לזיהוי מחזוריות:

                                    @one1010 מאה שנה זה רק 35 אלף שורות,
                                    אקסל עובד עם הרבה יותר שורות בלי למצמץ.

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

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

                                    איזה שפות נוספות ניתנות לשימוש באקסל?

                                    dovidD תגובה 1 תגובה אחרונה
                                    0
                                    • Y.Excel.AccessY מנותק
                                      Y.Excel.AccessY מנותק
                                      Y.Excel.Access
                                      השיב לone1010 ב נערך לאחרונה על ידי Y.Excel.Access
                                      #18

                                      @one1010 כתב במאקרו לזיהוי מחזוריות:

                                      אישית הייתי מעדיף לעבוד עם שפה מודרנית יותר מVBA לכזה אתגר, אבל אפשר לשרוד בנקודה הזו.

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

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

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

                                      אני מכיר מתכנת שבנה יפה מאוד ב C# במשך זמן ממושך של כמה חודשים / שנה, וכלל אפילו נימוקים הלכתיים בטקסט בתוכנה, ונראות וכו' וכו', אבל נתקע כנ"ל.

                                      Y.Excel.Access @ gmail.com

                                      O dovidD 2 תגובות תגובה אחרונה
                                      1
                                      • O מנותק
                                        O מנותק
                                        one1010
                                        השיב לY.Excel.Access ב נערך לאחרונה על ידי
                                        #19

                                        @Y-Excel-Access כתב במאקרו לזיהוי מחזוריות:

                                        דווקא יצרתי באקסס

                                        אוכל לקבל?

                                        Y.Excel.AccessY תגובה 1 תגובה אחרונה
                                        0
                                        • dovidD מחובר
                                          dovidD מחובר
                                          dovid ניהול
                                          השיב לone1010 ב נערך לאחרונה על ידי
                                          #20

                                          @one1010 כתב במאקרו לזיהוי מחזוריות:

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

                                          לא קשה לדפדף. זה גם נשאר תמיד פתוח איפה שהיית.

                                          אם אתה הולך ללמוד איזה שפת תכנות אומר לך אם זה מתאים לאקסל.

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

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

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

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

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

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