userDefCatNamesStableThe names of 100 user-defined category slots.
- Shape
- 100 rows × 1 column
- Use
Use directly
The Aspire Builder's Guide
Use Aspire's named ranges to create custom reports, dashboards, and workflows — without disturbing the machinery underneath.
Categories tracked
24
Savings runway
4.8 mo
The extension model
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
Custom tabs, formulas, charts, dashboards, scripts, and metadata.
Extension layer
Documented named ranges that describe the data you need.
Engine room
Core formulas, sheet structure, validation, and internal ranges.
Five-minute setup
A clean boundary makes experiments easy to undo and upgrades easier to adopt.
Experiment in a copy until the result is ready.
Use a recognizable prefix such as “My —” or “Custom —”.
Do not add, remove, rename, or reorder their rows or columns.
Connect to documented meaning instead of fixed cell coordinates.
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
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.
=FILTER(userDefCatNames, userDefCatNames<>"")Paste that formula into an empty cell on a custom tab. It returns every configured user category and removes unused slots.
_Aspire's transaction and transfer names store a range address as text. The built-in _ named function resolves that pointer into the actual cells.
=_(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
If an idea changes the shape of a core tab, reproduce the idea on a custom tab instead.
| Action | Status |
|---|---|
| Create a separate custom tab | Recommended |
| Reference a documented named range | Recommended |
| Create charts, pivot tables, and formulas on a custom tab | Recommended |
| Edit ordinary Aspire input fields | Safe |
| Reference an undocumented cell coordinate | Fragile |
| Add custom columns or metadata to a core tab | Unsupported |
| Add content below a core-sheet table | Unsupported |
| Insert, remove, rename, or reorder core rows, columns, or tabs | Unsupported |
| Replace core formulas or rename named ranges | Unsupported |
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.
Direct ranges with a fixed, row-aligned shape. Filter out blank rows before presenting the data.
userDefCatNamesStableThe names of 100 user-defined category slots.
Use directlyuserDefCatGroupsStableThe group assigned to each category slot.
Row-aligned with userDefCatNamesuserDefCatAmountsStableThe default monthly amount for each category slot.
Numeric values; row-aligneduserDefCatGoalsStableThe goal for each category slot.
Numeric values; row-alignedallCatNamesStableAll user categories plus Available to Budget.
Filter blanks; do not row-align with userDefCat*Configured account names for selectors, filters, and account-level summaries.
bankAcctsStableConfigured bank-account names.
Use directly; filter blankscreditCardAcctsStableConfigured credit-card account names.
Use directly; filter blanksThese names contain text pointers. Resolve them with Aspire’s _ named function before using the data.
trxDatesStableTransaction dates.
=_(trxDates)trxOutflowsStableTransaction outflow amounts.
=_(trxOutflows)trxInflowsStableTransaction inflow amounts.
=_(trxInflows)trxCategoriesStableTransaction category names.
=_(trxCategories)trxAccountsStableTransaction account names.
=_(trxAccounts)trxPayeesStableTransaction payee names.
=_(trxPayees)Transfer-history pointers use the same _ resolver as transaction pointers.
xfrDatesStableCategory-transfer dates.
=_(xfrDates)xfrAmountsStableCategory-transfer amounts.
=_(xfrAmounts)xfrFromCatStableSource categories.
=_(xfrFromCat)xfrToCatStableDestination categories.
=_(xfrToCat)These single-value names expose display preferences without tying a customization to Configuration tab coordinates.
vSheetCurrencyFormatStableA sample cell with the workbook currency format.
Read or copy number-format metadatavSheetDateFormatStableA sample cell with the workbook date format.
Read or copy number-format metadatavSidebarCurrencyStableA value such as USD — US Dollar.
Parse the leading ISO currency codeNo 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
Start each recipe in the upper-left cell of a blank custom tab, with enough empty space for the result to expand.
Create a clean source table with every configured category, its group, default amount, and goal.
=FILTER(
{userDefCatNames, userDefCatGroups, userDefCatAmounts, userDefCatGoals},
userDefCatNames<>""
)Because the four ranges share the same 100-row shape, each output row stays aligned. Blank category slots are removed.
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.
Aggregate recorded outflows into a two-column table that is ready for a chart.
=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
)The _ named function resolves each text pointer into its expanding transaction column. QUERY then groups and sorts positive outflows.
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.
Turn transaction history into a monthly series for a line or column chart.
=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
)TEXT creates a sortable month key, while QUERY totals every positive outflow in that month. Select the result and insert a chart.
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
Named ranges survive layout changes better than A1 notation.
Let one clean table feed charts, cards, and summaries.
Use FILTER, IFNA, and explicit conditions.
Categories, accounts, and transaction history will grow.
Avoid resolving the same large pointer many times.
Formulas and scripts can be visible to anyone with access.
Visually distinguish cells a person should edit.
Try an empty budget, renamed categories, and a long transaction history.
Build without fear
Make a duplicate and name it with the date. Prototype there first.
Remove or hide the custom tab, then run Aspire diagnostics to separate a source-data issue from a customization issue.
Restore an earlier version. If the damage is widespread, move to a clean spreadsheet.
What Aspire supports
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.
Copy Aspire, try a starter recipe, or tell us which public range would unlock your next report.