Back to All Cheatsheet Libraries cheatsheets

Microsoft Excel

Keyboard shortcuts, core formulas, and analysis-tool reference for Microsoft Excel.

Modern Excel changed the answers

If you learned Excel before 2020, several "correct" answers are now outdated. XLOOKUP replaces VLOOKUP/HLOOKUP/INDEX-MATCH. Dynamic arrays (FILTER, SORT, UNIQUE) replace most array-formula gymnastics and the Ctrl+Shift+Enter ritual entirely. Each row below flags which Excel versions support it.

Showing results
Category Version Function Syntax Example Notes
Lookup365 / 2021+XLOOKUPXLOOKUP(lookup, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])=XLOOKUP(A2,Staff[ID],Staff[Name],"Not found")The one to learn. Searches any direction, no column counting, built-in not-found handling, defaults to exact match. Replaces VLOOKUP, HLOOKUP, and most INDEX/MATCH.
LookupAllINDEX + MATCHINDEX(return_range, MATCH(lookup, lookup_range, 0))=INDEX(C:C,MATCH(A2,B:B,0))The pre-XLOOKUP standard. Still needed for backward compatibility with Excel 2019 and earlier. The 0 forces exact match — omitting it is a classic silent-bug source.
LookupAllVLOOKUPVLOOKUP(lookup, table, col_index, [range_lookup])=VLOOKUP(A2,$D$2:$F$99,3,FALSE)Legacy. Always pass FALSE — the default TRUE does approximate matching and returns wrong answers silently. Breaks whenever a column is inserted. Prefer XLOOKUP.
Lookup365 / 2021+XMATCHXMATCH(lookup, lookup_array, [match_mode], [search_mode])=XMATCH("Q3",A1:L1)Returns a position rather than a value. Supports reverse search (-1) to find the last match instead of the first.
Dynamic Array365 / 2021+FILTERFILTER(array, include, [if_empty])=FILTER(A2:D99,(C2:C99="West")*(D2:D99>1000),"None")Returns every matching row, spilling automatically. Multiply conditions for AND, add them for OR. Replaces most advanced-filter and helper-column work.
Dynamic Array365 / 2021+UNIQUEUNIQUE(array, [by_col], [exactly_once])=SORT(UNIQUE(B2:B500))Distinct values, live-updating. The example is the standard recipe for building a clean dropdown source list.
Dynamic Array365 / 2021+SORT / SORTBYSORT(array,[index],[order])=SORTBY(A2:C50,C2:C50,-1)Sorts without touching the source data. -1 is descending. SORTBY sorts by a column that need not be in the output.
Dynamic Array365SEQUENCESEQUENCE(rows,[cols],[start],[step])=SEQUENCE(12,1,DATE(2026,1,1),1)Generates a spilled number series. Combined with DATE it builds calendar scaffolding with no dragging.
Dynamic Array365TEXTSPLITTEXTSPLIT(text, col_delim, [row_delim])=TEXTSPLIT(A2,",")Formula-based Text-to-Columns that updates live. Companions: TEXTBEFORE, TEXTAFTER.
Dynamic Array365LAMBDA / LETLET(name,value,...,calculation)=LET(r,FILTER(A:A,B:B="X"),IF(COUNT(r)=0,0,AVERAGE(r)))LET names intermediate results — faster and far more readable than repeating a subexpression. LAMBDA lets you define reusable custom functions with no VBA.
AggregateAllSUMIFS / COUNTIFS / AVERAGEIFSSUMIFS(sum_range, crit_range1, crit1, ...)=SUMIFS(D:D,B:B,"West",C:C,">="&DATE(2026,1,1))Multi-condition aggregation. Note the ">="& pattern for comparing against a date or cell — a very common stumbling block.
AggregateAllSUMPRODUCTSUMPRODUCT(array1,[array2],...)=SUMPRODUCT((B2:B99="West")*(D2:D99))The pre-dynamic-array workhorse for conditional math. Still the cleanest way to do weighted totals in one step.
AggregateAllSUBTOTALSUBTOTAL(function_num, ref)=SUBTOTAL(109,D2:D99)109 = SUM ignoring hidden/filtered rows (101–111 ignore them; 1–11 don't). The right total to show above a filtered table.
AggregateAllCOUNTA / COUNTBLANKCOUNTA(range)=COUNTA(A2:A999)COUNT counts numbers only; COUNTA counts anything non-empty. A formula returning "" still counts as non-empty to COUNTA.
LogicAllIFIF(condition, if_true, if_false)=IF(D2>=1000,"Priority","Standard")Nesting more than three deep is a signal to switch to IFS, XLOOKUP against a mapping table, or a helper column.
Logic2019+IFS / SWITCHIFS(test1,val1,test2,val2,...)=IFS(A2>90,"A",A2>80,"B",A2>70,"C",TRUE,"F")Flat alternative to nested IFs. End with TRUE,default or unmatched values return #N/A.
LogicAllIFERROR / IFNAIFERROR(value, value_if_error)=IFERROR(A2/B2,0)Use IFNA when you only want to catch failed lookups — IFERROR also swallows genuine mistakes like #REF! and #VALUE!, hiding real bugs.
Text2019+TEXTJOINTEXTJOIN(delim, ignore_empty, range)=TEXTJOIN(", ",TRUE,A2:A20)Joins a range with a separator, skipping blanks. Far better than chained & concatenation.
TextAllTEXTTEXT(value, format_code)=TEXT(A2,"yyyy-mm-dd")Formats a number/date as text. Essential when building labels — the result no longer sorts or calculates as a number.
TextAllTRIM / CLEANTRIM(text)=TRIM(CLEAN(A2))First aid for pasted data. TRIM removes extra spaces; CLEAN strips non-printing characters. Note TRIM won't remove non-breaking spaces (CHAR 160) from web pastes — use SUBSTITUTE(A2,CHAR(160)," ").
TextAllSUBSTITUTESUBSTITUTE(text, old, new, [instance])=SUBSTITUTE(A2,"-","")Replaces by matched text. REPLACE replaces by position instead — different tools, commonly confused.
DateAllEOMONTHEOMONTH(start, months)=EOMONTH(TODAY(),0)Last day of a month N months out. EOMONTH(d,-1)+1 is the idiomatic "first day of this month".
DateAllNETWORKDAYS.INTLNETWORKDAYS.INTL(start,end,[weekend],[holidays])=NETWORKDAYS.INTL(A2,B2,1,Holidays)Working days between dates, with a configurable weekend and a holiday exclusion list. The correct tool for SLA and delivery calculations.
DateAllDATEDIFDATEDIF(start,end,"unit")=DATEDIF(A2,TODAY(),"y")Undocumented but functional legacy function for age/tenure. Units: "y", "m", "d", "ym", "md". Won't autocomplete — type it in full.
Showing results
Group Action Windows Mac Why it matters
NavigateJump to edge of dataCtrl + Arrow⌘ + ArrowThe single most useful navigation key. Instantly finds the last row of a 50,000-row table — and reveals accidental gaps in your data.
NavigateSelect to edge of dataCtrl + Shift + Arrow⌘ + Shift + ArrowSelects an entire column/row of data without touching the mouse or grabbing empty cells below.
NavigateGo to A1Ctrl + HomeFn + Ctrl + ←Instant reset when lost in a large sheet.
NavigateNext / previous worksheetCtrl + PgDn / PgUpFn + Ctrl + ↓ / ↑Tab through a multi-sheet workbook without aiming at tiny tabs.
NavigateGo To SpecialCtrl + G then Alt+SFn + F5Select all blanks, all formulas, or all constants at once. The hidden power tool for auditing and cleaning a sheet.
EntryFill down / rightCtrl + D / Ctrl + R⌘ + D / ⌘ + RCopies from the cell above/left into the whole selection. Faster and more precise than dragging a fill handle.
EntryFill entire selectionCtrl + Enter⌃ + EnterSelect a range, type once, press this — fills every selected cell at once. Pairs perfectly with Go To Special → Blanks.
EntryFlash FillCtrl + E⌘ + EType one example of the pattern you want, press it, and Excel infers the rest. Splits names or reformats phone numbers with zero formulas.
EntryInsert today's date / timeCtrl + ; / Ctrl + Shift + ;⌘ + ;Inserts a static value, unlike TODAY() which changes every day. Usually what you actually want in a log.
EntryToggle absolute referenceF4⌘ + TCycles A1 → $A$1 → A$1 → $A1 while editing. Press repeatedly to reach the mix you need.
EntryRepeat last actionF4 (outside edit mode)⌘ + YRepeats your last formatting or insert. Applying the same fill to twelve scattered cells becomes trivial.
FormatFormat Cells dialogCtrl + 1⌘ + 1The gateway to number formats, custom formats, borders, and alignment. Worth committing to memory.
FormatCreate TableCtrl + T⌘ + TConverts a range into a real Table — structured references, auto-expanding formulas, banded rows. See the Patterns tab for why this matters so much.
FormatToggle filtersCtrl + Shift + L⌘ + Shift + FAdds/removes filter dropdowns on the header row instantly.
FormatPaste SpecialCtrl + Alt + V⌘ + ⌃ + VPaste values only, formats only, or transpose. "Paste values" is the fix for a formula that breaks the moment it's copied elsewhere.
FormatInsert / delete rowCtrl + Shift + + / Ctrl + -⌘ + Shift + + / ⌘ + -Operates on whatever is selected — select the whole row first for a clean insert.
FormulaAutoSumAlt + =⌘ + Shift + TGuesses the range above and inserts SUM. Check the guess before accepting.
FormulaShow all formulasCtrl + `⌃ + `Reveals every formula as text at once. The fastest way to audit an unfamiliar workbook or spot a hardcoded number hiding among formulas.
FormulaEvaluate part of a formulaF9 (with fragment selected)Fn + F9Select a sub-expression inside a formula and see what it evaluates to. Press Esc, not Enter, or you'll hardcode the result.
FormulaRecalculate allCtrl + Alt + F9⌘ + ⌥ + F9Forces a full rebuild when a workbook is on manual calculation or a value looks stale.

Build a PivotTable that won't break next month

Most broken PivotTables trace back to one root cause: the source is a plain range rather than a Table, so new rows fall outside it. Doing step 1 properly prevents almost every downstream problem.

1

Convert the source to a Table first

Click inside the data → Ctrl + T → confirm "My table has headers". Then rename it in the Table Design tab (e.g. SalesData). A Table grows automatically as rows are added, so the Pivot's source range never needs updating again.

Range → Ctrl+T → Table Design → Table Name: SalesData
2

Clean the headers before you pivot

Every column needs a unique, non-blank header. Merged cells in the header row break PivotTables outright. One header row only — no stacked "title" rows above the data.

3

Insert the PivotTable

Insert → PivotTable → the source shows your Table name rather than a cell range. Put it on a new worksheet unless you have a specific reason not to.

4

Drag fields into the four zones

Rows = what you're grouping by. Columns = a second breakdown (use sparingly; wide pivots get unreadable fast). Values = the numbers being aggregated. Filters = a top-level slicer for the whole table.

5

Fix the aggregation — it defaults to Count more often than you'd think

If a Values field shows "Count of Amount" instead of "Sum of Amount", there's a text value or a blank hiding in that column. Click the field → Value Field Settings → Sum. But go find the bad cell too: it means your data has a type problem.

6

Add Slicers instead of teaching people the filter menus

PivotTable Analyze → Insert Slicer. Slicers are big clickable filter buttons, and one slicer can drive several PivotTables at once via Report Connections — the foundation of a usable dashboard.

7

Refresh is manual — this surprises everyone

PivotTables don't update live. Alt + F5 refreshes one, Ctrl+Alt+F5 refreshes all. To automate: right-click → PivotTable Options → Data → Refresh data when opening the file.

Power Query — the tool most Excel users never open

If you clean the same file every month, stop doing it by hand

Power Query (Data → Get & Transform) records your cleanup as a repeatable series of steps. Next month: drop in the new file and click Refresh. It handles merges, unpivoting, type fixes, and combining every file in a folder — no macros, no VBA.

1

Data → Get Data → choose your source

From File (Excel/CSV/JSON), From Folder (combines every file in it), From Web, or From Database. "From Folder" is the standout: point it at a folder of monthly exports and it stacks them all into one table automatically.

2

Transform in the editor, watching Applied Steps

Every click is recorded in the Applied Steps panel on the right. Remove columns, split, filter, replace values, set data types. Steps can be reordered, edited, or deleted later — this is version-controlled cleanup rather than destructive edits.

3

Set data types explicitly, early

Don't rely on inference. Click each column's type icon and set it deliberately, particularly for dates and anything that looks numeric but should be text (postal codes, IDs with leading zeros).

4

Unpivot wide data into tidy data

Got a column per month? Select the month columns → Transform → Unpivot Columns. You get a tidy Attribute/Value pair per row, which is the shape PivotTables and charts actually want.

5

Close & Load To… — pick your destination deliberately

Choose Table (into a sheet) or Only Create Connection + Add to Data Model for large data. Loading a million rows into a worksheet when you only need a Pivot on top of it is the usual cause of a sluggish workbook.

Patterns that separate a robust workbook from a fragile one

Use real Tables, always
  • Ctrl + T converts a range into a Table. Formulas then read =SUM(Sales[Amount]) instead of =SUM(D2:D5000).
  • Tables auto-expand. New rows inherit formulas and formatting, and every Pivot, chart, and named range pointing at the Table picks them up automatically.
  • Structured references survive column insertion — the single biggest cause of VLOOKUP breakage disappears.
  • Rule of thumb: if data has headers and grows, it should be a Table. There is almost no downside.
Separate input, calculation, and output
  • Keep raw data on its own sheet and never hand-edit it. Cleanup belongs in Power Query or in formulas on a separate sheet.
  • Put assumptions (tax rate, FX rate, headcount) in one clearly-marked input block, and reference them. Never bury a constant inside a formula.
  • Colour-code by convention: blue for hardcoded inputs, black for formulas. This is standard practice in financial modelling for a reason — it makes "what can I safely change?" visible at a glance.
  • Output/presentation sheets should contain almost no logic — just references to the calculation layer.
Make bad data impossible to enter
  • Data → Data Validation → List, sourced from a UNIQUE() spill range or a named Table column, so the dropdown maintains itself.
  • Validation also enforces number ranges, date bounds, and text length — cheaper than cleaning bad entries later.
  • Protect the sheet (Review → Protect Sheet) leaving only input cells unlocked, so formulas can't be overwritten by accident.
  • Conditional Formatting to flag anomalies: duplicates, negatives where impossible, dates in the future.
Keep it fast
  • Avoid whole-column references (A:A) in heavy formulas — they force Excel to consider a million rows. Use Table references instead.
  • Volatile functions (NOW, TODAY, RAND, OFFSET, INDIRECT) recalculate on every change. A few are fine; hundreds will crawl.
  • Use LET to compute a subexpression once instead of repeating it four times in the same formula.
  • For very large datasets, load to the Data Model (Power Pivot) rather than into worksheet cells.

Error codes and what they actually mean

#N/A

Lookup failed

The lookup value genuinely isn't there. Usual culprits: trailing spaces (wrap in TRIM), or a number stored as text vs. a real number. Wrap in IFNA once you've confirmed it's expected.

#VALUE!

Wrong type

Arithmetic on text. Often an invisible space or a non-breaking space from a web paste. Check with =ISNUMBER(A2).

#REF!

Deleted reference

A row/column the formula depended on was deleted. Unrecoverable by formula — undo immediately if it just happened. Never mask this one with IFERROR.

#DIV/0!

Divide by zero

Denominator is zero or blank. =IFERROR(A2/B2,0) is fine if zero is genuinely the right answer for an empty denominator.

#SPILL!

365 onlyBlocked range

A dynamic array can't expand because something is in the way. Clear the cells below/right of the formula. Merged cells are a frequent hidden cause.

#NAME?

Unknown name

Misspelled function, or a newer function used in an older Excel version. XLOOKUP in Excel 2019 produces exactly this.

Mail merge: Excel holds the data, Word builds the template, Outlook sends it

Mail merge is the single most useful Office feature that most people never touch — and it's been built in for decades. One spreadsheet of names plus one Word document produces 500 personalised letters, emails, labels, or certificates. No add-ins, no subscription, no copy-paste.

1

Prepare the Excel data source properly — this is where merges go wrong

One header row at the very top, one record per row, no blank rows and no merged cells. Header names become your merge fields, so name them clearly (FirstName, not Column1). Keep everything on the first worksheet, or note which sheet to pick later.

FirstName | LastName | Email | Company | Amount | DueDate Jane | Chen | j@x.com | Acme | 1250.5 | 2026-03-01
2

Start the merge in Word

Word → Mailings tab → Start Mail Merge → choose Letters, E-mail Messages, Envelopes, Labels, or Directory. Directory is the overlooked one: it produces a single continuous list rather than one page per record — ideal for a printed roster or catalogue.

3

Connect the spreadsheet

Mailings → Select Recipients → Use an Existing List → pick your .xlsx → choose the worksheet. Then Edit Recipient List lets you filter, sort, or deselect rows without touching the original file — the right place to exclude test rows or send to one region only.

4

Insert the merge fields

Write the letter normally, and use Mailings → Insert Merge Field wherever a value belongs. Preview Results then shows real data, and the arrows step through records — always check the first, last, and one awkward middle record before sending.

Dear «FirstName», your invoice for «Amount» is due on «DueDate».
5

Fix the number and date formatting — the classic mail-merge failure

Word ignores Excel's cell formatting and pulls the raw value, so 1250.5 arrives as "1250.5" and a date as "3/1/2026 00:00:00". The fix is a field switch. Press Alt + F9 to reveal field codes, edit them directly, then Alt + F9 again and F9 to refresh.

{ MERGEFIELD Amount \# "$#,##0.00" } → $1,250.50 { MERGEFIELD DueDate \@ "MMMM d, yyyy" } → March 1, 2026 { MERGEFIELD FirstName \* Upper } → JANE
6

Add conditional content with Rules

Mailings → Rules → If…Then…Else inserts logic into the template. Use it to vary a sentence by region, add a late-payment line only when relevant, or handle a missing field gracefully. Skip Record If excludes rows without pre-filtering the data.

{ IF { MERGEFIELD Balance } > 0 "Please remit payment." "Your account is settled — thank you." }
7

Finish & Merge

Edit Individual Documents produces one long Word file you can proofread before printing — always do this for anything going to print. Print Documents goes straight to the printer. Send E-mail Messages hands off to Outlook: pick the email column, set the subject, and choose HTML format.

8

Know the email-merge limitations before you rely on it

Native email merge cannot attach files, cannot CC/BCC, and sends immediately with no preview of the outbound queue. It requires the desktop Outlook set as your default mail client — it will not work from Outlook on the web. Messages land in Sent as normal. For attachments or scheduling you need a VBA macro or a third-party add-in.

Mail merge troubleshooting

Symptom Cause Fix
Numbers show as 1250.5 or 0.075Word reads the underlying value, not Excel's display format.Add a numeric picture switch: \# "$#,##0.00" or \# "0.0%" via Alt+F9.
Dates appear as 3/1/2026 0:00:00Same issue — the raw date-time serial is being rendered.Add \@ "d MMMM yyyy", or connect via DDE (see below).
Fields show «FirstName» in the outputPreview Results is off, or the field never resolved.Toggle Preview Results. If still literal, the data source connection was lost — reconnect via Select Recipients.
Only the first record mergesMerged to a single document instead of iterating, or a blank row terminated the recordset.Remove blank rows from the Excel sheet and re-select the recipient list.
Leading zeros vanish from ZIP codes / IDsExcel stored them as numbers.Format the Excel column as Text before entering data, or use \# "00000" in the merge field.
Blank line where an empty field sitsAddress Line 2 is empty but its paragraph still renders.Wrap it in an IF rule so the whole line only appears when the field has content.
Email merge greyed outDesktop Outlook isn't installed or isn't the default mail client.Set Outlook as default in Windows Settings → Apps → Default apps. Outlook on the web cannot drive a merge.
Need attachments on merged emailsNot supported natively — a genuine product limitation.Use a VBA macro driving Outlook's object model, or a dedicated add-in. Don't spend time hunting for a built-in option.
The DDE connection trick — fixes all formatting at once
  • Word → File → Options → Advanced → General → tick "Confirm file format conversion on open".
  • Now when you Select Recipients, Word offers connection methods. Choose MS Excel Worksheets via DDE.
  • DDE reads Excel's formatted values, so currency, percentages, and dates arrive already looking correct — no picture switches needed at all.
  • Trade-off: DDE requires Excel to actually open the file during the merge and is slower on very large datasets. For a few thousand rows it's the pragmatic choice.

Other cross-app features people don't know exist

Paste a live-linked Excel table into Word

Copy in Excel → in Word, Home → Paste ▾ → Paste Special → Paste Link → Microsoft Excel Worksheet Object. The Word table now updates when the spreadsheet changes. Ideal for a monthly report whose numbers keep moving right up to publication.

Linked charts in PowerPoint

Paste an Excel chart into PowerPoint using Keep Source Formatting & Link Data. Refresh the deck after updating the workbook instead of rebuilding every chart before each board meeting.

Excel's Camera tool

Add Camera from File → Options → Quick Access Toolbar → All Commands. It creates a live picture of a cell range that updates automatically — the classic technique for assembling a dashboard from scattered sheets.

Goal Seek

Data → What-If Analysis → Goal Seek. "What discount gets this total to exactly £10,000?" Excel works backwards and fills in the input for you. Takes ten seconds and almost nobody uses it.

Data Table for two-variable analysis

Data → What-If Analysis → Data Table builds a full sensitivity grid across two changing inputs — interest rate against term, price against volume — in one step rather than hundreds of manual recalcs.

Scenario Manager

Save several complete sets of input assumptions (Best / Base / Worst) and switch between them instantly, with a comparison summary report. Far cleaner than three near-identical copies of the workbook.

Watch Window

Formulas → Watch Window pins chosen cells in a floating panel so you can see them update while working on a different sheet. Invaluable when a change on sheet 8 should move a total on sheet 1.

Outlook Quick Parts

In Outlook, select text you type constantly → Insert → Quick Parts → Save Selection. Reinsert it in any future email in two keystrokes. The reusable-boilerplate feature hiding in plain sight.

Outlook Quick Steps

Home → Quick Steps bundles several actions — move to folder, mark read, flag, forward to someone — behind one button or shortcut. The closest Outlook gets to true one-click triage.

Outlook Search Folders

A saved search that behaves like a folder and stays current — "everything unread from my manager", "anything with an attachment over 5 MB". Right-click Search Folders → New Search Folder.

Word's Compare Documents

Review → Compare produces a marked-up third document showing every difference between two versions. The correct answer to "what changed in this contract?" — much better than reading both side by side.

Merge to individual PDFs

Native merge produces one combined file. To get one PDF per record — payslips, certificates, invoices — you need a short VBA loop or an add-in. Worth knowing before promising it to someone.

Gotchas worth knowing before they bite

Dates are numbers wearing a costume
  • Excel stores dates as serial numbers counting from 1 Jan 1900. That's why a date can suddenly display as 45678 — the value is fine, only the format changed.
  • Dates typed in a non-matching regional format silently import as text and won't sort or calculate. =ISNUMBER(A2) is the quick check.
  • Excel deliberately contains a bug: it treats 1900 as a leap year for Lotus 1-2-3 compatibility. Irrelevant for modern dates, but it exists.
  • Times are the fractional part — 0.5 is noon. Durations over 24 hours need the custom format [h]:mm or they wrap around.
CSV imports mangle data by default
  • Leading zeros vanish — postal codes and IDs become numbers. Import via Power Query and set the column to Text before loading.
  • Long numeric IDs above 15 digits lose precision permanently. Excel stores 15 significant digits; a 16-digit account number gets a trailing zero and no warning.
  • Anything resembling a date gets converted. This famously forced geneticists to rename genes, because SEPT2 kept becoming a date.
  • Never double-click a CSV to open it if the data matters. Use Data → From Text/CSV so you get the type-control dialog.
Merged cells break things
  • They break sorting, filtering, PivotTables, dynamic array spilling, and most VBA.
  • Use Center Across Selection (Ctrl+1 → Alignment → Horizontal) instead. Identical visual result, none of the damage.
  • If you inherit a sheet full of merges: select all → Merge & Center (to unmerge) → Go To Special → Blanks → type = and up-arrow → Ctrl+Enter to backfill.
Co-authoring has real constraints
  • Real-time co-authoring requires the file on OneDrive/SharePoint and works best in .xlsx — legacy .xls blocks it entirely.
  • Some features lock the file for others: certain PivotTable changes, sheet protection changes, and anything involving VBA in an .xlsm.
  • Version History (File → Info → Version History) is your undo across sessions and is far more reliable than hoping for an autorecover file.

Habits that pay off

Audit before you trust

Ctrl + ` shows every formula at once. Formulas → Trace Precedents/Dependents draws arrows showing what feeds what. Do this on any workbook you inherit before relying on its numbers.

Custom number formats

Ctrl+1 → Custom. #,##0,,"M" displays 1,250,000 as "1.3M" while keeping the real value intact for calculation. Formatting changes appearance, never the underlying number.

Freeze panes properly

Select the cell below and right of what you want frozen, then View → Freeze Panes. Selecting B2 freezes row 1 and column A together — the arrangement most people actually want.

Group sheets to edit many at once

Ctrl-click several sheet tabs and every edit applies to all of them. Enormously useful for twelve identically-structured monthly tabs — and dangerous if you forget to ungroup afterwards.

Sparklines for inline trends

Insert → Sparklines puts a tiny chart inside a single cell. A trend column beside your numbers conveys more than a separate full-size chart, at a fraction of the space.

Learn the Alt key ribbon path

Press and release Alt on Windows and letter hints appear over every ribbon command. Any action becomes a keyboard sequence — and unlike shortcuts, you don't have to memorize it in advance.

Official docs & further reading