The difference between a useful budget tracker and one that gets abandoned: a useful one shows you something you'd otherwise miss. Not just totals — the gap between what you planned to spend and what you actually spent, by category, updated automatically.
This tutorial builds that. You'll have planned vs actual columns for each category, a variance column that shows the gap, conditional formatting that turns red when you're over budget, and a running total for the current month.
---
Step 1: Set Up the Budget Template
Open a new Google Sheet. Create two tabs:
- Log — where you record every transaction
- Budget — the planned vs actual summary
On the Log tab, add these headers:
| A | B | C | D | |---|---|---|---| | Date | Amount | Category | Description |
Format column A as a Date and column B as Currency. Add a dropdown on column C with your budget categories:
Housing, Food, Transport, Subscriptions, Utilities, Healthcare, Personal, Savings, Other---
Step 2: Build the Budget Tab
On the Budget tab, create this structure:
| | A | B | C | D | |--|---|---|---|---| | 1 | Category | Planned | Actual | Variance | | 2 | Housing | | | | | 3 | Food | | | | | 4 | Transport | | | | | 5 | Subscriptions | | | | | 6 | Utilities | | | | | 7 | Healthcare | | | | | 8 | Personal | | | | | 9 | Savings | | | | | 10 | Other | | | | | 11 | Total | | | |
Column A: Your categories — must match the dropdown values in the Log tab exactly.
Column B (Planned): Type your planned monthly budget for each category. These are manual inputs — just type the numbers.
Column C (Actual): This pulls from the Log tab using SUMIFS. In C2:
=SUMIFS(Log!$B:$B, Log!$C:$C, $A2, Log!$A:$A, ">="&DATE(YEAR(TODAY()),MONTH(TODAY()),1), Log!$A:$A, "<"&DATE(YEAR(TODAY()),MONTH(TODAY())+1,1))This sums all amounts in the Log tab where:
- The category matches the category in A2
- The date is within the current calendar month
Copy C2 down through C10. Each row picks up its own category from column A.
Column D (Variance): In D2:
=B2-C2Positive = under budget. Negative = over budget. Copy down.
For the Total row (row 11):
=SUM(B2:B10) =SUM(C2:C10) =SUM(D2:D10)---
Step 3: Add Conditional Formatting for Over-Budget Categories
Select B2:D10 on the Budget tab.
Go to Format > Conditional formatting, choose Custom formula is, and enter:
=$D2<0Choose a red fill color. This highlights the entire row when variance is negative (over budget).
Add a second rule for rows close to budget (within 10%):
=AND($D2>=0, $D2<$B2*0.1)Choose a yellow fill. This flags categories where you're within 10% of your limit — a warning before going over.
---
Step 4: Add a Current Month Summary to the Log Tab
On the Log tab, add a small summary box. In a spare area (say, column F):
F1 — current month label:
=TEXT(TODAY(),"MMMM YYYY")F2 — total spent this month:
=SUMIFS($B:$B, $A:$A, ">="&DATE(YEAR(TODAY()),MONTH(TODAY()),1), $A:$A, "<"&DATE(YEAR(TODAY()),MONTH(TODAY())+1,1))F3 — total budget for this month:
=SUM(Budget!B2:B10)F4 — remaining:
=F3-F2This gives you a quick three-number summary at the top of the log: what you've spent, your total budget, and what's left.
---
Step 5: Track Multiple Months
To extend the Budget tab across months, add columns for each month:
| | A | B | C | D | E | F | |--|---|---|---|---|---|---| | 1 | Category | Jan Budget | Jan Actual | Feb Budget | Feb Actual | ... |
Change the SUMIFS formulas to use fixed dates for each month instead of TODAY():
January actual for Housing (in C2):
=SUMIFS(Log!$B:$B, Log!$C:$C, $A2, Log!$A:$A, ">="&DATE(2026,1,1), Log!$A:$A, "<"&DATE(2026,2,1))This lets you track trends — which categories consistently run over, which months are expensive — without changing anything manually.
---
Common Problems
Actual totals are 0 or wrong
Usually a date format issue. Check that Log tab dates are real dates (right-aligned, not left-aligned text). Select the Date column and go to Format > Number > Date.
Category totals don't match what I logged
The category names in the Budget tab must exactly match the dropdown values in the Log tab. Even a single character difference breaks the match. Using a dropdown in the Log tab prevents typos.
Variance shows 0 for planned categories with no spending
That's correct — if you budgeted $200 for transport and spent $0, variance is $200 (under budget). The formula is Planned - Actual, so $200 - $0 = $200.
---
What You Have Now
- A log that records every transaction with date, amount, category, and description
- A budget summary that shows planned vs actual and variance per category, auto-updated for the current month
- Conditional formatting that highlights over-budget rows in red and near-budget rows in yellow
- A running summary at the top of the log: spent, budgeted, remaining
---
What to Build on Top of This
- Add charts — insert a bar chart on the Budget tab showing planned vs actual per category. Updates automatically as you log transactions.
- Connect to a Google Form — log expenses from your phone by submitting a form. Responses feed directly into the Log tab. How to Automatically Create Documents from Google Form Responses
- Weekly summary email — How to Track Expenses in Google Sheets includes a script for emailing a weekly summary
Don't want to set this up yourself? Describe your categories and budget amounts and it'll be configured for your sheet. Get it installed