Wauvel

Excel like a finance pro.

The functions, VBA, and shortcuts a finance operator actually uses — curated, with CFO examples. Prefer them pre-built? Grab a ready-made model.

Essential functions

Each one has its own page — what it is, a live demo, common errors, and better alternatives.

Lookups & references

XLOOKUP

The modern lookup — find a value and return another, in any direction, with a clean not-found fallback.

=XLOOKUP("4100", Codes, Names, "Not found")
VLOOKUP

The everyday lookup — find a value in the first column and return one to its right.

=VLOOKUP("4100", A2:B4, 2, FALSE)
INDEX + MATCH

The classic two-step lookup — works left or right and across two dimensions.

=INDEX(Revenue, MATCH(A2, Month, 0))
INDEX + MATCH + MATCH

The two-way lookup — cross a row label and a column label to pull one cell.

=INDEX(B2:D4, MATCH("East", A2:A4, 0), MATCH("Q2", B1:D1, 0))
HLOOKUP

The horizontal lookup — find a value in the top row and return one below it.

=HLOOKUP("Q2", A1:E3, 2, FALSE)

Logic & error handling

IF / IFS

Return different results by condition — IFS avoids nested IFs.

=IFS(B2>0,"Profit", B2=0,"Breakeven", TRUE,"Loss")
IFERROR

Turn errors into a clean fallback so a model doesn't break.

=IFERROR(A2/B2, 0)
SWITCH

Match one value against a list of cases — cleaner than a stack of nested IFs.

=SWITCH(B2, 1,"Open", 2,"Paid", 3,"Void", "Unknown")

Aggregation

SUMIFS

Sum amounts that match several conditions — the workhorse of P&L roll-ups.

=SUMIFS(Amount, Account, "Revenue", Month, $B$1)
COUNTIFS

Count rows that meet multiple conditions.

=COUNTIFS(Status, "Open", Days, ">30")
AVERAGEIFS

Average the values that match several conditions — the mean sibling of SUMIFS.

=AVERAGEIFS(Amount, Stage, "Won")
MINIFS / MAXIFS

The smallest or largest value that meets your conditions.

=MAXIFS(Balance, Customer, "Acme", Status, "Open")
SUMPRODUCT

Multiply arrays element-by-element, then sum — weighted averages and conditional math.

=SUMPRODUCT(Units, Price) / SUM(Units)
SUBTOTAL

Aggregate only the visible (filtered) rows, ignoring other subtotals.

=SUBTOTAL(9, D2:D500)

Math & rounding

ROUND / ROUNDUP / ROUNDDOWN

Round a number to a set number of digits — control the pennies before they compound.

=ROUND(B2, 2)

Dates

EOMONTH

The last day of a month N months out — clean period-end dates.

=EOMONTH(TODAY(), 0)
EDATE

The same day, N months out — clean anniversary, renewal, and due dates.

=EDATE(B2, 12)
TEXT

Format a number or date as text — for labels and headers.

="Cash: " & TEXT(B2, "$#,##0")

Dynamic arrays (Microsoft 365)

FILTER

Return the rows that meet a condition as a live, spilling result.

=FILTER(GL, Account="Revenue", "None")
UNIQUE

Spill a distinct list — perfect for dropdowns and clean lists.

=SORT(UNIQUE(Account))
SORT / SORTBY

Spill a range into sorted order — live, with no manual re-sort.

=SORT(A2:B10, 2, -1)

Finance

XNPV / XIRR

NPV and IRR for cash flows on real, irregular dates.

=XNPV(0.1, Flows, Dates)
PMT

The level payment on a loan, per period.

=PMT(0.09/12, 60, -150000)

Learn the moves here — or let Wauvel run them on your numbers.

Get my free report →