Aspire Budgeting

The Aspire Builder's Guide

Build the budget that fits your life

Use Aspire's named ranges to create custom reports, dashboards, and workflows — without disturbing the machinery underneath.

Custom dashboard

Categories tracked

24

Savings runway

4.8 mo

Monthly spendingCustom view

The extension model

How Aspire is designed

Aspire separates the things you create from the structure that keeps the budget working. The rule is simple: build beside the engine, not inside it.

Your workspace

Create freely

Custom tabs, formulas, charts, dashboards, scripts, and metadata.

Extension layer

Connect safely

Documented named ranges that describe the data you need.

Engine room

Leave intact

Core formulas, sheet structure, validation, and internal ranges.

Five-minute setup

Before you build

A clean boundary makes experiments easy to undo and upgrades easier to adopt.

  1. 1

    Duplicate your spreadsheet

    Experiment in a copy until the result is ready.

  2. 2

    Create a custom tab

    Use a recognizable prefix such as “My —” or “Custom —”.

  3. 3

    Keep core tabs unchanged

    Do not add, remove, rename, or reorder their rows or columns.

  4. 4

    Use named ranges

    Connect to documented meaning instead of fixed cell coordinates.

  5. 5

    Know your way back

    Open File → Version history before making a larger change.

Keep custom work off core sheets

Empty-looking cells, unused columns, and space below a table may still be part of Aspire's structure. Put formulas, notes, script output, and extra metadata on a separate custom tab.

The connection points

Named ranges, in plain language

A named range gives a useful part of the spreadsheet a stable label. A formula that asks for userDefCatNames says what it needs; a formula that asks for Configuration!P6:P105 only says where the data happens to live today.

Try this first
=FILTER(userDefCatNames, userDefCatNames<>"")

Paste that formula into an empty cell on a custom tab. It returns every configured user category and removes unused slots.

Why some ranges use _

Aspire's transaction and transfer names store a range address as text. The built-in _ named function resolves that pointer into the actual cells.

Resolve a pointer
=_(trxDates)

Use _ with the documented trx* and xfr* pointers. Do not wrap direct ranges such as userDefCatNames. Because _ uses INDIRECT, reuse resolved data in one formula where practical.

Know the boundary

Safe customization map

If an idea changes the shape of a core tab, reproduce the idea on a custom tab instead.

ActionStatus
Create a separate custom tabRecommended
Reference a documented named rangeRecommended
Create charts, pivot tables, and formulas on a custom tabRecommended
Edit ordinary Aspire input fieldsSafe
Reference an undocumented cell coordinateFragile
Add custom columns or metadata to a core tabUnsupported
Add content below a core-sheet tableUnsupported
Insert, remove, rename, or reorder core rows, columns, or tabsUnsupported
Replace core formulas or rename named rangesUnsupported

Reference

Named-range reference

Stable ranges are supported, long-lived connection points. Their implementation may change between template versions, but their documented names and meaning will remain compatible.

Categories and groups

Direct ranges with a fixed, row-aligned shape. Filter out blank rows before presenting the data.

userDefCatNamesStable

The names of 100 user-defined category slots.

Shape
100 rows × 1 column
Use
Use directly
userDefCatGroupsStable

The group assigned to each category slot.

Shape
100 rows × 1 column
Use
Row-aligned with userDefCatNames
userDefCatAmountsStable

The default monthly amount for each category slot.

Shape
100 rows × 1 column
Use
Numeric values; row-aligned
userDefCatGoalsStable

The goal for each category slot.

Shape
100 rows × 1 column
Use
Numeric values; row-aligned
allCatNamesStable

All user categories plus Available to Budget.

Shape
101 rows × 1 column
Use
Filter blanks; do not row-align with userDefCat*

Accounts

Configured account names for selectors, filters, and account-level summaries.

bankAcctsStable

Configured bank-account names.

Shape
30 rows × 1 column
Use
Use directly; filter blanks
creditCardAcctsStable

Configured credit-card account names.

Shape
15 rows × 1 column
Use
Use directly; filter blanks

Transactions

These names contain text pointers. Resolve them with Aspire’s _ named function before using the data.

trxDatesStable

Transaction dates.

Shape
Expanding data column
Use
=_(trxDates)
trxOutflowsStable

Transaction outflow amounts.

Shape
Expanding data column
Use
=_(trxOutflows)
trxInflowsStable

Transaction inflow amounts.

Shape
Expanding data column
Use
=_(trxInflows)
trxCategoriesStable

Transaction category names.

Shape
Expanding data column
Use
=_(trxCategories)
trxAccountsStable

Transaction account names.

Shape
Expanding data column
Use
=_(trxAccounts)
trxPayeesStable

Transaction payee names.

Shape
Expanding data column
Use
=_(trxPayees)

