sheetsmith

Templates › Household money

Savings Goals Tracker

Made for savers with several pots on the go.

A workbook for several savings pots at once: the target for each, what has gone in, how full each pot is and whether the pace is fast enough. The summary carries a chart that redraws itself as you type.

Tabs
3
Columns
20
Fill themselves in
23

£7one payment, yours to keep

  • Opens in Excel, Google Sheets and Numbers
  • Delivered straight away
  • No macros, nothing to install
  • Change it free before you buy

Payment is handled by Stripe. Your card details go to them and never to us. Sales are final, which is why every tab, column and calculation is shown on this page first.

The workbook's summary and the table behind it
A row typed into the real file. Every figure that changes is the spreadsheet's own arithmetic.
The summary page, every figure calculated from the tables
The chart, drawn from the totals in the table beside it
What is inside: the tabs, the columns and what fills itself in
Where you type, and the shaded columns that work themselves out
The guide sheet that opens first and explains the file
Everything included in the download

Everything inside, before you pay

This is the whole design: every tab, every column and how each calculated one is worked out. White cells are yours to fill in; the shaded ones work themselves out and are locked so a formula cannot be overwritten by accident. There is room for 640 rows.

Goals

One row per thing you are saving for, with its target and the date you want it by. The pot, the percentage and the pace fill in themselves. Room for 40 rows.

ColumnTypeWorked out as
Goaltext
Categorychoice (list)
Targetcurrency
Saving Sincedate
Want It Bydate
Prioritychoice (list)
In The PotcurrencyIF(ISBLANK([goal_name]),"",SUMIF([Contributions!goal],[goal_name],[Contributions!amount]))
Still To SavecurrencyIF(OR(ISBLANK([goal_name]),ISBLANK([target_amount])),"",MAX(0,[target_amount]-SUMIF([Contributions!goal],[goal_name],[Contributions!amount])))
Percent TherepercentIF(OR(ISBLANK([goal_name]),ISBLANK([target_amount])),"",IFERROR(SUMIF([Contributions!goal],[goal_name],[Contributions!amount])/[target_amount],0))
Percent Expected By NowpercentIF(OR(ISBLANK([start_date]),ISBLANK([target_date])),"",MIN(1,MAX(0,IFERROR((TODAY()-[start_date])/([target_date]-[start_date]),0))))
Days LeftnumberIF(ISBLANK([target_date]),"",[target_date]-TODAY())
Needed Per MonthcurrencyIF(OR(ISBLANK([target_amount]),ISBLANK([target_date])),"",ROUND(MAX(0,[target_amount]-SUMIF([Contributions!goal],[goal_name],[Contributions!amount]))/MAX(1,ROUNDUP(([target_date]-TODAY())/30.4,0)),2))
On TracktextIF(OR(ISBLANK([goal_name]),ISBLANK([target_amount])),"",IF(SUMIF([Contributions!goal],[goal_name],[Contributions!amount])>=[target_amount],"Complete",IF(IFERROR(SUMIF([Contributions!goal],[goal_name],[Contributions!amount])/[target_amount],0)>=IFERROR((TODAY()-[start_date])/([target_date]-[start_date]),0),"On Track","Behind")))
Notestext

Contributions

Every amount you put in and the date you put it in. Pick the goal from the dropdown so it lands in the right pot. Room for 600 rows.

ColumnTypeWorked out as
Date Paid Indate
Goalchoice (from Goals › goal_name)
Amount Incurrency
Howchoice (list)
MonthtextIF(ISBLANK([date]),"",TEXT([date],"MMM YYYY"))
Notetext

Summary

How the saving is going overall, and how the targets split across categories.

MeasureWorked out as
Number of goalsCOUNTA([Goals!goal_name])
Total of all targetsSUM([Goals!target_amount])
Total saved across all potsSUM([Contributions!amount])
Still to save in totalMAX(0,SUM([Goals!target_amount])-SUM([Contributions!amount]))
Percent there overallIFERROR(SUM([Contributions!amount])/SUM([Goals!target_amount]),0)
Goals on trackCOUNTIF([Goals!status],"On Track")
Goals behindCOUNTIF([Goals!status],"Behind")
Goals reached in fullCOUNTIF([Goals!status],"Complete")
Paid in this monthSUMIFS([Contributions!amount],[Contributions!date],">="&DATE(YEAR(TODAY()),MONTH(TODAY()),1),[Contributions!date],"<="&EOMONTH(TODAY(),0))
Paid in this yearSUMIFS([Contributions!amount],[Contributions!date],">="&DATE(YEAR(TODAY()),1,1),[Contributions!date],"<="&DATE(YEAR(TODAY()),12,31))
Average amount per payment inIFERROR(SUM([Contributions!amount])/COUNT([Contributions!amount]),0)
Needed per month across every goalSUM([Goals!monthly_needed])
Biggest single potMAX([Goals!saved])
Next target date coming upIFERROR(MIN([Goals!target_date]),"")
Last payment inIFERROR(MAX([Contributions!date]),"")