SpreadSheet Sage

Why do accountants make good lovers? They're great with figures.

Tip of the Day: EOMONTH(TODAY(),0) always gives you the last day of the current month

Your Excel Formula Cheat Sheet

Describe what you need, get the right formula

97+Formulas
20Categories
14Calculators
12Error Fixes

Why do accountants make good lovers? They're great with figures.

Welcome to SpreadSheet Sage

Search formulas Browse categories Use calculators Pin favorites
97 formulas
Formula of the DayTax & Brackets

Tax Bracket Lookup

Find which tax bracket an income falls into

=XLOOKUP(B2,TaxTable[Lower],TaxTable[Rate],,-1)

Uses XLOOKUP with approximate match (mode -1) to find which tax bracket the income falls into and return the corresponding rate.

ES
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