Wauvel

Excel like a finance pro.

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

The workhorse of logic — return one thing when a test is true, another when it's false.

=IF(B2>=B3, "Hit target", "Missed")
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")
AND / OR / NOT

Combine several conditions into one TRUE/FALSE — the logic that powers a real IF.

=IF(AND(B2>=650, C2>=50000), "Approve", "Review")
ISBLANK / ISNUMBER / ISTEXT / ISERROR

Ask what kind of thing is in a cell — empty, a number, text, or an error.

=IF(ISNUMBER(B2), B2, 0)
IFNA

Catch only #N/A — so a missing lookup is handled but real errors still surface.

=IFNA(VLOOKUP(B2, Codes, 2, FALSE), "Not found")

Text & cleanup

LEFT / RIGHT / MID

Pull characters off the start, the end, or the middle of a text string by position.

=LEFT("AA-1024-X", 2)
LEN

Count the characters in a cell — the quiet workhorse behind validation and cleanup.

=LEN(A2)
FIND / SEARCH

Locate where one piece of text sits inside another — the position to slice at.

=FIND("-", "AA-1024-X")
CONCAT / TEXTJOIN / &

Stitch pieces of text together — a full name, an address, a dynamic label.

=TEXTJOIN(", ", TRUE, A2:A6)
TEXTBEFORE

Grab everything before a delimiter — first names, street numbers, the local part of an email.

=TEXTBEFORE("Jane Doe", " ")
TEXTAFTER

Grab everything after a delimiter — last names, email domains, the tail of a code.

=TEXTAFTER("Jane Doe", " ")
TEXTSPLIT

Break one messy cell into clean columns — split an address or a full name in a single formula.

=TEXTSPLIT("123 Main St, Austin, TX", ", ")
TRIM / CLEAN

Strip stray spaces and junk characters so lookups match and lists de-duplicate.

=TRIM(" Jane Doe ")
PROPER / UPPER / LOWER

Fix inconsistent capitalization — turn jane DOE and ACME llc into clean, uniform case.

=PROPER("jane DOE")
SUBSTITUTE

Find-and-replace inside a formula — standardize abbreviations and strip unwanted characters.

=SUBSTITUTE("123 Main St", "St", "Street")

Aggregation

SUM

Add up a range of numbers — the first function anyone learns and still the most-used.

=SUM(B2:B13)
AVERAGE

The arithmetic mean of a range — total ÷ count, with blanks left out.

=AVERAGE(B2:B13)
COUNT / COUNTA / COUNTBLANK

Answer 'how many?' — numbers only, anything at all, or the empty ones.

=COUNTA(A2:A100)
MIN / MAX

The smallest or largest number in a range — and a neat way to cap or floor a value.

=MAX(B2:B13)
SMALL / LARGE

The 2nd, 3rd … nth smallest or largest — the top-N list MIN/MAX can't do.

=LARGE(B2:B13, 2)
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)
ABS / INT / MOD

Three small math tools that punch above their weight — magnitude, whole part, remainder.

=ABS(B2 - C2)

Dates

TODAY / NOW

The current date (or date-and-time) that updates itself every time the sheet recalcs.

=TODAY() - B2
DATE / YEAR / MONTH / DAY

Build a real date from three numbers, or pull the year, month, or day back out.

=DATE(2026, 3, 15)
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)
VSTACK

Pile ranges on top of each other into one tall list — combine tabs or blocks before you filter or total.

=VSTACK(Jan!A2:C50, Feb!A2:C50, Mar!A2:C50)
HSTACK

Set ranges side by side into one wider block — glue separate columns into a single table.

=HSTACK(Months, Actuals, Budget)
LET

Name a value or calculation once, then reuse it — faster formulas that read like plain English.

=LET(rev, B2, cogs, B3, gp, rev - cogs, gp / rev)
LAMBDA

Build your own reusable function — no VBA — then name it and call it like any built-in.

=LAMBDA(rev, cogs, (rev - cogs) / rev)(B2, C2)

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)
Amortization schedule (PMT · IPMT · PPMT)

Build a full loan payoff schedule — principal vs. interest, month by month.

=IPMT(9%/12, 1, 60, -150000) → the first month's interest
Depreciation (SLN · DDB · SYD)

Spread an asset's cost over its life — build an asset register and schedule.

=SLN(45000, 5000, 5) → $8,000 of straight-line depreciation a year
DB

Fixed-declining-balance depreciation — accelerated, at a single rate Excel works out for you.

=DB(45000, 5000, 5, 1) → the first year's depreciation
VDB

Variable-declining balance — accelerated depreciation that switches to straight-line so nothing is stranded.

=VDB(45000, 5000, 5, 0, 1) → the first year's depreciation

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

Meet your AI CFO →

One CFO-grade Excel tip a week

A short, practical email for finance operators — functions, shortcuts, and the moves that save an afternoon. Free, unsubscribe anytime.