Build Real-World Finance & Business Analytics Skills

Explore practical resources, interactive tools, and project-based learning designed to help you analyze data, solve business problems, and make better financial decisions.

Variance Analysis in Excel: The Budget-vs-Actual Framework.

Written by the Biznerdly Editorial Team. Technical review by Tanzila Tanjim Tusra, Researcher, a statistics graduate & partially qualified chartered accountant (ICAB) and data analyst. Published August 18, 2026. Last verified: August 2026, tested on Excel 365 and Excel 2021.

Variance analysis compares what actually happened to what was budgeted or forecast, then labels the difference favorable or unfavorable. The sign convention flips depending on the line: higher-than-budget revenue is favorable, but higher-than-budget expense is unfavorable. Build it once as static Excel formulas for a quick one-off, or as a Power Pivot DAX measure that recalculates automatically every time you refresh, with a materiality threshold that flags only the variances worth investigating.

If you've ever stared at a report and had to pause to remember whether a positive number in the "Expense Variance" column is good news or bad news, you're not alone; this is genuinely the single most common error we see in variance reporting, and it's almost never a math mistake. It's a sign-convention mistake. We'll fix that first, then build the report two ways: a static version for a quick one-off, and a Power Pivot version that keeps itself current.

Excel PivotTable showing budget vs actual figures with variance and variance percent columns, unfavorable variances highlighted in red

What variance analysis actually measures

Variance analysis is the practice of comparing actual results to a budget, forecast, or prior period, then explaining why the two don't match. In FP&A (financial planning and analysis) work, it's usually run monthly or quarterly against a budget-vs-actual report, but the same mechanics apply to comparing actuals against a rolling forecast, or this year against last year.

The output is more than a single number. A complete variance analysis answers three questions: how big is the gap, is it good or bad news, and is it big enough to actually investigate. Most competitor guides online stop at the first question. This article covers all three.

The sign convention: favorable vs unfavorable

This is the part worth memorizing, because getting it backwards in front of a manager is a fast way to lose credibility.

Sign convention worked examples for revenue and expense lines
Line itemBudgetActualVariance ($)Favorable or unfavorable?
Sales Revenue$200,000$215,000+$15,000Favorable: more revenue than planned
Sales Revenue$200,000$188,000−$12,000Unfavorable: less revenue than planned
Marketing Expense$50,000$54,000+$4,000Unfavorable: spent more than planned
Marketing Expense$50,000$45,500−$4,500Favorable: spent less than planned

Notice the pattern: for revenue lines, a positive variance (actual higher than budget) is favorable. For expense and cost lines, a positive variance is unfavorable, because you spent more than planned. The dollar sign never tells you the story on its own; you have to know which type of line you're looking at first.

The core formulas

Variance analysis formula reference
MetricFormulaNotes
Variance ($)Actual − BudgetSame formula for every line; interpretation depends on revenue vs expense
Variance (%)Variance ÷ BudgetAlways review alongside the dollar variance, never alone
Favorable / Unfavorable flagIF logic keyed to account type (revenue vs expense)Covered in the worked template; don't hardcode this per row, key it to an account-type column

Two ways to build it: static Excel vs Power Pivot

The dataset for this example: a monthly Marketing Expense budget vs actual, six months of history.

Build 1: Static Excel formulas

  1. Lay out Budget and Actual as two columns, one row per month.
  2. Add =Actual - Budget for the dollar variance, and =Variance/Budget for the percentage.
  3. Add an IF formula that reads an "Account Type" column to decide whether a positive number should display as favorable or unfavorable.
  4. Apply conditional formatting so unfavorable variances render in red automatically.

This is fast to build and perfectly fine for a single report you'll run once or twice. The catch: next month, you paste in new numbers and drag every formula down again, and if you ever add a new account type, the IF logic needs manual updating everywhere it's used.

Build 2: Power Pivot DAX measure (self-refreshing)

If you're not yet comfortable with DAX syntax, covers the 15 measures that make the rest of this section easy to follow.

Variance Amount := [Total Actual] - [Total Budget]

Variance % := DIVIDE([Variance Amount], [Total Budget])

