Here’s the formula most of us start with:
=(Actual - Budget) / Budget
It works until a line is budgeted at a loss. Say the budget is -100 and the actual is -50. You beat budget by 50, but the formula returns -50%, which reads as a miss.
The fix
Divide by the absolute budget, and handle zero while you’re there:
=LET(
act, C2,
bud, B2,
IF(bud = 0, "n/a", (act - bud) / ABS(bud))
)
Now the same line returns +50%, and a positive variance means actual came in above budget, every time.
Make it reusable
In Excel 365, save it once under Formulas → Name Manager as VarPct:
=LAMBDA(act, bud, IF(bud = 0, "n/a", (act - bud) / ABS(bud)))
Then use =VarPct(C2, B2) anywhere in the workbook.
One thing this doesn’t change: on cost lines, positive still means you spent more, which is adverse. Decide on a sign convention and label it on the report.