Outlay — expense tracker

Pro workbook: Log, Monthly, Limits, Setup, Formulas. Sample data, real formulas.

Expense logMonthSeptember 2026
One row per payment. Category and method are dropdowns; the totals on the right add themselves up.Set on the Setup sheet
DateDescriptionCategoryAmountMethod
2026-09-01RentHousing1,400.00TransferCategoryThis monthShare
2026-09-02Weekly shopGroceries118.40CardGroceries530.7021.8%
2026-09-03Bus passTransport62.00CardEating out86.303.5%
2026-09-04Lunch with M.Eating out24.50CardTransport81.403.3%
2026-09-05ElectricityUtilities91.20TransferHousing1,400.0057.5%
2026-09-06StreamingSubscriptions12.99CardUtilities136.205.6%
2026-09-08PharmacyHealth18.30CashHealth18.300.8%
2026-09-09Weekly shopGroceries132.15CardClothing89.993.7%
2026-09-10CinemaEntertainment28.00CardEntertainment28.001.2%
2026-09-12DinnerEating out61.80CardSubscriptions22.980.9%
2026-09-14TrainersClothing89.99CardOther40.001.6%
2026-09-16Weekly shopGroceries124.60CardTotal2,433.87
2026-09-18TaxiTransport19.40CardEntries this month18
2026-09-20InternetUtilities45.00TransferBiggest categoryHousing
2026-09-23Weekly shopGroceries139.05Card
2026-09-25Coffee beansGroceries16.50CashRows outside the chosen month are greyed; they still count on the Monthly sheet.
2026-09-27GiftOther40.00CardFormulas read rows 5–1000. Logging more? Change 1000 in the panel formulas.
2026-09-28Music appSubscriptions9.99Card
2026-08-01RentHousing1,400.00Transfer
2026-08-06Weekly shopGroceries127.30Card
2026-08-13Weekly shopGroceries121.80Card
2026-08-15Holiday dinnerEating out142.00Card
2026-08-20Weekly shopGroceries133.45Card
2026-08-27Weekly shopGroceries119.90Card
2026-07-01RentHousing1,400.00Transfer
2026-07-10Weekly shopGroceries128.20Card
2026-07-22ConcertEntertainment75.00Card
Month by category
Twelve months back from the Setup month. Every cell is a SUMIFS on the Log.
MonthGroceriesEating outTransportHousingUtilitiesHealthClothingEntertainmentSubscriptionsOtherTotal
Oct 202500000000000
Nov 202500000000000
Dec 202500000000000
Jan 202600000000000
Feb 202600000000000
Mar 202600000000000
Apr 202600000000000
May 202600000000000
Jun 202600000000000
Jul 2026128001,40000075001,603
Aug 202650214201,4000000002,044
Sep 202653186811,40013618902823402,434
Average387114811,40013618905223402,027
This month against the limits
Spent so far, the limit from Setup, what's left, and how far through the month you are.
MonthSeptember 2026Days in month30
CategoryLimitSpentLeftUsed
Groceries500.00530.70-30.70106.1%
Eating out150.0086.3063.7057.5%
Transport200.0081.40118.6040.7%
Housing1,400.001,400.000.00100.0%
Utilities180.00136.2043.8075.7%
Health100.0018.3081.7018.3%
Clothing80.0089.99-9.99112.5%
Entertainment120.0028.0092.0023.3%
Subscriptions60.0022.9837.0238.3%
Other100.0040.0060.0040.0%
Total2,890.002,433.87456.1384.2%
Setup
The month to report on, categories with monthly limits, and payment methods.
Month (first day)2026-09-01
CategoryMonthly limitMethods
Groceries500.00Card
Eating out150.00Cash
Transport200.00Transfer
Housing1,400.00
Utilities180.00
Health100.00
Clothing80.00
Entertainment120.00
Subscriptions60.00
Other100.00
How the formulas work
Every formula in this workbook, in plain words. Nothing is hidden and nothing needs a macro. Formulas are shown without the leading = sign.
WhereFormulaWhat it does
Log · This month (panel)SUMIFS($D$5:$D$1000, $C$5:$C$1000, $H6, $A$5:$A$1000, ">="&Setup!$B$3, $A$5:$A$1000, "<="&EOMONTH(Setup!$B$3,0))Adds amounts whose category matches the panel row and whose date is inside the Setup month. EOMONTH(date,0) is the month's last day.
Log · ShareIF($I$16=0,0,I6/$I$16)This category as a share of the month's total; the IF avoids #DIV/0! on an empty month.
Log · Entries this monthCOUNTIFS($A$5:$A$1000, ">="&Setup!$B$3, $A$5:$A$1000, "<="&EOMONTH(Setup!$B$3,0))How many rows fall in the month.
Log · Biggest categoryINDEX(H6:H15, MATCH(MAX(I6:I15), I6:I15, 0))MAX finds the largest total, MATCH finds its row, INDEX returns the name beside it.
Log · grey rowsConditional format: =AND($A5<>"", OR($A5<Setup!$B$3, $A5>EOMONTH(Setup!$B$3,0)))Rows outside the Setup month are greyed. They still count on the Monthly sheet.
Monthly · MonthEOMONTH(Setup!$B$3,-12)+1First day of the month eleven months before the Setup month; each row steps forward one month.
Monthly · cellSUMIFS(Log!$D$5:$D$1000, Log!$C$5:$C$1000, B$4, Log!$A$5:$A$1000, ">="&$A5, Log!$A$5:$A$1000, "<="&EOMONTH($A5,0))Same SUMIFS as the panel, with the category taken from the column header and the month from the row. The header cells read Setup, so renaming a category updates the grid.
Monthly · AverageIFERROR(AVERAGEIF(B5:B16,">0"),0)Average of the months that had spending, so empty months don't drag it down.
Limits · LeftB6-C6Limit minus spent. Red when negative — you're over.
Limits · UsedIF(B6=0,0,C6/B6)Spent as a share of the limit; the data bar fills to 100% and the number turns red past it.
Setup · named rangesCats = Setup!$A$6:$A$15, Limits = Setup!$B$6:$B$15, Methods = Setup!$D$6:$D$8The dropdowns on the Log and the headers on Monthly and Limits read these, so every sheet follows a rename.