ההבדלים בין M, DAX ו־VBA – שלוש שפות שאפשר לפגוש בעולם Excel ו־Power BI

עולם ה־Excel וה־Power BI לא מסתכם רק בטבלאות, תרשימים ומדדים. מאחורי הקלעים מסתתרות שלוש שפות שונות – לכל אחת תפקיד משלה, גישה ייחודית ותחום אחריות ברור: M, DAX ו־VBA. במאמר הזה נעשה סדר: מהי כל שפה, איפה משתמשים בה, למה, ואפילו נביא דוגמאות.


🔹 שפת M – Power Query Formula Language

מה זה:
שפת M (קיצור של Mashup) היא השפה שמריצה את Power Query – מנוע שליפה, ניקוי והכנת נתונים שקיים גם ב־Excel וגם ב־Power BI.

איפה משתמשים:

  • חלון Power Query ב־Excel
  • Power BI Desktop (בשלב טעינת הנתונים)
  • Dataflows בענן

למה משתמשים:
כדי לחבר מקורות מידע שונים (Excel, SQL, CSV, API), לנקות נתונים, לשנות טיפוסים ולבנות בסיס מסודר לניתוח.

דוגמה:

  • חיבור ל־API של בנק ישראל כדי למשוך שערי מט"ח
  • הסרת עמודות מיותרות
  • מיזוג שתי טבלאות שונות לטבלה אחת נקייה

🔹 שפת DAX – Data Analysis Expressions

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

איפה משתמשים:

  • Power BI (במודל הנתונים)
  • Power Pivot בתוך Excel

למה משתמשים:
כדי ליצור מדדים, חישובי סיכום וניתוחי זמן (Time Intelligence). זו השפה שנותנת לנו לענות על שאלות עסקיות ישירות מהמודל.

דוגמה:

  • חישוב מכירות מצטברות מתחילת השנה (Year-to-Date)
  • השוואה בין חודש נוכחי לחודש מקביל בשנה קודמת
  • בניית KPI שמציג אחוז עמידה ביעד

🔹 שפת VBA – Visual Basic for Applications

מה זה:
שפת תכנות ותיקה של מיקרוסופט, שמאפשרת לכתוב מאקרו ולאוטומט תהליכים בתוך Excel (וגם Word, Outlook ושאר חבילת Office).

איפה משתמשים:

  • קבצי Excel מקומיים
  • כלים פנים־ארגוניים שדורשים אוטומציה בהתנהגות הגיליון

למה משתמשים:
כדי להפעיל אוטומציה מתקדמת, להוסיף ממשקי משתמש (UserForms), לשלוח מיילים אוטומטיים, לייצר PDF בלחיצת כפתור, ועוד.

דוגמה:

  • כפתור באקסל ששולח דוח יומי במייל למנהל
  • יצירת חלון קלט למשתמש (UserForm) להזנת נתונים
  • הפקת דוחות חודשיים בלחיצה אחת

🧩 איך זה מתחבר ביחד?

אפשר לדמיין את זה כשרשרת:

  1. M – מכין את הנתונים, מנקה ומסדר.
  2. DAX – מחשב ומנתח על בסיס הנתונים.
  3. VBA – מוסיף שליטה, אינטראקציה ואוטומציה למשתמש.

ביחד – שלוש השפות נותנות לאנליסט/מפתח BI שליטה מלאה על כל התהליך: מהנתונים הגולמיים ועד לדוחות אינטראקטיביים ואוטומטיים.


✍️ לסיכום:
אם אתם עובדים באקסל או ב־Power BI – סביר מאוד שכבר פגשתם לפחות אחת מהשפות האלו. כדאי לדעת לא רק איך לעבוד איתן, אלא גם מתי להשתמש בכל אחת:

  • M לניקוי והכנה,
  • DAX לניתוח וחישובים,
  • VBA לאוטומציה והתאמה אישית.

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


M (Power Query)

דוגמה 1 – טעינת CSV, קידום כותרות וסינון שורות

מה עושה: טוען קובץ CSV, מקדם את השורה הראשונה לכותרות, מסנן רק שורות שהסכום מעל 100.

let
    Source = Csv.Document(
        File.Contents("C:\Data\sales.csv"),
        [Delimiter=",", Encoding=65001, QuoteStyle=QuoteStyle.Csv]
    ),
    Promoted = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
    ChangedTypes = Table.TransformColumnTypes(Promoted, {{"Date", type date}, {"Amount", type number}}),
    Filtered = Table.SelectRows(ChangedTypes, each [Amount] > 100)
in
    Filtered

איפה שמים: Power Query → New Source → Blank Query → Advanced Editor.

דוגמה 2 – קריאה ל־API (בנק ישראל), טווח עד היום

מה עושה: מושך שערים היסטוריים רשמיים (OF00) מול ILS בפורמט CSV, הופך לעמודות נקיות.

let
  TodayText = Date.ToText(Date.From(DateTime.LocalNow()), "yyyy-MM-dd"),
  Url = "https://edge.boi.gov.il/FusionEdgeServer/sdmx/v2/data/dataflow/BOI.STATISTICS/EXR/1.0/?"
        & "c%5BDATA_TYPE%5D=OF00&c%5BQUOTE_CURRENCY%5D=ILS"
        & "&startperiod=1900-01-01&endperiod=" & TodayText
        & "&format=csv&Labels=both&bom=include&locale=he",
  CsvBin   = Web.Contents(Url),
  CsvTbl   = Csv.Document(CsvBin, [Delimiter=",", Encoding=65001, QuoteStyle=QuoteStyle.Csv]),
  Promoted = Table.PromoteHeaders(CsvTbl, [PromoteAllScalars=true]),
  Renamed  = Table.RenameColumns(Promoted, {{"TIME_PERIOD","Date"}, {"OBS_VALUE","Rate"}, {"BASE_CURRENCY","BaseCurrency"}}, MissingField.Ignore),
  Typed    = Table.TransformColumnTypes(Renamed, {{"Date", type date}, {"Rate", type number}, {"BaseCurrency", type text}})