Favorable Flag :=
IF(
    RELATED(Accounts[AccountType]) = "Revenue",
    IF([Variance Amount] >= 0, "Favorable", "Unfavorable"),
    IF([Variance Amount] <= 0, "Favorable", "Unfavorable")
)

Once these three measures exist in the Data Model, every PivotTable built on it, this month's, next month's, a filtered view for one department, automatically applies the same correct sign logic. You never rewrite the favorable/unfavorable rule again.

Setting a materiality threshold

Not every variance deserves an investigation. A department that's consistently 2% over budget every month isn't newsworthy; a department that suddenly swings 15% over budget after months of sitting near zero is. A materiality threshold separates routine noise from something worth a conversation.

One practical approach, borrowed from statistical process control: flag a variance when it falls more than 1.5 standard deviations from that line's own historical variance pattern, rather than using a flat percentage for every account regardless of how volatile it normally is.

Historical Variance StdDev :=
CALCULATE(
    STDEVX.P(VALUES(Calendar[Month]), [Variance %]),
    DATESINPERIOD(Calendar[Date], LASTDATE(Calendar[Date]), -12, MONTH)
)

Materiality Flag :=
IF(
    ABS([Variance %]) > 1.5 * [Historical Variance StdDev],
    "Review",
    "OK"
)

Worked example: if Marketing Expense has swung between −3% and +4% over the past six months, its historical standard deviation is roughly 2.4 percentage points, putting the 1.5-standard-deviation threshold at about 3.6%. An 8% variance this month clears that bar easily and gets flagged; a 3% variance doesn't. Adapt the exact CALCULATE/DATESINPERIOD syntax to match your own Calendar table structure; the pattern is what matters.

For the underlying DAX statistical functions used here, see Microsoft's STDEVX.P function reference.

Common mistakes

Frequent variance analysis errors and fixes
MistakeWhy it happensFix
Treating every positive variance as good newsSign convention isn't applied consistently across revenue and expense linesKey the favorable/unfavorable logic to an account-type field, never hardcode it per row
Reviewing dollar variance without the percentageA large dollar number looks alarming even when it's small relative to the budgetAlways show Variance % alongside Variance $ in the same report
Flagging every non-zero variance for investigationNo materiality threshold in placeApply a threshold, whether a flat percentage or a statistical one, so attention goes to genuine outliers
Comparing this month's actual to last month's budget by accidentCopy-paste errors when rolling the report forward each periodBuild the report on a Power Pivot Data Model with a proper Calendar table, so the correct period is selected by filter, not by manual reference

Downloadable template

  • Dual-Format Variance Template, the same Marketing Expense dataset built two ways: static Excel formulas on one tab, a Power Pivot Data Model with the measures above on another. [DOWNLOAD LINK]
  • Materiality Threshold Calculator, a standalone tab that computes the historical standard deviation and threshold for any line item you paste in. [DOWNLOAD LINK]

Frequently asked questions

What is a favorable vs unfavorable variance?

Favorable means the actual result was better for the business than budgeted: more revenue than planned, or less expense than planned. Unfavorable means the opposite: less revenue than planned, or more expense than planned. The same positive dollar variance is favorable on a revenue line and unfavorable on an expense line.

How do you calculate variance percentage?

Variance % = (Actual − Budget) ÷ Budget. This should always be reviewed next to the dollar variance, since a small percentage on a large budget can represent a bigger dollar impact than a large percentage on a small budget.

What's a good variance threshold to flag?

There's no single universal number. A common starting point is a flat percentage, such as 5% or 10% of budget, but a more precise approach ties the threshold to each line's own historical volatility, for example flagging anything beyond 1.5 standard deviations from that line's typical monthly swing, as shown above.

How do I automate variance reporting in Excel?

Build the report once on a Power Pivot Data Model with DAX measures for the variance amount, variance percentage, and materiality flag. From then on, refreshing the workbook after pasting in new actuals recalculates the entire report automatically, with no formulas to drag down and no logic to rebuild.

Where to go from here

Methodology note: formulas and figures in this article were tested directly in Excel 365 and Excel 2021 as of July 2026. The DAX time-intelligence and statistical patterns shown follow standard syntax; validate the exact function arguments against your own Calendar table and data model structure before deploying to a production report.

Post a Comment

0 Comments