מאקרו לזיהוי מחזוריות
-
@dovid כתב במאקרו לזיהוי מחזוריות:
א. אני לא הבנתי את 1+2. אשמח אם תסביר יותר בהרחבה ובפשטות מה זה מחזוריות, ומה דרך המחשבה שלך לגלות אותה, והאם זה דוקא בתאים צהובים רציפים או גם מרוחקים אם ביניהם אין צהובים.
אולי אני טועה במילה מחזוריות אבל זאת המילה שעלתה לי כשרציתי לתת לה כותרת. הרעיון הוא לראות דפוס מסויים שחוזר על עצמו. החזרה תהיה ב3 פעמים. ואין גבול לדפוס ספציפי כל עוד הוא חוזר על עצמו 3 פעמים ושהרווחים ביניהם שווים. [או משתנים בצורה שווה- כגון עליה של פער של יום בכל חודש וכדו']
על פניו זה יחושב במרווח הימים בין כל צהוב לצהוב במקרה שהוא משתנה ועל תאריך מדוייק שחוזר על עצמו חודש אחר חודש. -
@one1010
אני מבין שאתה רוצה לתפוס א) תאריכים זהים או ב) שונים אך בהפרש זהה, או ג) עם הפרש מדורג (למשל פער של 50,60,70 ימים).
אבל לא הבנתי את זה:על פניו זה יחושב במרווח הימים בין כל צהוב לצהוב במקרה שהוא משתנה ועל תאריך מדוייק שחוזר על עצמו חודש אחר חודש.
התאים בין צהוב לצהוב הם בדיוק הפער בין התאריכים בימים, כלומר יש תא שורה לכל יום?
-
@dovid כתב במאקרו לזיהוי מחזוריות:
@one1010
אני מבין שאתה רוצה לתפוס א) תאריכים זהים או ב) שונים אך בהפרש זהה, או ג) עם הפרש מדורג (למשל פער של 50,60,70 ימים).ב. יכול גם להתפרש בהפרש זהה של ימים כלומר לדוגמא 25 יום בין פעם לפעם ויכול גם להתפרש הפרש זהה של תאריך כלומר 15 לחודש 16 לחודש ו17 לחודש
ג. נכון,אבל לא הבנתי את זה:
על פניו זה יחושב במרווח הימים בין כל צהוב לצהוב במקרה שהוא משתנה ועל תאריך מדוייק שחוזר על עצמו חודש אחר חודש.
התאים בין צהוב לצהוב הם בדיוק הפער בין התאריכים בימים, כלומר יש תא שורה לכל יום?
אני לא בטוח שהיה כאן אמור להיות אמירה עמוקה שלי. פשוט שאלת לפי מה זה יחושב אז עניתי לפי ההפרש בין צהוב לצהוב.
אם כבר אתה שואל [...] האם זה מחוייב המציאות לתת דוגמא לכל דפוס או שVBA יכול להבין יותר מזה וליצור כמו אלגוריתם שימציא לבד דפוסים שחוזרים על עצמם?
-
@dovid כתב במאקרו לזיהוי מחזוריות:
@one1010 לא אכפת לי אם ניסוחיך עמוקים,
אני עד עכשיו לא קיבלתי מענה על השאלה הבסיסית האם התאריכים שנמצאו צריכים להיות שורות עוקבות או יכול להיות ביניהם שורות מפרידות וא"כ האם השורות האלו יכולות להיות גם עם צהובים.
ברגע שאני מחפש תאריכים מחודש לחודש חייב להיות ביניהם ימים 'ללא צהובים' כי אם כן יהיה לי רצף ולא מחזוריות.
ולגבי שאלתך האם צריך שלא יהיה ביניהם צהובים, בשלב ראשון כדי לראות שזה עובד אולי ננסה בלי צהובים בכלל באמצע.
בשלב מתקדם יותר הייתי כן רוצה שיוכלו להיות כמה דפוסים חופפים כגון: 01.01 01.02 01.03 וגם 27.01 28.02 29.03 וכדו' ושיזוהו כדפוסים נפרדים. -
@one1010 הערה מהיציע: תשקול להעלות לכאן קובץ עם דוגמית שעליה ניתן יהיה לדון, נראה כאילו אנרגיה חשובה של אנשים שרוצים לעזור מתבזבזת על הנסיון להבין 1. על אלו נתונים מדובר 2. מה אתה רוצה לעשות בהם
-
@מעלה-ומוריד בוודאי
סימנתי כמה וכמה דפוסים שכל אחד מהם בצבע אחר
כמובן שיש עוד אפשרויות רבות
אבל זאת דוגמא
Book22.xlsm -
@מעלה-ומוריד כתב במאקרו לזיהוי מחזוריות:
- על אלו נתונים מדובר 2. מה אתה רוצה לעשות בהם
- לדוגמא כל יום שיורד גשם מסמנים. ואז רוצים לראות האם ניתן לראות דפוס של גשמים.
- כשיזוהה דפוס ישתנה הצבע שלו וייתן הודעה שזוהה דפוס. או כל רעיון דומה
-
אני כותב את הקוד הבא והוא כותב לי שלא נמצא דפוס.
במה הטעות?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
-
@one1010
ראשית כל הקוד שאתה כותב תעטוף בשני שורות עם שלושה טילדות (~~~), ככהאבל בלי הגרשים:/~~~
code
/~~~שנית, השאלה שלך יפה וממש מעניינת הבעיה היא שאקסל כ"כ לא נח לטפל בבעיה הזו.
מילא אם הנתונים היו מסודרים בשורות, והסימונים היה ערך בעמודות שכנות, היה סדר נורמלי, אבל כפי שהבאת זה ממש מביא קוד מלוכלך שאין לו סיכוי להתפתח לאלגוריתם רציני. -
@dovid כתב במאקרו לזיהוי מחזוריות:
@one1010
ראשית כל הקוד שאתה כותב תעטוף בשני שורות עם שלושה טילדות (~~~), ככהאבל בלי הגרשים:/~~~
code
/~~~אתה מתכוון לתקן בקוד או כשאני מדביק כאן?
שנית, השאלה שלך יפה וממש מעניינת הבעיה היא שאקסל כ"כ לא נח לטפל בבעיה הזו.
מילא אם הנתונים היו מסודרים בשורות, והסימונים היה ערך בעמודות שכנות, היה סדר נורמלי, אבל כפי שהבאת זה ממש מביא קוד מלוכלך שאין לו סיכוי להתפתח לאלגוריתם רציני.כשאתה אומר הנתונים היו מסודרים בשורות אתה מתכוון כמו בקובץ הבא?חוברת1.xlsm
-
- כן, בשביל שיהיה מעוצב נח לקריאה.
- לא, אני מתכוון שכל שורה זה תאריך, ובמקום להסתמך על סימון עיצובי שיהיה מידע בעמודה שליד (B למשל) וכן בתוצאה שמסומן מחזוריות שזה ייכתב לעמודה שכנה (C).
אישית הייתי מעדיף לעבוד עם שפה מודרנית יותר מVBA לכזה אתגר, אבל אפשר לשרוד בנקודה הזו.
-
@dovid כתב במאקרו לזיהוי מחזוריות:
- כן, בשביל שיהיה מעוצב נח לקריאה.
אוקי
- לא, אני מתכוון שכל שורה זה תאריך, ובמקום להסתמך על סימון עיצובי שיהיה מידע בעמודה שליד (B למשל) וכן בתוצאה שמסומן מחזוריות שזה ייכתב לעמודה שכנה (C).
הבעיה היא שאז יהיה מאד מסובך לעבוד עם זה כי זה יהיה הרבה שורות.
אישית הייתי מעדיף לעבוד עם שפה מודרנית יותר מVBA לכזה אתגר, אבל אפשר לשרוד בנקודה הזו.
סליחה על הבורות, ניתן לעבוד עם שפות תכנות אחרות באקסל? או שאתה מתכוון לעבוד בכלל בצורה אחרת?
-
@dovid כתב במאקרו לזיהוי מחזוריות:
@one1010 מאה שנה זה רק 35 אלף שורות,
אקסל עובד עם הרבה יותר שורות בלי למצמץ.לא חסתי על האקסל אלא על שימוש נורמלי שלא כל פעם שצריך לשנות צריך לדפדף
התכוונתי לא להשתמש באקסל בכלל, אבל ניתן להשתמש בו גם עם שפות אחרות.
איזה שפות נוספות ניתנות לשימוש באקסל?
-
@one1010 כתב במאקרו לזיהוי מחזוריות:
אישית הייתי מעדיף לעבוד עם שפה מודרנית יותר מVBA לכזה אתגר, אבל אפשר לשרוד בנקודה הזו.
סליחה על הבורות, ניתן לעבוד עם שפות תכנות אחרות באקסל? או שאתה מתכוון לעבוד בכלל בצורה אחרת?
לצורך שלך, דווקא יצרתי באקסס, וזה די קל שם - לבסס הכל על שאילתות ועל פוקנציה ממירה מתאריך לועזי לעברי ולהיפך.
האתגר האמיתי הוא ההגדרות ההלכתיות והמחלוקות, לא התכנות, אבל אכמ"ל (חזקה עלי חוקי הפורום שאין לדון בנושאים תורניים, אם אתה רוצה להאריך בזה אפשר בפרטי אא"כ @dovid יאשר...)
אני מכיר מתכנת שבנה יפה מאוד ב C# במשך זמן ממושך של כמה חודשים / שנה, וכלל אפילו נימוקים הלכתיים בטקסט בתוכנה, ונראות וכו' וכו', אבל נתקע כנ"ל.
-
-