BR
BankStatementReader

How to Build and Use an Expense Tracking Spreadsheet

By BankStatementReader Team ·

A spreadsheet is one of the simplest ways to see where your money goes. You do not need an app or a subscription — a blank workbook in Excel, Google Sheets, or any spreadsheet program is enough. This guide walks through how to set up an expense tracking spreadsheet from scratch and how to keep it useful month after month, including how to fill it straight from your bank statement rather than typing every line by hand.

Why a spreadsheet works for expense tracking

The appeal of tracking expenses in a spreadsheet is control. You decide the categories, the columns, and how the totals are calculated. Nothing is hidden behind a vendor's logic. When you want to answer a question — how much went to groceries last month, or whether subscriptions are creeping up — the data is right there and you can slice it however you like.

The trade-off is that a spreadsheet does not fill itself. The structure below is built to keep the manual work small and the answers easy to reach.

Step 1: Set up your columns

Start with a single sheet and put these headers across the first row. Five columns cover almost every personal or small-business need:

  • Date — when the transaction happened. Use a consistent format (for example, YYYY-MM-DD) so the column sorts correctly.
  • Payee — who you paid or who paid you. This is usually the merchant or description from your statement.
  • Category — the bucket the spend belongs to, such as Groceries, Rent, Transport, Utilities, Dining, or Subscriptions.
  • Amount — the value of the transaction. Make sure each value is stored as a number rather than text; applying a currency format to a real number is fine and will still add up, but values pasted or imported as text (often with stray symbols or spaces) will not sum. Use negative numbers for money out and positive for money in, or split into two columns if you prefer.
  • Notes — anything you want to remember: a reimbursable expense, a one-off purchase, or which trip it relates to.

That is the whole foundation. Resist the urge to add columns you will not maintain — a tracker you keep updated beats an elaborate one you abandon.

Step 2: Decide your categories first

The Category column is what makes totals meaningful, so settle on a short list before you start entering rows. A dozen categories is plenty for most people. Keeping the list small means every transaction has an obvious home and your monthly totals stay readable.

To avoid typos that split one category into several, set up a dropdown. In most spreadsheet programs this is under Data → Data validation, where you point the Category column at your list of allowed values. Now every row uses the exact same spelling, which matters a lot when you total things up later.

Step 3: Populate it from your bank statement

Typing transactions in one at a time is the slow path. Your bank already has every date, payee, and amount on record — the goal is to move those rows into your sheet with as little re-keying as possible.

If your statement is a PDF, you first need it as structured data. One option is to run it through the free bank statement converter, which reads the statement and exports rows to Excel or CSV. From there you can copy the columns you need straight into your tracker. For the full set of options — including manual entry and copy-paste — see how to convert a bank statement to Excel.

Once you have the converted rows, the mapping is usually direct:

  1. Copy the statement's date column into your Date column.
  2. Copy the description or merchant field into Payee.
  3. Copy the transaction value into Amount.
  4. Fill in Category using your dropdown — this is the only column the bank cannot give you.
  5. Add anything worth remembering in Notes.

Doing it this way, most of the data comes across in a single paste, leaving categorizing as the main thing left to do by hand. If your payees are consistent, you can reduce that work too: sort by the Payee column so identical merchants group together, then categorize each block at once.

Step 4: Total your spending by category

Raw rows are not insight — the totals are. Two approaches give you spending by category.

The quick formula approach uses SUMIF. In a small summary area, list each category in one column and, beside it, add a formula that sums the Amount column wherever the Category matches. The structure is:

=SUMIF(category_column, "Groceries", amount_column)

Copy that down for each category and you have a running total per bucket that updates as you add rows.

The more flexible approach is a pivot table. Select your data, insert a pivot table, put Category in the rows area and Amount in the values area set to Sum. The result is a compact table of every category and its total, and you can add Date to group the same view by month. Pivot tables do not update on their own: after adding rows you usually have to refresh the pivot (in Excel, right-click the pivot and choose Refresh), and you also need the source range to cover the new rows. Basing the pivot on a defined table (Excel) or a whole-column range helps it pick up new transactions when you refresh.

Step 5: Keep it current

A tracker is only as good as its last update. Pick a rhythm that you will actually follow — many people update once a month when the statement arrives, converting the new PDF and pasting the fresh rows in. Because the categories and totals are already set up, each monthly update is mostly copy, paste, and categorize.

Over a few months the same sheet becomes a record you can compare against itself: spot the months that ran high, see which category drifted, and decide what to change. That historical view is the real payoff of tracking expenses in a spreadsheet, and it costs nothing beyond a few minutes each month.

A note on what this is

This guide is a how-to for building your own tracker, not a download. The point is that the structure is simple enough to recreate in any spreadsheet program in a few minutes — five columns, a category list, and a total. Set it up once, feed it from your converted statement rows, and let the totals do the work.

Related reading