Excelgoodies logo +46 79 008 30 3

LEARN THIS HANDS ON

Microsoft Excel Reporting

. Live Online FILLING FAST
View all upcoming batches
Modern Excel Formulas vs DAX: How to Pick the Right Engine for Your Next Report

Modern Excel Formulas vs DAX: How to Pick the Right Engine for Your Next Report

You can now build serious analytics either with modern Excel formulas or with DAX in Power BI. This post gives you a practical decision framework: when to stay in Excel, when to move to DAX, and how to structure models so you don’t end up maintaining the same logic twice.

If you’re planning to standardise reporting in your team, it’s worth going deeper into how models are built in Power BI; a focused course on building robust Power BI reports will pay off quickly once you start centralising KPIs.


The Two Engines: What Actually Differs?

Both modern Excel and DAX:

  • Work over tables and columns.
  • Support measures, aggregations, and filters.
  • Can drive refreshable dashboards.

But they’re optimised for different things.

Modern Excel Calculation Stack

Modern Excel means:

  • Dynamic arrays (FILTER, UNIQUE, SORT, LET, LAMBDA).
  • Structured references (Tables).
  • Power Query and Data Model optionally in the background.

Typical use cases:

  • Ad-hoc analysis.
  • Flexible financial models.
  • Dept-level reporting where Excel is already the standard.

DAX in Power BI

DAX is a measure language running on top of the VertiPaq engine:

  • Columnar storage and compression.
  • Relationships and filter propagation.
  • Row context vs filter context.

Typical use cases:

  • Centralised, governed reports.
  • Large models and many users.
  • Heavy time-intelligence and complex KPI logic.

Think of Excel as the best personal calculation engine and DAX as the best shared calculation engine.


A Simple Decision Framework

When you’re deciding between modern Excel formulas vs DAX, run through these questions:

  1. How many people need this logic?

    • Only you / a small team → Excel.
    • Whole organisation → DAX.
  2. How big is the data?

    • Under a few hundred thousand rows per table → Excel is comfortable.
    • Millions of rows, many fact tables → DAX.
  3. How stable is the model?

    • Constantly changing assumptions, layout, and structure → Excel.
    • Stable KPIs that should be reused everywhere → DAX.
  4. Where will the report live?

    • Sent as files, used offline → Excel.
    • Published to Power BI Service, embedded in apps → DAX.
  5. Who maintains it?

    • Analysts comfortable in Excel but not yet in DAX → start with Excel.
    • BI team / central analytics → DAX.

Use Excel when speed and flexibility matter more than governance. Use DAX when consistency, scale, and performance matter more than ad-hoc freedom.


Comparing the Same Logic: Excel vs DAX

Let’s walk through a few patterns you probably build all the time.

1. Basic KPI: Total Sales

Modern Excel (Table: Sales with column [Amount])

=SUM(Sales[Amount])

DAX Measure

Total Sales := SUM ( Sales[Amount] )

No big difference here. The decision isn’t about syntax; it’s about where this logic lives and how it’s reused.

  • In Excel, the formula sits in a cell, possibly re-used via named ranges or LAMBDA.
  • In DAX, the measure becomes a reusable object across all visuals, reports, and even other datasets (via shared datasets).

2. Filtered KPI: Sales for a Specific Region

Modern Excel

=SUMIFS(Sales[Amount], Sales[Region], "North")

DAX

Sales North :=
CALCULATE (
    [Total Sales],
    Sales[Region] = "North"
)

Key difference:

  • Excel: SUMIFS calculates directly over the table.
  • DAX: CALCULATE rewrites filter context and then reuses [Total Sales].

In a large model, the DAX pattern scales better because you centralise base measures and build variations via CALCULATE.

3. Dynamic Subset: Filtered Table for Further Analysis

Modern Excel (dynamic array)

=FILTER(Sales, Sales[Region]="North")

You get a spill range with just the North region. You can then point charts, pivot tables, or other formulas at this range.

DAX

You usually don’t materialise filtered tables in the report; you define filters on visuals or use them in measures:

North Sales Table :=
FILTER ( Sales, Sales[Region] = "North" )

This is typically a calculated table used in the model, not something a user sees directly.

Excel shines when you want to see and manipulate the filtered data directly. DAX shines when filtered tables are intermediate logic inside a model.

4. Time Intelligence: Year-to-Date

Modern Excel (assuming a pivot table or Power Pivot model)

If you stay pure formulas over a flat table, YTD logic gets messy quickly. You might do something like:

=SUMIFS(
    Sales[Amount],
    Sales[Year], SelectedYear,
    Sales[Date], "<=" & SelectedDate
)

DAX

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

Or with a custom fiscal year:

Total Sales YTD :=
CALCULATE (
    [Total Sales],
    DATESYTD ( 'Date'[Date], "06-30" )
)

DAX is clearly more expressive for time-intelligence, especially once you have a proper Date table and multiple calendars.


