Skip to content
RevitBootcamp2027 edition
Documentation6 min readDocumentationTeam fluencyAutomation

Schedules as the model's query language

Fields, filters, grouping, calculated values, key schedules — and using schedules to audit a model instead of inspecting it by eye.

A schedule is a live query with an editable result set. If you think in SQL, the mapping is almost exact — and thinking of it that way makes the dialog obvious.

The mapping

Schedule tab SQL
Category (in the New Schedule dialog) FROM
Fields SELECT
Filter WHERE
Sorting/Grouping ORDER BY / GROUP BY
Itemize every instance (unchecked) GROUP BY collapse
Calculated value a computed column
Formatting → Calculate totals SUM()

Fields

The Fields tab lists available parameters. More is available than you'd expect:

  • Instance parameters of the category
  • Type parameters of the category (marked as such)
  • Count — a virtual field, essential when not itemizing
  • Fields from related elements — the Select available fields from dropdown lets a door schedule pull Room: Name, or a wall schedule pull Phase Created. This is the closest thing Revit has to a join, and it's underused.
  • Project information fields
  • Calculated values and percentages

If a parameter isn't listed, it's not on that category. Go add it as a project or shared parameter first.

Multi-category and other special schedules

  • Multi-Category schedule — schedules across every category at once. Only shows parameters common to all of them (mostly shared parameters). The right tool for a furniture-and-equipment schedule spanning several categories.
  • Material Takeoff — schedules the materials inside elements, with area and volume per material layer. This is how you get "total m² of gypsum board" rather than "number of walls".
  • Sheet List — schedules sheets. Your drawing index.
  • View List — schedules views. An excellent QC tool: filter to views with no sheet number to find orphans, or check that every view has a view template.
  • Note Block — schedules annotation symbols. Used for general-note systems.
  • Graphical Column Schedule — the structural one. Different beast entirely.

Filters

Up to a handful of rules, ANDed (and in recent versions, with And/Or options).

The two operators worth knowing beyond the obvious:

  • has a value / has no value — the QC workhorse. Filter to has no value on a required parameter and every row is a to-do.
  • contains / does not contain — for text parameters where naming conventions encode meaning (RB-EXT-...).

Filters can only use fields you've added to the Fields tab in some Revit versions — if a filter dropdown is missing a parameter, add it as a field first (you can hide the column afterwards in Formatting).

Sorting/Grouping

  • Up to four sort keys.
  • Header per group inserts a title row. Footer inserts a summary row — combined with Calculate totals, that's subtotals per group.
  • Blank line between groups, for readability on a sheet.
  • Grand totals at the bottom.
  • Itemize every instance — unchecked collapses identical rows into one. With a Count field, that's your quantity schedule.

Formatting

Per-column: heading text (override the parameter name), orientation, alignment, field formatting (units and rounding independent of project units), and:

  • Calculate totals — sum for numbers, and for a Count field.
  • Hidden field — keep the field for filtering/sorting but don't show the column. Essential.
  • Conditional formatting — colour cells by rule. Underused; excellent for QC schedules where you want problems to be visually obvious.

Calculated values

Fields → Calculated Value. A formula over other fields, without adding a parameter to the model.

Name:     Area per Occupant
Type:     Area
Formula:  Area / Occupancy

Units are enforced exactly as in family formulas:

Area / Number              → Area        ✔ into an Area parameter
Area / Number              → Area        ✘ into a Number parameter
Area / Number / 1 SF       → unitless    ✔ into a Number parameter
Length * Length / 1 SF     → unitless    ✔

The / 1 SF (or / 1 m²) division to cancel units is the standard idiom. It looks wrong and it's correct.

Percentage is a separate option on the same dialog — it computes each row as a percentage of its group or of the total. Use it rather than hand-rolling a formula.

Key schedules

New Schedule → Schedule keys. A schedule of presets.

  1. Create a key schedule for Rooms, name the key Room Style.
  2. Add fields for the things a style controls: Floor Finish, Base Finish, Wall Finish, Ceiling Finish, Ceiling Height.
  3. Add rows: Office, Corridor, Restroom, Open Office. Fill in their values.
  4. On any room, set Room Style = Office.

Every field in the key now populates on that room automatically and becomes read-only on the element. Change the Office row once and every office updates.

This is the correct way to manage finishes, and it generalizes: door hardware sets, wall assemblies by type code, equipment specification groups. Any time you're typing the same set of values repeatedly, you want a key schedule.

Note the constraint: a key schedule's fields become read-only on the instance. If you need a per-room exception, either add a separate non-key parameter for it, or don't use a key for that field.

Editing the model from a schedule

Type into a cell and the model changes. This is not a report — it's a data grid over the model.

Consequences:

  • Bulk data entry is vastly faster in a schedule than by selecting elements.
  • Sorting first, then filling down, lets you enter data in a sensible order.
  • Selecting a row and clicking Highlight in Model jumps to the element in a view.
  • Deleting a row deletes the element. Which is how you clean up unplaced rooms, and also how you delete 40 doors by accident. Read the confirmation.
  • Read-only fields (type parameters shown in an instance schedule, key-driven fields, computed values like Area) can't be edited — Revit greys them.

Schedules as an audit tool

The use case almost no tutorial covers. Build these and never put them on a sheet:

QC schedule Finds
Rooms, sorted by Area ascending Unenclosed rooms (0 or blank) and unplaced rooms
Any category, filtered [required param] has no value Missing data, row by row
Generic Models, itemized Content modelled in the wrong category
Walls, not itemized Duplicate/near-duplicate types — a standards problem
Walls, with Area and Volume totals Absurd values from bad top constraints
View List, filtered to no Sheet Number Orphan views
View List, showing View Template Views not under template control
Sheet List with Revision fields Sheets missing from a revision
Doors, showing Mark, sorted by Mark Duplicate marks
Material Takeoff by material Materials nobody meant to use

Ten minutes of this finds more than an hour of clicking around a model. Pair it with Manage → Warnings and you have a genuine model-health review.

Putting a schedule on a sheet

Drag it from the Project Browser onto a sheet. Then:

  • The Appearance tab controls fonts, grid lines, and whether the title shows.
  • A schedule too long for one sheet gets split: drag the break control (the small Z-shaped handle) at the bottom, and drag the new column beside the first. It stays one schedule.
  • Column widths are dragged on the sheet, not in the schedule view.
  • Rows: Blank row before data and the header/footer options from Sorting/Grouping are what make it look like a real drawing-set schedule rather than a spreadsheet dump.

Exporting

File → Export → Reports → Schedule writes a delimited text file, with options for whether to include grouping headers and how to quote.

It's crude. It is also, nine times out of ten, exactly what somebody wanted when they asked for "the model data" — reach for it before you reach for Dynamo or the API.