SpreadSheet Sage

The best things in life are free, but the accountant still wants a receipt.

Tip of the Day: Double-click the fill handle (bottom-right of cell) to auto-fill down to the last row of adjacent data

Your Excel Formula Cheat Sheet

Describe what you need, get the right formula

97+Formulas
20Categories
14Calculators
12Error Fixes

The best things in life are free, but the accountant still wants a receipt.

Welcome to SpreadSheet Sage

Search formulas Browse categories Use calculators Pin favorites
97 formulas
Formula of the DayData & Dropdowns

Dynamic Dropdown Source

Dropdown list that grows as you add data

=OFFSET(A1,0,0,COUNTA(A:A),1)

Creates a range that auto-extends with your data. New entries appear in the dropdown automatically.

E
Aging & Status

Invoice Aging Buckets

Classify invoices as Current / 30 / 60 / 90+ days overdue

=IF(TODAY()-B2>90,"90+ Days",IF(TODAY()-B2>60,"60 Days",IF(TODAY()-B2>30,"30 Days","Current")))
ESL
Adv
Aging & Status

Payment Status Flag

Flag invoices as Current, Late, or Very Late

=IF(TODAY()-B2>60,"Very Late",IF(TODAY()-B2>30,"Late","Current"))
ESL
Int
Aging & Status

Late Fee Calculation

Percentage-based late fee for overdue invoices

=IF(TODAY()-B2>30,A2*0.015,0)
ESL
Beg
Aging & Status

Days Outstanding

Calculate exact days since the invoice date

=TODAY()-B2
ESL
Beg
Aging & Status

Overdue Percentage

What percentage of items are overdue

=COUNTIF(A:A,"Overdue")/COUNTA(A:A)
ESL
Beg
Lookups

VLOOKUP with Error Handling

Look up from another sheet, "Not Found" on failure

=IFERROR(VLOOKUP(A2,Sheet2!A:B,2,FALSE),"Not Found")
ESL
Int
Lookups

INDEX-MATCH (Better VLOOKUP)

Flexible two-way lookup, works in any direction

=INDEX(Sheet2!B:B,MATCH(A2,Sheet2!A:A,0))
ESL
Int
Lookups

XLOOKUP (Modern Lookup)

The modern VLOOKUP replacement—simpler, more powerful

=XLOOKUP(A2,Sheet2!A:A,Sheet2!B:B,"Not Found")
ES
Beg
Lookups

VLOOKUP with Wildcard

Find a partial match using * wildcards

=VLOOKUP("*"&A2&"*",B:C,2,FALSE)
ES
Beg
Lookups

Reference a Named Range

Dynamically reference a named range from a cell value

=SUM(INDIRECT(A1))
ESL
Int
Conditional Totals

SUMIFS — Multi-Criteria Sum

Sum amounts matching multiple conditions

=SUMIFS(C:C,A:A,"Sales",B:B,">1000")
ESL
Beg
Conditional Totals

COUNTIFS — Multi-Criteria Count

Count rows matching multiple conditions

=COUNTIFS(A:A,"Overdue",B:B,">="&TODAY()-30)
ESL
Beg
Conditional Totals

Revenue by Quarter

Sum revenue within a date range (e.g., Q1 2024)

=SUMIFS(C:C,B:B,">="&DATE(2024,1,1),B:B,"<"&DATE(2024,4,1))
ESL
Int
Conditional Totals

Sum Across Multiple Sheets

Add up the same cell across worksheets

=SUM(Jan:Dec!B2)
E
Beg
Conditional Totals

AVERAGEIFS — Conditional Average

Average values meeting multiple criteria

=AVERAGEIFS(C:C,A:A,"Sales",B:B,">0")
ESL
Beg
Conditional Totals

SUMPRODUCT — Weighted Calculation

Multiply corresponding values and sum the results

=SUMPRODUCT(A2:A10,B2:B10)
ESL
Beg
Dates

End of Month

Last day of a given month, or offset by N months

=EOMONTH(A2,0)
ESL
Beg
Dates

Working Days Between Dates

Count business days (excludes weekends)

=NETWORKDAYS(A2,B2)
ESL
Beg
Dates

Format Date as Text

Display a date as "Jan 15, 2024"

=TEXT(A2,"MMM DD, YYYY")
ES
Beg
Dates

Fiscal Quarter from Date

Determine which quarter (Q1-Q4) a date falls in

="Q"&ROUNDUP(MONTH(A2)/3,0)
ESL
Beg
Dates

Add or Subtract Months

Shift a date forward or backward by months

=EDATE(A2,3)
ESL
Beg
Dates