Modern Excel Strengths (and When to Use Them)

1. Rapid Prototyping and What-Ifs

Excel is unbeatable for:

  • Quick scenario analysis.
  • One-off models for management.
  • Cases where layout and calculations change daily.

Use modern functions like LET and LAMBDA to keep these models maintainable.

=LET(
    baseSales, SUM(Sales[Amount]),
    growthRate, 1.05,
    baseSales * growthRate
)

2. Transparent, Cell-Level Logic

Pros:

  • Users can trace formulas cell-by-cell.
  • Easy to tweak individual calculations.

Cons:

  • Easy to break dependencies.
  • Hard to ensure everyone uses the same logic.

This is perfect for finance and planning models where transparency beats central governance.

3. Dynamic Arrays for Lightweight Reporting

Dynamic arrays make Excel feel almost like a mini-ETL tool:

  • UNIQUE for dimension lists.
  • SORT for ordered outputs.
  • FILTER for dynamic subsets.

Example: dynamic customer list by region.

=UNIQUE(FILTER(Customers[CustomerName], Customers[Region]=F2))

This is great for department-level reporting where Power BI would be overkill.


DAX Strengths (and When to Use Them)

1. Centralised KPIs

If your organisation argues about “what is margin?”, you need DAX:

  • Define [Gross Margin] once in the model.
  • Reuse it across all reports.
  • Lock it down via dataset permissions.

Example:

Gross Margin :=
[Total Sales] - [Total Cost]

Gross Margin % :=
DIVIDE ( [Gross Margin], [Total Sales] )

2. Large Models and Performance

DAX + VertiPaq handles:

  • Millions of rows per table.
  • Multiple fact tables and dimensions.
  • Complex relationships and filter directions.

Excel can connect to the same model, but DAX is where the core logic lives.

3. Consistent Time Intelligence

Once you have a Date table:

  • All measures can share the same calendar.
  • You get consistent YTD, MTD, rolling 12 months.

Example: rolling 12 months sales.

Sales Rolling 12M :=
CALCULATE (
    [Total Sales],
    DATESINPERIOD ( 'Date'[Date], MAX('Date'[Date]), -12, MONTH )
)

Doing this consistently in Excel across multiple files is possible but fragile.


Hybrid Approach: Excel Front-End, DAX Back-End

You don’t have to choose one forever. A very practical pattern:

  1. Build the core model and measures in Power BI (DAX).
  2. Expose the dataset to Excel via:
    • Get Data → From Power BI.
    • Or PivotTable → “Use this workbook’s Data Model / external model”.
  3. Use Excel as a flexible front-end:
    • Pivot tables connected to the DAX model.
    • Additional local calculations using modern formulas.

This gives you:

  • Governance and performance from DAX.
  • Flexibility and familiar interface from Excel.

Example: Excel Pivot on a DAX Model

  1. Publish a Power BI dataset with measures like [Total Sales], [Gross Margin %].
  2. In Excel, connect to that dataset.
  3. Build pivots and then wrap them with dynamic array formulas for additional analysis.
=LET(
    ptRange, B3#,   
    FILTER(ptRange, INDEX(ptRange,,1)>100000)
)

Here, B3# is the spill range of a pivot table connected to DAX. You’re filtering the pivot output with a modern formula.


Common Anti-Patterns to Avoid

1. Duplicating Logic in Both Excel and DAX

  • One definition of margin in DAX, another in Excel.
  • Different rounding or filter rules.

Fix:

  • Decide where the “source of truth” lives.
  • If it’s DAX, keep Excel to presentation and minor local adjustments.

2. Using DAX for One-Off, Highly Custom Layouts

If you’re constantly redesigning layouts and adding ad-hoc calculations, forcing everything through DAX and Power BI visuals will slow you down.

Fix:

  • Prototype in Excel.
  • Once stable, migrate key logic to DAX.

3. Overloading Excel with Data Volume

You can technically load large volumes into Excel, but:

  • File sizes become unwieldy.
  • Refresh and calculation slow down.

Fix:

  • Use Power BI or Power Pivot models for heavy data.
  • Keep the Excel workbook thin.

Practical Takeaway: Decide Once, Then Standardise

For your next report, make one deliberate decision: where will the core business logic live – Excel formulas or DAX? Document that choice, and stick to it for that project.

  • If it’s Excel: use Tables, LET, LAMBDA, and dynamic arrays to keep it clean.
  • If it’s DAX: centralise measures, connect Excel as needed, and avoid re-implementing logic in cells.

The biggest gains don’t come from picking the “better” engine. They come from picking one primary engine per solution and building everything else around it.

Excel Formulas

New

Next Batches Now Live

Power BIPower BI
SQLSQL
Power AppsPower Apps
Power AutomatePower Automate
Microsoft FabricMicrosoft Fabrics
AzureAzure Data Engineering
Explore Dates & Reserve Your Spot → Reserve Your Spot →