צריך משהו באקסל?
נחזור אליך תוך 3 שעות.

איך עושים אנימציה לגרף עמודות באקסל ?

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

במדריך הזה, אני הולך להראות איך לעשות גרף עמודות, שמופיע באנימציה. בדיוק כמו בתמונה כאן :

אנימציה של גרף באקסל

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


צריך משהו באקסל?
נחזור אליך תוך 3 שעות.

השלבים ליצירת אנימציה של גרף אקסל

1. נקודת ההתחלה - טבלת הנתונים המקורית של הגרף

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

לתוכן הטבלה נתתי שם של טווח באקסל, ORIGINAL_DATA.

עובדינוארפברוארמרץאפריל
דוד50706580
יצחק60855090

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

לעמודה הריקה קראתי בשם DATA. העמודה הזו תשמש אותנו על מנת לייצר את הגרף. כלומר, במילים אחרות, הגרף יתבסס עליה.

צריך משהו באקסל?
נחזור אליך תוך 3 שעות.

3. יצירת תיבה שמאפשרת לבחור חודש

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

  • איך מוסיפים אותו? בכרטיסיית המפתחים (Developer), בחר ב-Insert > ActiveX Controls > ComboBox. שים אותו איפה שנוח לך באקסל.

4. יצירת גרף

כדי שיהיה לנו קל לראות על מה עובדים, אני מציע לרשום קצת נתונים בטבלה של DATA, וליצור ממנה גרף בסיסי.

4. כתיבת קוד ה-VBA, המאקרו שיוצר את האנימציה של גרף אקסל

פה מתחיל החלק הכיפי באמת - ה-VBA!

בכדי להתחיל, נפתח את חלון ה-VBA (Alt + F11) ונוסיף את הקוד בתוך ה-ComboBox:

למי שמעתיק את הקוד מכאן.

העברית - בהדבקה הופכת לג’יבריש.

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

Private Sub Box_Change()
    Dim Worker As Integer
    Dim WorkerTarget As Single
    Dim i As Single
    Dim month As String
    Dim MONTHS As Range
    Dim DATA As Range
    Dim columnNumber As Integer
    Dim ORIGINAL_DATA As Range
    
    ' הגדרת טווחי הנתונים והחודשים
    Set ORIGINAL_DATA = Range("ORIGINAL_DATA")
    Set DATA = Range("DATA")
    Set MONTHS = Sheets("גיליון1").Range("E3:H3")

    ' לקיחת החודש שנבחר ב-ComboBox
    month = Box.Value

    ' ניקוי נתוני הגרף הקיימים
    DATA.ClearContents

    ' זיהוי העמודה שבה נמצא החודש שבחרנו
    columnNumber = Application.Match(month, MONTHS, 0)

    ' לולאה לכל עובד והנתונים שלו
    For Worker = 1 To 7
        WorkerTarget = ORIGINAL_DATA.Cells(Worker, columnNumber).Value
        For i = 1 To WorkerTarget
            DATA.Cells(Worker, 1) = i
            ' רענון התצוגה ליצירת תחושת אנימציה
            If (i Mod 3 = 0) Then
                DoEvents
            End If
        Next i
    Next Worker
End Sub
צריך משהו באקסל?
נחזור אליך תוך 3 שעות.

4. איך קוד המאקרו עובד ?

בוא נעבור על הקוד שלב אחרי שלב:

  1. הגדרות טווחי הנתונים:

    • הקוד מגדיר שני טווחים חשובים: טווח הנתונים המקוריים (ORIGINAL_DATA) וטווח הנתונים לגרף (DATA). הראשון כולל את כל הנתונים שלך מהטבלה המקורית, והשני יהיה מקום שאליו הנתונים יועתקו כדי להציגם בגרף.
  2. החודש שנבחר:

    • כשמשתמש בוחר חודש ב-ComboBox, הערך שלו נשמר במשתנה month. לאחר מכן, בהמשך הקוד, אנחנו משתמשים בפונקציה Application.Match כדי למצוא באיזו עמודה נמצאים נתוני החודש הזה בטבלת הנתונים המקורית. חשוב לזכור פונקציית MATCH מחזירה ערך יחסי - ולכן , אנחנו נקבל מספר של עמודה שמתחיל מ-1, ולא את המספר של העמודה מתחילת הגיליון. וזה יתאים לנו. כי בהמשך, אנחנו גם נציין לאן להעתיק, גם כן באמצעות מספרים יחסיים.
  3. לולאה לכל עובד:

    • עכשיו מגיע חלק מעניין: בלולאה (FOR) שעוברת על כל עובד, אנחנו מעתיקים את נתוני המכירות שלו, ומפעילים לולאת For נוספת שתוסיף בהדרגה את הנתונים אל טבלת ה-DATA, כדי ליצור את אפקט האנימציה.
  4. אנימציה עם DoEvents + שליטה במהירות האנימציה :

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

5. ניסוי הקוד - האנימציה עובדת על גרף אקסל בפועל

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

סיכום - אנימציה של גרף עמודות באקסל

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

צריך משהו באקסל?
נחזור אליך תוך 3 שעות.