Category transfers

Transfer-history pointers use the same _ resolver as transaction pointers.

xfrDatesStable

Category-transfer dates.

Shape
Expanding data column
Use
=_(xfrDates)
xfrAmountsStable

Category-transfer amounts.

Shape
Expanding data column
Use
=_(xfrAmounts)
xfrFromCatStable

Source categories.

Shape
Expanding data column
Use
=_(xfrFromCat)
xfrToCatStable

Destination categories.

Shape
Expanding data column
Use
=_(xfrToCat)

Formatting configuration

These single-value names expose display preferences without tying a customization to Configuration tab coordinates.

vSheetCurrencyFormatStable

A sample cell with the workbook currency format.

Shape
1 cell
Use
Read or copy number-format metadata
vSheetDateFormatStable

A sample cell with the workbook date format.

Shape
1 cell
Use
Read or copy number-format metadata
vSidebarCurrencyStable

A value such as USD — US Dollar.

Shape
1 cell
Use
Parse the leading ISO currency code

No public category-balance range yet

Current available amounts are not part of the documented extension layer. Do not copy an internal Dashboard coordinate into a custom formula; request a public range instead.

Build something useful

Starter recipes

Start each recipe in the upper-left cell of a blank custom tab, with enough empty space for the result to expand.

Recipe 1Beginner5 minutes

Category configuration table

Create a clean source table with every configured category, its group, default amount, and goal.

Category configuration table formula
=FILTER(
  {userDefCatNames, userDefCatGroups, userDefCatAmounts, userDefCatGoals},
  userDefCatNames<>""
)

How it works

Because the four ranges share the same 100-row shape, each output row stays aligned. Blank category slots are removed.

Common error

If your locale uses semicolons as separators, replace formula commas with semicolons.

Extension challenge: Build a group summary with a pivot table using this result as its source.

Recipe 2Intermediate10 minutes

Spending by category

Aggregate recorded outflows into a two-column table that is ready for a chart.

Spending by category formula
=QUERY(
  {_(trxCategories), _(trxOutflows)},
  "select Col1, sum(Col2)
   where Col1 is not null and Col2 > 0
   group by Col1
   order by sum(Col2) desc
   label Col1 'Category', sum(Col2) 'Spent'",
  0
)

How it works

The _ named function resolves each text pointer into its expanding transaction column. QUERY then groups and sorts positive outflows.

Common error

A mismatched-array error usually means one pointer was resolved differently. Confirm every transaction range uses the _ wrapper.

Extension challenge: Add _(trxDates) as a third column and a date condition to limit the report to one month.

Recipe 3Intermediate15 minutes

Monthly spending trend

Turn transaction history into a monthly series for a line or column chart.

Monthly spending trend formula
=QUERY(
  {TEXT(_(trxDates), "yyyy-mm"), _(trxOutflows)},
  "select Col1, sum(Col2)
   where Col1 is not null and Col2 > 0
   group by Col1
   order by Col1
   label Col1 'Month', sum(Col2) 'Spent'",
  0
)

How it works

TEXT creates a sortable month key, while QUERY totals every positive outflow in that month. Select the result and insert a chart.

Common error

If dates are stored as text instead of date values, fix the source entries before building the report.

Extension challenge: Add _(trxCategories) and a category condition driven by a dropdown cell.

Good spreadsheet citizenship

Builder principles

Reference meaning, not coordinates

Named ranges survive layout changes better than A1 notation.

Separate source from presentation

Let one clean table feed charts, cards, and summaries.

Expect blank rows and missing matches

Use FILTER, IFNA, and explicit conditions.

Design for change

Categories, accounts, and transaction history will grow.

Use volatile formulas deliberately

Avoid resolving the same large pointer many times.

Keep secrets out of the sheet

Formulas and scripts can be visible to anyone with access.

Make inputs obvious

Visually distinguish cells a person should edit.

Test realistic edge cases

Try an empty budget, renamed categories, and a long transaction history.

Build without fear

Protect and recover

Before

Make a duplicate and name it with the date. Prototype there first.

When something looks wrong

Remove or hide the custom tab, then run Aspire diagnostics to separate a source-data issue from a customization issue.

If the core changed

Restore an earlier version. If the damage is widespread, move to a clean spreadsheet.

What Aspire supports

A clear boundary keeps the core dependable

We support the documented named ranges and Aspire's standard behavior. We cannot debug every custom formula or script, but we can help identify whether an issue begins in Aspire or in a customization.

Structural changes to core sheets are unsupported. That includes adding, removing, renaming, or reordering core rows and columns; adding adjacent transaction metadata; placing custom formulas or notes in unused core cells; and replacing core formulas.

What will you build?

Copy Aspire, try a starter recipe, or tell us which public range would unlock your next report.