Slicers
A slicer is an input cell with a picker. Its value registers like any cell value, so formulas can compute with it — and [Address] tokens in region filters can consume it, which is what turns a sheet into an interactive dashboard: one pick recalculates everything.
The Five Slicer Kinds
A slicer's source starts with ?; the part after -> is the current choice:
| Source | Picker | Example |
|---|---|---|
?LIST(a;b;c)->choice |
Fixed choices, separated by ; |
?LIST(Jan;Feb;Mar)->Feb |
?FIELD(table, field [, display field])->value |
The table's own lookup page — search, filter and pick, at any table size | ?FIELD(Customer, No.)->10000 |
?DIMENSION(code or name)->value (also ?DIM(...)) |
The dimension's standard, unblocked values, capped at 200, with a leading (All) entry that commits an empty value — switching the filter off | ?DIMENSION(AREA)->30 |
?DATE->date |
A calendar, plus shortcuts (work date, today, start/end of month, end of year) | ?DATE->2026-01-31 |
?RANGE->from..to |
A two-month range picker, plus period presets | ?RANGE->2026-01-01..2026-12-31 |
Users open the picker by clicking the cell's ▾ button or pressing Alt+Down — a fixed list or dimension opens a dropdown, a date or range opens its calendar, and a ?FIELD opens the table's lookup page.
Typing ? in a cell offers completion of the five kinds — keep typing to narrow (?F → ?FIELD), accept with Tab or Enter, and the cursor lands ready for the arguments. The hint line under the list shows each kind's canonical example.
Notes per kind
- ?FIELD: opening the picker runs the table's own lookup page — the same list you would get from a document line's lookup, with search, filtering and paging — so a 10,000-customer table is as pickable as a 10-row one. Write the table by name (
Customer,Item,Vendor); a caption or a table number also resolves. The field can be a number, a name or a caption. The optional third argument names a display field: with?FIELD(Customer, No., Name)the cell shows the customer's name after a pick, while the committed value — what every[Address]filter reading the cell receives — stays the rawNo.. Formulas referencing the cell (=C2) also receive the raw key, so the display field is purely presentational and you can prefer the three-argument form whenever the key field is a bare number or code. A display field that cannot be read (or a blank display value) falls back to showing the key. - ?DIMENSION: resolves by dimension code first, then name; quotes around the argument are optional. Options show as "CODE — Name".
- ?RANGE presets (relative to the work date): This Month, Last Month, This Quarter, Year to Date, This Year, Last Year, Last 30 Days, Last 12 Months. Open-ended halves are valid (
2026-01-01..), and a range slicer holding a single date filters that one day. - A
?DATEslicer whose value contains..is treated as a range and gets the range picker — a date slicer written before?RANGEexisted keeps its meaning.
How the Value Behaves
- The chosen value registers as the cell's global — numeric when it parses as a number (so
=C2*2works on a numeric pick), text otherwise. - The cell displays the picked value verbatim — a slicer value is first of all a code or filter string, so
40000is never reformatted into40,000. - The exceptions are the two slicer kinds with a friendlier face: date slicers show your regional format, and a
?FIELDslicer with a display field shows that field's text.[Address]filters always receive the raw committed value (the XML date, the key). Formulas reading a date slicer see the formatted date the cell shows; formulas reading a?FIELDslicer with a display field receive the raw key, not the display text. - If the picker's setup fails (a renamed table, a deleted dimension), the current value stays usable — only the picker is unavailable, and the cell carries the error message.
Dates Are Stored Culture-Independently
A date or range slicer's source always stores the XML format (2026-01-31) — so a sheet saved by a user running day-month-year opens correctly for one running month-day-year. What the cell displays is your own regional format, purely presentational. And what filters receive is the XML form again, which Business Central parses identically under every regional setting.
Rule of thumb: whenever you type a date into a slicer source, a table view or a region filter, write it as yyyy-mm-dd. Locale-formatted dates can corrupt silently on machines with other regional settings.
Wiring Slicers to Regions: [Address]
Region filters accept [Address] tokens that resolve to the cell's current value on every recalculation:
| Where | Example |
|---|---|
| Table region / pivot table view | WHERE(Posting Date=FILTER([C2]),Item No.=FILTER([E2])) |
| Financial report date/dimension/budget filters | [B1] |
| Budget matrix name, span, accounts, dimensions | [D2] |
| SQL statement | WHERE [No.] = '[B3]' |
| Chart title | Sales for [B1] |
For filters, numeric cells resolve without thousand separators, date slicers resolve as XML, and ?FIELD slicers resolve to the raw committed key (even when the cell shows a display field's text) — the same value everywhere, for everyone.
Formulas read slicers as plain cell references — no brackets: =GL.GLSum('40000..49999', C2).
Worked Example: A Dashboard Header
Row 2 of a sales dashboard, with bold right-aligned labels in the cells to the left of each slicer:
| Cell | Source | What the user sees |
|---|---|---|
C2 |
?RANGE->2026-01-01..2026-12-31 |
A period picker with This Month / YTD / Last Year presets |
E2 |
?FIELD(Item, No., Description)-> |
The item lookup page; after picking 1000 the cell shows "Bicycle" while committing 1000 |
G2 |
?DIMENSION(AREA)-> |
The AREA dimension values plus (All) |
I2 |
?LIST(Amount;Quantity)->Amount |
A fixed measure switch |
Wired up:
- The items table region filters on
WHERE(No.=FILTER([E2])), the pivot's view onWHERE(Posting Date=FILTER([C2]),Item No.=FILTER([E2])). - The monthly chart's axis is a date range region with Start Date
[C2]— the twelve months of the picked period as filters, so the chart moves with the picker instead of carrying typed dates. - The KPI formulas read the slicers directly (plain references):
=GL.GLSum('40000..49999', C2, G2)— and becauseGLSumskips empty filter arguments, picking (All) inG2cleanly removes the dimension filter. The same applies to the dedicated filter fields on financial report and budget regions (Dimension 1 Filter = [G2]). - Inside a table-view
WHERE(...)clause, an empty value does not switch the clause off — the clause stays in the view with an empty value. So put a dimension slicer behind a region's own filter field or aGLSumargument when (All) must mean "no filter", and keepFILTER([cell])clauses for slicers that always hold a value (like?FIELDand?LIST). - The
I2measure switch drives a formula:=I2 = 'Amount' ? AB3 : AB4.
One click on any of the four and the entire sheet — regions, formulas, charts, cards — recalculates to match.
Slicers and Read-Only Access
Slicer picks are the one edit that always works: in preview mode, and for every non-Owner access level (Read Only, Read Only (No Print) and Edit Budget Entries), changing a slicer's choice is allowed while everything else stays locked. This is enforced by the engine, not just the UI.