Payment Due Date (Net 30)

When is payment due based on invoice date

=A2+30
ESL
Beg
Dates

Calculate Age / Time Elapsed

Years, months, or days between two dates

=DATEDIF(A2,TODAY(),"Y")
ES
Beg
Financial

Round to Cents

Round to exactly 2 decimal places

=ROUND(A2*B2,2)
ESL
Beg
Financial

Monthly Loan Payment

Monthly payment for a loan

=PMT(B2/12,C2*12,-A2)
ESL
Beg
Financial

Future Value of Investment

What an investment will be worth

=FV(B2/12,C2*12,-A2)
ESL
Beg
Financial

Straight-Line Depreciation

Annual depreciation for an asset

=SLN(A2,B2,C2)
ESL
Beg
Financial

Percentage Change

Percent increase or decrease between values

=(B2-A2)/A2
ESL
Beg
Data Cleanup

Combine Text (First + Last Name)

Join cell values with a separator

=A2&" "&B2
ESL
Beg
Data Cleanup

Remove Extra Spaces

Clean up leading, trailing, and double spaces

=TRIM(A2)
ESL
Beg
Data Cleanup

Find and Replace in Cells

Replace specific text within a cell

=SUBSTITUTE(A2,"Inc.","Incorporated")
ESL
Beg
Data Cleanup

Capitalize Each Word

Convert to proper case

=PROPER(A2)
ESL
Beg
Data Cleanup

Join Range with Delimiter

Combine a range into one cell with separator

=TEXTJOIN(", ",TRUE,A2:A10)
ES
Beg
Data Cleanup

Full Cleanup (CLEAN + TRIM)

Remove non-printable characters AND extra spaces

=TRIM(CLEAN(A2))
ESL
Int
Error Handling

Handle Division by Zero

Prevent #DIV/0! with a fallback

=IFERROR(A2/B2,0)
ESL
Beg
Error Handling

Check if Cell is Blank

Different result for empty vs filled cells

=IF(ISBLANK(A2),"Missing",A2)
ESL
Int
Error Handling

Handle #N/A Specifically

Catch only #N/A errors, let others through

=IFNA(VLOOKUP(A2,B:C,2,FALSE),"Not in list")
ES
Int
Combinations

Safe INDEX-MATCH

Bulletproof lookup: INDEX-MATCH + IFERROR

=IFERROR(INDEX(Sheet2!B:B,MATCH(A2,Sheet2!A:A,0)),"Not Found")
ESL
Adv
Combinations

IF with AND (All Must Match)

Check that ALL conditions are true

=IF(AND(A2>1000,B2="Active"),"Priority","Normal")
ESL
Int
Combinations

IF with OR (Any Can Match)

Take action if ANY condition is true

=IF(OR(A2="Late",A2="Very Late"),"Follow Up","OK")
ESL
Int
Combinations

SUMIF + Dropdown Selection

Sum based on a dropdown selection

=SUMIF(A:A,E1,C:C)
ESL
Beg
Combinations

Cascading Lookup (Try Multiple Sources)

Look in Sheet1, then Sheet2, then default

=IFERROR(VLOOKUP(A2,Sheet1!A:B,2,FALSE),IFERROR(VLOOKUP(A2,Sheet2!A:B,2,FALSE),"Not Found"))
ESL
Adv
Combinations

XLOOKUP with Match Modes

Modern lookup with exact or approximate matching

=XLOOKUP(A2,Sheet2!A:A,Sheet2!B:B,"Not Found",0)
ES
Beg
Data & Dropdowns

Interactive Report with Dropdown

User picks a category, sum updates automatically

=SUMIF(A:A,E1,C:C)
ESL
Beg
Data & Dropdowns

Sum a Named Range

Use meaningful names instead of cell references

=SUM(Revenue)
ESL
Beg
Data & Dropdowns

Dynamic Dropdown Source

Dropdown list that grows as you add data

=OFFSET(A1,0,0,COUNTA(A:A),1)
E
Beg
Data & Dropdowns

What-If Analysis (Data Table)

See how changing one input affects results

=A2*$B$1
E
Beg
Reconciliation

Find Missing Items Between Lists

Items in List A that are not in List B

=FILTER(A2:A100,COUNTIF(B2:B100,A2:A100)=0)
ES
Int
Reconciliation

Match Amounts Across Lists

Pull amounts from a second list to compare side-by-side

=XLOOKUP(A2,Sheet2!A:A,Sheet2!B:B,"Missing")
ES
Beg
Reconciliation

Flag Over/Under Payments

