Data Collection #
Reportworq supports several functions (RW.ADAPTIVE.INPUT and RW.ADAPTIVE.MODELEDINPUT) that are used to “writeback” data into Workday (specifically Standard Sheets, Modeled Sheets, and Adaptive Cube Sheets). These formulas are only available and executed when Reportworq receives a file for processing using a Reportworq Data Collection license.

The functions described in this section are specific to Workday Adaptive Planning datasources.
RW.Adaptive.Extract #
RW.Adaptive.Extract aka AIExtract Generates an Adaptive report into a worksheet range by combining RW.Adaptive.Tier helper formulas with RW.Adaptive.Option settings. If you are on a version earlier than 5.0.0.91 please use AIExtract.
Syntax #
=RW.Adaptive.Extract(targetRange, tiersRange, optionsRange)
Arguments #
| # | Name | Type | Default | Description |
|---|---|---|---|---|
| 1 | targetRange | Range | (required) | Top-left output range for the report. |
| 2 | tiersRange | Range / multi-range | (required) | Cells that contain the RW.Adaptive.Tier formulas for rows, columns, and filters. |
| 3 | optionsRange | Range / multi-range | (required) | Cells that contain the RW.Adaptive.Option formulas used to control the report output. |
Behavior #
RW.Adaptive.Extractgathers allRW.Adaptive.Tierformulas fromtiersRangeand splits them into rows, columns, and filters.- At least one row tier and one column tier are required.
RW.Adaptive.Option("AutoFormat", ...)controls whether ReportWorq bolds the row and column labels and auto-fits the label columns.- The formula imports the Adaptive result set into
targetRangeand clears the formula cell on success. - During Adaptive formula processing, modeled exports run first, then
RW.Adaptive.Extractruns after the workbook’s Adaptive specs have already been expanded.
Usage notes #
RW.Adaptive.Extractis the main report-output formula for Adaptive custom reports.- Keep your
RW.Adaptive.TierandRW.Adaptive.Optionhelper formulas in small setup ranges and pass those ranges intoRW.Adaptive.Extract. - Use
RW.Adaptive.Optionto control formatting and suppression instead of hard-coding those behaviors into the template.
Examples #
=RW.Adaptive.Extract(A1, TierSetup!A1:C10, OptionSetup!E1:E5)
=RW.Adaptive.Extract(B5, {Rows!A1:A5, Cols!C1:C3, Filters!E1:E2}, Options!G1:G3)
Common mistakes #
| Situation | Result |
|---|---|
No row RW.Adaptive.Tier formulas in tiersRange | Formula errors because the report has no rows |
No column RW.Adaptive.Tier formulas in tiersRange | Formula errors because the report has no columns |
targetRange is invalid | Formula errors before the report is run |
RW.Adaptive.Tier #
RW.Adpative.Tier aka AITier Defines one Adaptive tier for the row axis, column axis, or filter axis of an RW.Adaptive.Extract report. If you are on a version earlier than 5.0.0.91 please use AITier.
Syntax #
=RW.Adaptive.Tier(axis, dimensionName, selections, [expansionType], [order])
Arguments #
| # | Name | Type | Default | Description |
|---|---|---|---|---|
| 1 | axis | String | (required) | row/rows, col/cols/column/columns, or filter/filters. |
| 2 | dimensionName | String | (required) | Adaptive dimension to use. |
| 3 | selections | Range / string | (required) | Members for the tier. A single text value containing ; is split into multiple members. |
| 4 | expansionType | String | "none" | none, children, descendants, or leaf. |
| 5 | order | Integer | 0 | Order used when multiple tiers share the same axis. |
Behavior #
RW.Adaptive.Tierresolves the dimension by name in Adaptive metadata.- With
expansionType="none", at least one element must be supplied. - With
children,descendants, orleaf, the implementation can expand from the supplied members or from the dimension root when no members are supplied. RW.Adaptive.Extractsorts row and column tiers byorderbefore building the request.
Usage notes #
- Put outer tiers at lower
ordervalues and inner tiers at higher values. - Use
leafwhen you want fully expanded leaf-level members rather than parent members. - Use
filtersfor dimensions that should filter the report but should not appear as row or column labels.
Examples #
=RW.Adaptive.Tier("rows", "Period", A1:A5)
=RW.Adaptive.Tier("columns", "Region", B1:B2, "children", 1)
=RW.Adaptive.Tier("filters", "Version", "Actual;Budget")
Common mistakes #
| Situation | Result |
|---|---|
| Invalid axis name | The tier is not assigned to rows, columns, or filters correctly |
expansionType="none" with no selections | Formula errors |
| Member name does not exist in the dimension | Report generation fails when the tier is expanded |
RW.Adaptive.Option #
RW.Adaptive.Option aka AIOption Defines an option that RW.Adaptive.Extract reads when building an Adaptive report. If you are on a version earlier than 5.0.0.91 please use AIOption.
Syntax #
=RW.Adaptive.Option(optionName, optionValue)
Arguments #
| # | Name | Type | Default | Description |
|---|---|---|---|---|
| 1 | optionName | String | (required for practical use) | Option name such as "AutoFormat", "SuppressZeros", or "SuppressRollups". |
| 2 | optionValue | String / Boolean / Integer | (required for practical use) | Value stored with the option. |
Behavior #
- ReportWorq stores the option as text and also tries to parse it as a boolean and as an integer.
RW.Adaptive.Extractlooks up options by name when it decides how to build and format the report.- The formula cell displays
optionName=optionValue.
Usage notes #
- Use
AutoFormatto control whetherRW.Adaptive.Extractbolds labels and auto-fits label columns. - Use
SuppressRollupsandSuppressZerosto control the Adaptive request rather than post-processing the result in Excel.
Examples #
=RW.Adaptive.Option("AutoFormat", TRUE)
=RW.Adaptive.Option("SuppressZeros", 2)
=RW.Adaptive.Option("SuppressRollups", FALSE)
Common mistakes #
- Misspelling the option name; unknown names are simply not used by the consuming formula.
- Expecting numeric options to work when the value is text that cannot be parsed as an integer.
RW.Adaptive.Filter #
RW.Adpative.Filter aka AIFilter Stores a reusable Adaptive dimension filter made up of a dimension name and one or more member names. If you are on a version earlier than 5.0.0.91 please use AIFilter.
Syntax #
=RW.Adaptive.Filter(dimensionName, memberNames)
Arguments #
| # | Name | Type | Default | Description |
|---|---|---|---|---|
| 1 | dimensionName | String | (required) | Adaptive dimension to filter, such as "Version" or "Region". |
| 2 | memberNames | Range / array / literal list | (required) | Members to keep for that dimension. |
Behavior #
- ReportWorq stores the dimension name and the resolved member list.
- Literal lists and cell-based lists are both supported.
- The formula cell displays a simple
dimension.memberssummary string.
Usage notes #
- Use
RW.Adaptive.Filterwhen you want a compact filter definition that can be referenced elsewhere in an Adaptive template. - For full row/column/filter layout in an Adaptive report, use RW.Adaptive.Tier and RW.Adaptive.Extract.
Examples #
=RW.Adaptive.Filter("Region", A1:A5)
=RW.Adaptive.Filter("Version", {"Actual","Plan"})
Common mistakes #
- Supplying a dimension name that does not exist in Adaptive metadata.
- Expecting
RW.Adaptive.Filterby itself to render a report grid; it only defines filter values.
RW.Adaptive.ModeledExport #
RW.Adaptive.ModeledExport aka AIModeledExport exports modeled Adaptive data into a worksheet range or named table.If you are on a version earlier than 5.0.0.91 please use AIModeledExport.
Syntax #
=RW.Adaptive.ModeledExport(targetRange, version, [adaptiveSheetName], [startPeriod], [endPeriod], [levels], [includeDescendent], [isGlobal])
Arguments #
| # | Name | Type | Default | Description |
|---|---|---|---|---|
| 1 | targetRange | Range / table | (required) | Output location for the exported data. |
| 2 | version | String | (required) | Adaptive version to export. |
| 3 | adaptiveSheetName | String | (none) | Optional modeled sheet name. |
| 4 | startPeriod | String | (none) | Optional start period filter. |
| 5 | endPeriod | String | (none) | Optional end period filter. |
| 6 | levels | String | (none) | Pipe-delimited level list such as "Level1|Level2". |
| 7 | includeDescendent | Boolean | FALSE | When TRUE, descendant members are included. |
| 8 | isGlobal | Boolean | FALSE | When TRUE, requests a global export. |
Behavior #
- ReportWorq can write the export into a normal range or into a named Excel table.
- When
levelsis supplied, it is split on|before the export request is sent. - If the export returns rows, the data is imported and the formula cell is cleared.
- Modeled exports run before
RW.Adaptive.Extractduring the Adaptive formula pass.
Usage notes #
- Use
RW.Adaptive.ModeledExportwhen you want modeled-sheet data rather than a customRW.Adaptive.Extractlayout. - Exporting into a table is useful when downstream formulas, filters, or charts should grow with the result set.
Examples #
=RW.Adaptive.ModeledExport(A1, "ActualData")
=RW.Adaptive.ModeledExport(SalesTable, "PlanModel", "CommissionSheet", "2026-01", "2026-12")
=RW.Adaptive.ModeledExport(B5, "ForecastData", , , , "Level1|Level2", TRUE, FALSE)
Common mistakes #
- Supplying an invalid target range or table name.
- Expecting
levelsto use commas; the implementation splits on|. - Forgetting that blank optional arguments still need placeholder commas if a later argument is used.
RW.Adaptive.Input #
RW.Adpative.Input aka AIInput marks a cell as an Adaptive input and prepares it for upload during contribution processing.If you are on a version earlier than 5.0.0.91 please use AIInput.
Syntax #
=RW.Adaptive.Input(inputCell, [adaptiveSheetName], [tuplePart1], [tuplePart2], ...)
Each optional tuplePart is a text value in the form Dimension|Member.
Arguments #
| # | Name | Type | Default | Description |
|---|---|---|---|---|
| 1 | inputCell | Cell reference | (required) | Cell whose value should be uploaded. |
| 2 | adaptiveSheetName | String | (none) | When supplied, ReportWorq treats the upload as a cube account upload for that Adaptive sheet. |
| 3+ | tuplePart | String | (optional) | Explicit tuple coordinates such as "Version|Plan" or "Period|Jan". |
Behavior #
- With no
adaptiveSheetName, the formula uploads to a standard account target. - With a non-blank
adaptiveSheetName, the formula uploads to a cube account target. - If tuple parts are not supplied in the formula, ReportWorq looks up the tuple from workbook metadata that was prepared during report generation.
- The formula is processed during input submission, not during the report-output pass.
Usage notes #
- Use explicit tuple parts when you want the workbook formula itself to define where the value is written.
- Leave tuple parts out when the generated workbook already contains the tuple map that ReportWorq created for the input cell.
- On success, the formula cell is cleared.
Examples #
=RW.Adaptive.Input(B5)
=RW.Adaptive.Input(B5, "CommissionSheet")
=RW.Adaptive.Input(B5, "CommissionSheet", "Version|Plan", "Period|2026-01", "Region|East")
Common mistakes #
| Situation | Result |
|---|---|
inputCell is not a real cell reference | Formula errors during parsing |
A tuple part is not in Dimension|Member form | That tuple part is ignored when the explicit vector is built |
| The referenced tuple cannot be found in workbook metadata | Submission fails for that input |
RW.Adaptive.ModeledInput #
RW.Adpative.ModeledInput aka AIModeledInput updates a modeled Adaptive sheet by matching one key value and writing one modeled field value. If you are on a version earlier than 5.0.0.91 please use AIModeledInput.
Syntax #
=RW.Adaptive.ModeledInput(version, adaptiveSheetName, importKeyName, importKeyValue, inputValueName, inputValue)
Arguments #
| # | Name | Type | Default | Description |
|---|---|---|---|---|
| 1 | version | String | (required) | Adaptive version to update. |
| 2 | adaptiveSheetName | String | (required) | Modeled Adaptive sheet to update. |
| 3 | importKeyName | String | (required) | Key column used to find the row to update. |
| 4 | importKeyValue | Text / value | (required) | Key value to match. |
| 5 | inputValueName | String | (required) | Modeled field/column to update. |
| 6 | inputValue | Text / value | (required) | New value to write. |
Behavior #
- All six parameters are required.
- The formula builds a small two-column modeled-data update request and sends it during input processing.
- On success, the formula cell is cleared.
- The implementation comment specifically notes that
INDIRECT(...)can be helpful when formulas are copied to repeated worksheet rows.
Usage notes #
- Use
RW.Adaptive.ModeledInputfor modeled-sheet row updates. - Use RW.ADAPTIVE.INPUT instead for standard or cube-account uploads that rely on tuple metadata.
Examples #
=RW.Adaptive.ModeledInput($C$2, "CommissionSheet", "Employee_ID", A2, "Target_Commission", B2)
=RW.Adaptive.ModeledInput("2026_Plan", "Targets", "Region", INDIRECT("A" & ROW()), "Headcount", INDIRECT("B" & ROW()))
Common mistakes #
| Situation | Result |
|---|---|
| Any required argument is blank | Formula errors before submission |
adaptiveSheetName does not match a modeled sheet | Submission fails |
Using RW.Adaptive.ModeledInput for normal tuple-based input cells | Use RW.Adaptive.Input instead |