in
  Typed

איפה שמים: Power Query → New Source → Blank Query.


DAX (Power BI / Power Pivot)

נניח שיש טבלת fact בשם Sales עם עמודות: Amount, Date, ועמודת מפתח ל־Date table.
את הקוד מוסיפים בחלון Modeling → New Measure.

1) סכום מכירות כולל

Total Sales :=
SUM ( Sales[Amount] )

מה עושה: יוצר מדד בסיסי שמסכם את Amount (מכירות).

2) מכירות מתחילת שנה (YTD)

Total Sales YTD :=
TOTALYTD ( [Total Sales], 'Date'[Date] )

מה עושה: צובר את המכירות מתחילת השנה עד התאריך המסונן.

3) מכירות שנה קודמת (Same Period Last Year)

Total Sales LY :=
CALCULATE ( [Total Sales], SAMEPERIODLASTYEAR ( 'Date'[Date] ) )

מה עושה: מחשב את אותו טווח תאריכים אך עבור השנה הקודמת.

4) אחוז שינוי משנה קודמת (YoY %)

YoY % :=
VAR Prev = [Total Sales LY]
RETURN
IF ( NOT ISBLANK(Prev), DIVIDE ( [Total Sales] - Prev, Prev ) )

מה עושה: מחשב שינוי יחסי לעומת השנה הקודמת, עם הגנה מחלוקה באפס.


VBA (Excel)

דוגמה – ייצוא הגיליון הפעיל ל-PDF בשם אוטומטי

מה עושה: שומר את הגיליון הפעיל כ-PDF בתיקייה של הקובץ, עם חותמת תאריך-שעה.

Sub ExportActiveSheetToPDF()
    Dim p As String, fname As String
    If Len(ThisWorkbook.Path) = 0 Then
        MsgBox "שמור את הקובץ לפני הייצוא.", vbExclamation: Exit Sub
    End If
    p = ThisWorkbook.Path & Application.PathSeparator
    fname = ActiveSheet.Name & "_" & Format(Now, "yyyy-mm-dd_hh.nn") & ".pdf"
    On Error GoTo ErrH
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=p & fname, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=False
    MsgBox "נשמר: " & vbCrLf & p & fname, vbInformation
    Exit Sub
ErrH:
    MsgBox "שגיאה בשמירה ל-PDF: " & Err.Description, vbCritical
End Sub

איפה שמים: Excel → ALT+F11 → Insert → Module → הדבק → להריץ עם F5 או לקשר לכפתור.


מתי להשתמש במה?

  • M – כשצריך להביא, לנקות ולארגן נתונים לפני טעינה.
  • DAX – כשצריך לחשב מדדים וניתוחים על המודל (YTD, YoY, KPI).
  • VBA – כשצריך אוטומציה בממשק אקסל: כפתורים, טפסים, יצוא, שליחה, ועוד.
שפה איפה משתמשים בה תפקיד עיקרי דוגמאות לשימוש דמיון/הבדלים
M (Power Query Formula Language) Excel (Power Query), Power BI (Power Query), Dataflows בענן שלב ETL – שליפה, ניקוי והכנת נתונים לפני הטעינה – חיבור ל־API- סינון שורות- שינוי טיפוסי עמודות- איחוד טבלאות ממקורות שונים דקלרטיבית: מתארת "מה רוצים" שיקרה על הנתונים.
DAX (Data Analysis Expressions) Power BI (מודל נתונים), Power Pivot באקסל חישובים במודל – יצירת מדדים, חישובי סיכום ויחסים בין טבלאות – חישוב Year-to-Date- ניתוח מכירות מול שנה קודמת- KPI דינמיים שפת חישובית: מתמקדת באגרגציה וחישובים על מודל הנתונים.
VBA (Visual Basic for Applications) Excel, Word, Outlook וכל חבילת Office (מקומית) אוטומציה – בניית מאקרו להפעלה אוטומטית של פעולות – יצירת כפתורים וממשקי משתמש (UserForms)- שליחת מיילים מאאוטלוק- הפקת דוחות PDF בלחיצה אחת פרוצדורלית: נותנת שליטה מלאה על פעולות באקסל ומעבר לו.

שלומי פוסטלניק הוא מייקרוסופט MVP, מומחה אקסל, אשר מעביר הדרכות פנים ארגוניות, בחברות וארגונים ובונה פתרונות בהתאמה אישית, על בסיס תוכנת אקסל, ו Power BI.
להדרכות או פתרונות אקסל  או Power BI צור קשר למייל shlomi@uniquetech.co.il

או שלח לי הודעה מ >> כאן <<

שנה חדשה, ספר חדש!

לרגל פתיחת שנת 2026, הוצאתי לאור ספר חדש! תוכל לבדוק את תוכן העיניינים>> כאן << לרכישת הספר >> כאן << לזמן מוגבל, כל המזמין את

קרא עוד »

המעבר מ"שיחה עם בינה מלאכותית" ל"עבודה עם בינה מלאכותית" – הכירו את Frontier: כך תפעילו את סוכני ה-AI החדשים של Microsoft 365 –

מיקרוסופט השיקה את תוכנית Frontier – תוכנית גישה מוקדמת המאפשרת למשתמשים להתנסות בחידושי ה-AI האחרונים של Microsoft 365, כולל סוכנים (Agents) ותכונות ניסיוניות, עוד לפני

קרא עוד »
Scroll to Top