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.
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
| Column | Type | Worked out as |
|---|---|---|
| Goal | text | |
| Category | choice (list) | |
| Target | currency | |
| Saving Since | date | |
| Want It By | date | |
| Priority | choice (list) | |
| In The Pot | currency | IF(ISBLANK([goal_name]),"",SUMIF([Contributions!goal],[goal_name],[Contributions!amount])) |
| Still To Save | currency | IF(OR(ISBLANK([goal_name]),ISBLANK([target_amount])),"",MAX(0,[target_amount]-SUMIF([Contributions!goal],[goal_name],[Contributions!amount]))) |
| Percent There | percent | IF(OR(ISBLANK([goal_name]),ISBLANK([target_amount])),"",IFERROR(SUMIF([Contributions!goal],[goal_name],[Contributions!amount])/[target_amount],0)) |
| Percent Expected By Now | percent | IF(OR(ISBLANK([start_date]),ISBLANK([target_date])),"",MIN(1,MAX(0,IFERROR((TODAY()-[start_date])/([target_date]-[start_date]),0)))) |
| Days Left | number | IF(ISBLANK([target_date]),"",[target_date]-TODAY()) |
| Needed Per Month | currency | IF(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 Track | text | IF(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"))) |
| Notes | text |
Contributions
| Column | Type | Worked out as |
|---|---|---|
| Date Paid In | date | |
| Goal | choice (from Goals › goal_name) | |
| Amount In | currency | |
| How | choice (list) | |
| Month | text | IF(ISBLANK([date]),"",TEXT([date],"MMM YYYY")) |
| Note | text |
Summary
| Measure | Worked out as |
|---|---|
| Number of goals | COUNTA([Goals!goal_name]) |
| Total of all targets | SUM([Goals!target_amount]) |
| Total saved across all pots | SUM([Contributions!amount]) |
| Still to save in total | MAX(0,SUM([Goals!target_amount])-SUM([Contributions!amount])) |
| Percent there overall | IFERROR(SUM([Contributions!amount])/SUM([Goals!target_amount]),0) |
| Goals on track | COUNTIF([Goals!status],"On Track") |
| Goals behind | COUNTIF([Goals!status],"Behind") |
| Goals reached in full | COUNTIF([Goals!status],"Complete") |
| Paid in this month | SUMIFS([Contributions!amount],[Contributions!date],">="&DATE(YEAR(TODAY()),MONTH(TODAY()),1),[Contributions!date],"<="&EOMONTH(TODAY(),0)) |
| Paid in this year | SUMIFS([Contributions!amount],[Contributions!date],">="&DATE(YEAR(TODAY()),1,1),[Contributions!date],"<="&DATE(YEAR(TODAY()),12,31)) |
| Average amount per payment in | IFERROR(SUM([Contributions!amount])/COUNT([Contributions!amount]),0) |
| Needed per month across every goal | SUM([Goals!monthly_needed]) |
| Biggest single pot | MAX([Goals!saved]) |
| Next target date coming up | IFERROR(MIN([Goals!target_date]),"") |
| Last payment in | IFERROR(MAX([Contributions!date]),"") |






