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:

Code
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:

Code
=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:

  1. The category matches the category in A2
  2. 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:

Code
=B2-C2

Positive = under budget. Negative = over budget. Copy down.

For the Total row (row 11):

Code
=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:

Code
=$D2<0

Choose 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%):

Code
=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:

Code
=TEXT(TODAY(),"MMMM YYYY")

F2 — total spent this month:

Code
=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:

Code
=SUM(Budget!B2:B10)

F4 — remaining:

Code
=F3-F2

This 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):

Code
=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

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