Classify each line as Match, Overpaid, or Short

=IF(C2="Missing","",IF(B2=C2,"Match",IF(B2>C2,"Overpaid","Short")))
ESL
Adv
Reconciliation

Check If Item Exists in Another List

Simple yes/no existence check

=IF(COUNTIF(Sheet2!A:A,A2)>0,"Found","Missing")
ESL
Beg
Reconciliation

Reverse Reconciliation Check

Check the other direction — items they have that we don't

=XLOOKUP(A2,'Our List'!A:A,'Our List'!B:B,"Not in our records")
ES
Int
Dynamic Arrays

Extract Unique Values

Remove duplicates from a list automatically

=UNIQUE(A2:A100)
ES
Int
Dynamic Arrays

Sort a Range Dynamically

Auto-sorted list that updates when source changes

=SORT(A2:A100)
ES
Int
Dynamic Arrays

Filter Rows by Condition

SQL-style WHERE clause for your data

=FILTER(A2:C100,B2:B100>1000,"No results")
ES
Int
Dynamic Arrays

Clean Dropdown List

Alphabetized, deduplicated list for Data Validation

=SORT(UNIQUE(A2:A100))
ES
Int
Dynamic Arrays

Self-Cleaning Data Engine

Filter + deduplicate + sort in one formula

=SORTBY(UNIQUE(FILTER(A2:A100,B2:B100=E1)),UNIQUE(FILTER(A2:A100,B2:B100=E1)))
ES
Adv
Tax & Brackets

Tax Bracket Lookup

Find which tax bracket an income falls into

=XLOOKUP(B2,TaxTable[Lower],TaxTable[Rate],,-1)
ES
Beg
Tax & Brackets

Progressive Tax Calculation

Base tax + marginal rate on amount over bracket floor

=VLOOKUP(B2,TaxTable,3,TRUE)+(B2-VLOOKUP(B2,TaxTable,1,TRUE))*VLOOKUP(B2,TaxTable,2,TRUE)
ESL
Beg
Tax & Brackets

Sales Tax Calculation

Calculate sales tax rounded to the penny

=ROUND(A2*B2,2)
ESL
Beg
Tax & Brackets

1099 Threshold Flag

Flag vendors paid $600+ for 1099 reporting

=IF(SUMIF(A:A,A2,C:C)>=600,"Issue 1099","")
ESL
Beg
Tax & Brackets

Effective Tax Rate

Actual average rate paid vs marginal bracket rate

=IFERROR(D2/B2,0)
ESL
Beg
Running Totals

Running Total (Cumulative Sum)

Continuously growing sum down a column

=SUM($B$2:B2)
ESL
Beg
Running Totals

Running Total with Group Reset

Resets when the category changes

=IF(A2=A1,C1+B2,B2)
ESL
Beg
Running Totals

Cumulative Sum by Category

Group-aware running total that works unsorted

=SUMIFS($C$2:C2,$A$2:A2,A2)
ESL
Beg
Running Totals

Year-to-Date Total

Sum from January 1 through today, auto-updating

=SUMIFS(C:C,B:B,">="&DATE(YEAR(TODAY()),1,1),B:B,"<="&TODAY())
ESL
Int
Running Totals

Quarter-to-Date Total

Sum from quarter start through today

=SUMIFS(C:C,B:B,">="&DATE(YEAR(TODAY()),CEILING(MONTH(TODAY())-1,3)+1,1),B:B,"<="&TODAY())
ESL
Int
Payroll

Overtime Hours (Weekly)

Hours over 40 in a workweek

=IF(E2>40,E2-40,0)
ESL
Beg
Payroll

Overtime Hours (Daily)

Hours over 8 in a single day

=IF(E2>8,E2-8,0)
ESL
Beg
Payroll

Overtime Pay Calculation

Regular pay + OT at 1.5x in one formula

=(MIN(40,E2)*F2)+(IF(E2>40,E2-40,0)*F2*1.5)
ESL
Beg
Payroll

Convert Time to Decimal Hours

Turn 8:30 into 8.5 for payroll math

=(C2-B2)*24
ESL
Beg
Payroll

Gross Pay with Overtime

Single formula for total gross pay

=IF(G2>40,(40*F2)+((G2-40)*F2*1.5),G2*F2)
ESL
Beg
Duplicates

Flag Duplicate Values

Mark ALL occurrences of duplicated values

=IF(COUNTIF(A:A,A2)>1,"Duplicate","")
ESL
Beg
Duplicates

Flag Only Repeat Occurrences

Mark 2nd, 3rd, etc. but not the first instance

=IF(COUNTIF($A$2:A2,A2)>1,"Duplicate","")
ESL
Beg
Duplicates

Count Occurrences

How many times does each value appear?

=COUNTIF(A:A,A2)
ESL
Beg
Duplicates

Extract Values Appearing Once

List items that have NO duplicates

=FILTER(A2:A100,COUNTIF(A2:A100,A2:A100)=1)
ES
Int
Duplicates

Cross-Column Duplicate Check

Does this value also exist in another column?

=IF(COUNTIF(B:B,A2)>0,"Also in Column B","Unique to A")
ESL
Int
Period Compare

Current Month Total

Sum for the current calendar month, auto-updating

=SUMIFS(C:C,B:B,">="&DATE(YEAR(TODAY()),MONTH(TODAY()),1),B:B,"<"&DATE(YEAR(TODAY()),MONTH(TODAY())+1,1))
ESL
Int
Period Compare

Month-over-Month % Change

Percentage change from last month to this month

=IFERROR((E2-D2)/D2,0)
ESL
Beg
Period Compare

Same Month Last Year

Total for this month one year ago

=SUMIFS(C:C,B:B,">="&DATE(YEAR(TODAY())-1,MONTH(TODAY()),1),B:B,"<"&DATE(YEAR(TODAY())-1,MONTH(TODAY())+1,1))
ESL
Int
Period Compare

Quarter-over-Quarter Delta

Difference between this quarter and last quarter

=SUMIFS(C:C,B:B,">="&DATE(2024,4,1),B:B,"<"&DATE(2024,7,1))-SUMIFS(C:C,B:B,">="&DATE(2024,1,1),B:B,"<"&DATE(2024,4,1))
ESL
Beg
Period Compare

Dynamic Current Month Sum

Uses EOMONTH for precise month boundaries

=SUMIFS(C:C,B:B,">="&EOMONTH(TODAY(),-1)+1,B:B,"<="&EOMONTH(TODAY(),0))
ESL
Int
Formatting

Negatives in Parentheses

Accounting-standard display for negative numbers

=IF(A2<0,"("&TEXT(ABS(A2),"#,##0.00")&")",TEXT(A2,"#,##0.00"))
ESL
Beg
Formatting

Abbreviate to Thousands (K)

Show 1,500,000 as 1,500.0K

=TEXT(A2/1000,"#,##0.0")&"K"
ESL
Beg
Formatting

Abbreviate to Millions (M)

Show 4,200,000 as 4.2M

=TEXT(A2/1000000,"#,##0.0")&"M"
ESL
Beg
Formatting

Dynamic Quarter Label

Generate "Q1 FY2024" from any date

="Q"&ROUNDUP(MONTH(A2)/3,0)&" FY"&YEAR(A2)
ESL
Beg
Formatting

Suppress Zeros (Show Blank)

Hide zero values for cleaner reports

=IF(A2=0,"",A2)
ESL
Beg
Rounding

ROUND vs ROUNDUP vs ROUNDDOWN

Three rounding behaviors compared

=ROUND(A2,2)
ESL
Beg
Rounding

Round Lines Then Sum

Round each line item first, then total — audit-safe

=SUMPRODUCT(ROUND(A2:A10*B2:B10,2))
ESL
Int
Rounding

Sum Then Round

Sum raw values, round only the final total

=ROUND(SUM(C2:C100),2)
ESL
Int
Rounding

Round to Nearest Increment

Round to nearest 5, 10, 25, etc.

=MROUND(A2,0.05)
ESL
Beg
Rounding

Fix Penny Discrepancy

Assign the rounding remainder to one line

=B2-SUM(C3:C10)
ESL
Beg
Bank Rec

Outstanding Checks Total

Sum of checks written but not yet cleared the bank

=SUMIF(D:D,"",C:C)
ESL
Beg
Bank Rec

Cleared Items Total

Sum of items that have cleared the bank

=SUMIF(D:D,"<>",C:C)
ESL
Beg
Bank Rec

Adjusted Book Balance

Starting balance + deposits - checks - fees

=B1+SUMIF(A:A,"Deposit",C:C)-SUMIF(A:A,"Check",C:C)-SUMIF(A:A,"Fee",C:C)
ESL
Beg
Bank Rec

Bank Rec Variance

Difference between bank and book — should be zero

=E2-F2
ESL
Beg
Bank Rec

Deposits in Transit

Recorded in books but not yet on bank statement

=SUMIFS(C:C,A:A,"Deposit",D:D,"")
ESL
Beg

Command Palette

Search formulas, navigate tabs, or copy to clipboard