- 24 Oct 2024
- 17 Minutes to read
- Print
- DarkLight
Excel Functions
- Updated on 24 Oct 2024
- 17 Minutes to read
- Print
- DarkLight
Overview
ReportWORQ is designed to support all of Microsoft Excel's standard, built-in functions. ReportWORQ additionally supports several data provider-specific Excel functions which are documented, per data provider, in Datasources documentation.
ReportWORQ does not support the use of Visual Basic for Applications or any other scripting languages, but it does include several ReportWORQ-specific Microsoft Excel functions that are designed to perform common reporting and data integration tasks that enhance its report distribution and data collection capabilities:
Data Provider-Specific ReportWORQ Functions
Dynamic Reporting Features:
Relational Database Queries: RWSql
Workday Adaptive Planning:
Data Crosstab Export: AIExtract, AIOption, AITier
Modeled Sheet Export: AIModeledExport
Data Collection Support:
Anaplan: AnaplanInput
Relational Databases: RWSqlUpdate, RWSqlUpsert
Workday Adaptive Planning: AIInput, AIModeledInput
General Purpose ReportWORQ Functions
Page Break Customization: RWPageBreak
Autofit rows/columns: RWResize
Sort a data range: RWSort
Remove unwanted rows/columns: RWSuppress
Data Collection
ReportWORQ supports several functions that are used to "writeback" data into configured data sources like SQL, Anaplan and 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.
ReportWORQ Data Collection Licensing
A ReportWORQ Server Data Collection license is required to use any of these functions and Data Collection features, in general. Please contact Support if you have any questions about your current licensing entitlements for add-on features such as these.
Ranges and Tables
Several ReportWORQ-specific functions support a "Range or Table Name" parameter that is typically used when specifying a location for data to be output to, for instance in the RWSql or AIModeledExport functions. These parameters are used to target either a specific range or even Microsoft Excel tables with some of the following options:
Reference Target | Description | Examples |
---|---|---|
Excel Table by Name | ReportWORQ will search for an Excel table with this name and repopulate the table with data for any table heading names that match data source column names. The table must have "Show Header Row" enabled. Please see a note below about referencing tables when bursting to multiple worksheets | "Table 3" |
Excel Table by Reference | When using a parameter to create multiple copies of a worksheet containing the Excel table you want to reference, it is not possible to reference the table name as a string because copies of it will get a new ID on each worksheet. Instead, you must:
| A2 A2 in this example is the first data value in a table that spans A1:G15 and has the required header row enabled. |
Single Row / Cell | ReportWORQ will populate data starting with the top left cell address, overwriting anything below and to the right of that cell. | B10 B:B |
Multi-Row Range | ReportWORQ will clear and delete the range before inserting rows required to populate data, and will not overwrite anything below and to the right of that range. | A1:M30 B:Z |
Workday Adaptive Planning
AIExtract
The AIExtract function is designed to extract a crosstab of data from Workday Adaptive Planning similarly to running a Web Matrix Report. The AIExtract function supports nesting dimensions on rows and/or columns and like web reports, the element selections can dynamically load children or descendant elements automatically.
To provide maximum flexibility while leveraging native Excel & ReportWORQ features the matrix report generated by AIExtract is defined using a combination of 3 user-defined Excel Formulas that work together:
The primary function, AIExtract, is used to indicate:
Where on the spreadsheet the data should be exported.
The dimension selections, including the axis and order they appear.
Any options that apply to the report query.
Each dimension's element selections are defined using an AITier function. The AITier function is similar to dragging a selection in a Web Matrix Report and setting options for that selection.
The AIOption function is used to modify query options, such as zero suppression.
The sample report, available for download below, shows a report spec defined on the Spec worksheet using AIExtract, AITier, and AIOption functions. The resulting output is rendered on the Report worksheet. The report in the sample nests Levels and Accounts on Rows, with both dimensions fully expanded, and nests Versions and Time on Columns. Versions is based on a static list of 2 versions and Time is dynamically expanded to Quarters.
AIExtract
The AIExtract function combines the AITier and AIOption functions into a report specification for extracting and then loading into a target cell range.
Syntax
AIExtract(Target Range, Tiers[, Options])
Parameter | Description |
---|---|
Target Range | The top left cell address where the report extract should be exported to. |
Tiers | A range of cells (or areas of ranges) that provide the AITier formulas for generating the report. |
Options | An optional range of cells that provide the AIOption formulas for generating the report. |
AITier
AITier functions define a dimension and selection on a report axis, as well as the nesting order on the axis. Each AITier formula must be placed on an Axis where the dimension element selection can be set to none, children to dynamically expand to children or descendants to fully expand each element. Multiple AITier formulas for the same dimension can be defined so long as they appear on the same axis, which is useful when a mix of expanded and collapsed elements is required.
Syntax
AITier(Axis, Dimension, Selection, Depth, Order)
Parameter | Description |
---|---|
Axis | The name of the axis for this selection:
|
Dimension | The name of the dimension for this selection, e.g. Versions, Time, Levels. |
Selection | Element selections can be defined as:
|
Depth | The hierarchy depth to expand each element in Selection, which can be one of these options:
|
Order | The order for this tier on the axis, moving from outer to inner. |
AIOption
The AIOption function is used to provide global options for the report query, such as autoformatting and zero suppression.
Syntax
AIOption(name, value)
Parameter | Description |
---|---|
Name | The name of one of the supported options (see below). |
Value | The value for that specific option. |
Supported Options
Name | Description | Values | Default |
---|---|---|---|
suppresszeros | Suppress zero rows / columns | 0: none, 1: suppress rollups, 2:supress zeros | 0 |
suppressrollups | Suppress automatic rollups | TRUE, FALSE | FALSE |
autoformat | Automatically format the report:
| TRUE, FALSE | TRUE |
AIModeledExport
The AIModeledExport function exports data from a Modeled Sheet into an Excel Range or Table. This formula is typically used in concert with the AIModeledInput formula, defined in a calculated column, to distribute input forms to users who need to provide minor updates to a portion of a Modeled Sheet.
AIModeledExport options are modeled after parameters in the Adaptive exportConfigurableModelData API function.
Syntax
AIModeledExport( Range or Table Name, Version, Adaptive Sheet Name, [Start Period], [End Period], [Levels], [Include Descendants])
Parameter | Description |
---|---|
Range or Table Name | A reference to an Excel table or a cell range. See Excel Ranges or Table Names for more information. |
Version | The name of the Adaptive Version to export the data from. For example 'Budget'. |
Adaptive Sheet Name | The name of the Adaptive Modeled Sheet to export data from. For example 'Personnel'. |
Start Period | Optional name of a starting leaf period. |
End Period | Optional name of an ending leaf period. |
Levels | Optional pipe-delimited list of levels to export. |
Include Descendants | Optional flag to also include descendants for the specified Levels. |
Examples
Formula | Description |
---|---|
=AIModeledExport("Table 4", "Budget", "Personnel") | Export the "Personnel" Modeled Sheet for the "Budget" version to the table named "Table 4". |
=AIModeledExport("Table 4", "Budget", "Personnel", , , "East") | Export the "Personnel" Modeled Sheet for the "Budget" version to the table named "Table 4", including only the "East" level. |
=AIModeledExport("Table 4", "Budget", "Personnel", "Jan-2020", "Dec-2020", "East|West", TRUE) | Export the "Personnel" Modeled Sheet for the "Budget" version for all months between Jan-2020 and Dec-2020 to the table named "Table 4", including only the "East" and "West" levels and their descendants. |
AIInput
The AIInput formula adds the ability to write a value back to a Workday Adaptive Planning Standard or Cube Sheet. This formula references a cell that is linked to an Adaptive cube value as part of an OfficeConnect Excel report, by referencing an Adaptive OfficeConnect cell, ReportWORQ will automatically use that cell's intersection when writing back into the planning system. The AIInput formula also supports providing the intersection information directly in the cell as pairs of Dimension and Element selections. By supplying the intersection information directly in the formula, the user can leverage Excel functionality to dynamically adjust the intersection based on other formulas.
Important
This formula will only work if the report is distributed using ReportWORQ and if the cell referenced was originally a value loaded from Workday Adaptive Planning.
Syntax - Referencing an OfficeConnect cell
AIInput(Value Range, [Adaptive Sheet Name])
Parameter | Description |
---|---|
Value Range | A reference to a cell that was originally loaded from Adaptive when ReportWORQ created the output file. |
Adaptive Sheet Name | Optional cube sheet to import the data into when referencing cube sheets. |
Examples
Formula | Description |
---|---|
=AIINPUT(D10) | Reference an existing Adaptive OfficeConnect Standard Sheet cell that was distributed with ReportWORQ |
=AIINPUT(D10, "New Premiums") | Reference an existing Adaptive OfficeConnect Cube Sheet cell that was distributed with ReportWORQ. |
Syntax - Providing intersection information
AIInput(Value Range, [Adaptive Sheet Name], "Dimension|Element", ["Dimension|Element"], ["Dimension|Element"], etc.)
Parameter | Description |
---|---|
Value Range | A reference to a cell that was originally loaded from Adaptive when ReportWORQ created the output file. |
Adaptive Sheet Name | Optional cube sheet to import the data into when referencing cube sheets. |
Dimension|Element Pair | A string specifying the dimension name and element name separated by a pipe. E.g. "Versions|budget" or "Period|Jan-2023" |
Dimension|Element Pair | Provide as many Dimension|Element pairs as required to identify the unique input intersection |
Examples
Formula | Description |
---|---|
=AIINPUT(D10, "New Premiums", "Versions|Budget", "Accounts|Quotes", "Levels|NJ", "Time|Jan-2023") | Reference an input cell and manually provide the tuple intersection information |
AIModeledInput
The AIModeledInput formula provides the ability to write a value back to a Workday Adaptive Planning Modeled Sheet. This formula uses the importConfigurableModelData Adaptive API and the rules of that API method will apply to this formula. The AIModeledInput formula is typically defined in a calculated column in an Excel table that is updated during report distribution using the AIModeledExport formula. These formulas are designed to work hand in hand with input form distribution for users who need to provide minor updates to a portion of a Modeled Sheet.
Syntax
AIModeledInput(Version, Adaptive Sheet Name, Import Key Name, Import Key Value, Input Column Name, Input Value)
Parameter | Description |
---|---|
Version | The name of the Adaptive Version to load the data to. For example, Budget. |
Adaptive Sheet Name | The name of the Adaptive Modeled Sheet to import data into. For example, Personnel. |
Import Key Name | The name of the dimension to use as an Import Key for updates. For example, EmployeeId. |
Import Key Value | The dimension element to uniquely identify this row for updating. For example, John Snow. |
Input Column Name | The name of the column in the Modeled Sheet to update. For example, Salary. |
Input Value | The value to update in the Modeled Sheet for the specified input column, item (as defined by Import Key Name + Value), and version. |
SQL
RWSQL
The RWSQL function is used to return data to an Excel spreadsheet from an ODBC or OLE DB data source using a named ReportWORQ data source connection and SQL query.
Syntax
RWSQL( Range or Table Name, Connection Name, SQL Query)
Parameter | Description |
---|---|
Range or Table Name | A reference to an Excel table or a cell range. See Excel Ranges or Table Names for more information. |
Connection Name | The name of an existing ODBC or OLE DB Connection that is defined in ReportWORQ, which will be used to retrieve data for the RWSQL formula. For more information on the configuration of these connections, please see Datasources -> SQL Sources. |
SQL Query | The query to execute against the datasource provider. The query must only return a single dataset. |
SQL Query Tips
The SQL Query can be dynamically constructed using Excel formulas and adjusted using ReportWORQ parameters. For example, the query may be ="SELECT * FROM SALES_FORCAST WHERE REP='" & $A$4 &"' ". Where cell A4 is the name of the sales rep provided by a ReportWORQ parameter.
Note that longer SQL statements may reach a character cell limit in Excel. To avoid the limit, the query may need to be divided into multiple cells and concatenated in a cell that is then referenced by the RWSQL formula.
Examples
Note that all examples below are based on a SQL Datasource connection named "SampleData" in ReportWORQ.
Formula | Description |
---|---|
=RWSQL( "Table 4", "SampleData", "Select * FROM Stores") | Export all data from the "Stores" database table/view to the Excel table named "Table 4", matching data in fields based on Excel table column name. |
=RWSQL( A2, "SampleData", "Select * FROM Stores") | 2 Possible Results:
|
=RWSQL( A2:D10, "SampleData", "Select * FROM Stores") | Export all data from the "Stores" database table to the range A2:D10, clearing and resizing that range to fit the query result. |
RWSQLUPDATE/RWSQLUPSERT
The RWSQLUPSERT & RWSQLUPDATE functions are both designed to update data in a single record of a relational database table when using the Data Collection capabilities of ReportWORQ and a valid ODBC or OLE DB SQL database connection. The differences between the functions are:
RWSQLUPDATE: can only update an existing record.
RWSQLUPSERT: can both insert and update a record.
Both functions require the following information:
The name of the saved SQL database connection in ReportWORQ.
The table name being updated.
A way to uniquely locate the record:
The name of an Id column.
The value to search for in that Id column.
A minimum of 1 column name/value combination indicating the value(s) to update in that record.
These functions will fail to update data if the ReportWORQ connection credentials do not have write access to the table or:
RWSQLUPDATE, RWSQLUPSERT: The Id Column lookup returns more than one record.
RWSQLUPDATE: The Id Column lookup returns no records.
Syntax
RWSQLUPDATE / RWSQLUPSERT ( Connection Name, Table Name, Id Column Name, Id Column Value, Column Name / Value List )
Parameter | Description |
---|---|
Connection Name | The name of an existing ODBC or OLE DB Connection that is defined in ReportWORQ, which will be used to update data using the RWSQLUPDATE formula. This connection must have WRITE access to the specified Table Name. For more information on the configuration of these connections, please see Datasources -> SQL Sources. |
Table Name | The name of the table being updated. For example, TimeEntry. |
Id Column Name | The name of the column that is used to uniquely search for a single record in the table. For example, EmployeeIdAndPeriod. |
Id Column Value | The value is used to uniquely identify the row in the Id Column for updating. For example, John Snow_20220108. |
Column Name / Value list | A minimum of one combination of table Column Name and Column Value which are to be updated by the SqlUPDATE function. For an example, see the highlighted section of the following formula: =RWSQLUPDATE("MySqlDatabase", "TimeEntry", "EmployeeIdAndPeriod", "John Snow_20220108", "Hours", 12, "Comments", "Generated Report Packages without ReportWORQ") |
ANAPLANINPUT
The ANAPLANINOUT formula provides the ability to write a value back to an Anaplan cube. The ANAPLANINOUT formula is typically defined in an Excel report that is generated as an input template by ReportWORQ to collect data from users who, for instance, need to only provide minor updates to a portion of a cube.
Syntax
ANAPLANINOUT( Input Row, Input Column, Input Value )
Parameter | Description |
---|---|
Input Row | The index of the row being updated. |
Input Column | The index of the column being updated. |
Input Value | The value to update at this Input Row and Column location. |
General Purpose
RWPAGEBREAK
The RWPAGEBREAK function is used to manually toggle page breaks on rows or columns, based on a user-defined conditional expression. Page breaks are activated at the location of the function when the Enable parameter is TRUE, for instance when a specific heading is detected in data that indicates a need to insert a break in rows or columns. The Direction field indicates whether a vertical (columns) or horizontal (rows) page break is inserted.
Syntax
RWPAGEBREAK( Enable, [Direction] )
Parameter | Description |
---|---|
Enable | Whether or not to insert a page break in the row or column (defined by Direction) where the RWPAGEBREAK function is located. This is typically a formula that references a value in the report indicating a new section. |
Direction | Permitted values for Direction are:
The default value for this optional parameter, if omitted, is "Horizontal". |
Position | This 3rd argument is optional and indicates if the pagebreak should be before or after the row/column number.
If the Excel fit to page option for height or width is set to a positive number (anything other than Automatic) then RWPAKEBREAK formula will throw a warning when used for horizontal or vertical pagebreaks respectively. |
Important Notes about Page Breaks with RWPAGEBREAK
When the Enable parameter is TRUE a page break will be inserted just ABOVE the row containing RWPAGEBREAK(for "Horizontal" breaks) or to the LEFT of the column containing RWPAGEBREAK(for "Vertical" breaks).
This feature also DOES NOT remove or replace any existing page breaks defined in your Excel workbooks.
Examples
Example Formulas Note
For illustrative purposes, all RWPAGEBREAK formula examples are located in cell N40.
Formula | Description |
---|---|
=RWPageBreak ( TRUE ) =RWPageBreak( TRUE, TRUE ) =RWPageBreak ( TRUE, "Horizontal") | Inserts a horizontal page break at the boundary between row 39 and 40. |
=RWPageBreak( TRUE, FALSE) =RWPageBreak ( TRUE, "Vertical") | Inserts a vertical page break at the boundary between column M and N. |
=RWPageBreak( FIND("Summary", $B40)=1, "Horizontal") | Inserts a horizontal page break at the boundary between row 39 and 40 if the value in cell B40 contains the text "Summary", which would indicate a heading and page break boundary. |
=RWPageBreak( TRUE, TRUE, FALSE ) =RWPageBreak( TRUE, TRUE, "After" ) | Inserts a horizontal page break after row 40 |
RWRESIZE
The RWRESIZE function performs an autofit to data operation on the row or column containing the RWRESIZE function. This is most often used to resize columns to avoid a ##### display when a cell is not large enough to display a numeric value. RWRESIZE has special support for Merged Cells. If an RWRESIZE formula is located in a merged cell then the resize operation will be performed on the group of rows or columns in the cell's range and the height or width will be distributed equally. The RWRESIZE will not perform its operation if the row or column it is acting on is hidden.
Syntax
RWRESIZE( [Axis], [Pad] )
Parameter | Description |
---|---|
Axis | Permitted values for Axis are:
The default value, if omitted, is TRUE / "rows". |
Pad | Optional additional height or width to add to the autofit algorithm. This can be useful when certain formatting situations still result in too small of a resize to display the cell value, or when additional spacing between report rows or columns is desired. The value is represented in points. |
Examples
Formula | Description |
---|---|
=RWResize() =RWResize( TRUE ) =RWResize( "rows" ) | Resizes the row's height to auto-fit to data in the row's cells. |
=RWResize( FALSE ) =RWResize( "columns" ) | Resizes the column's width to auto fit to data in the row's cells. |
=RWResize( "columns", 2 ) | Resizes the columns width to auto fit to data, and adds 2 additional points to that width. |
RWSORT
The RWSORT function will sort a specified range of data based on up to 3 sort keys, each optionally specifying a sort ascending or descending option.
Syntax
RWSORT( Range or Table Name, [Sort Column 1], [Sort Order 1], [Sort Column 2], [Sort Order 2], [Sort Column 3], [Sort Order 3] )
Parameter | Description |
---|---|
Range or Table Name | A reference to an Excel table or cell range that represents the data to be sorted. See Excel Ranges or Table Names for more information. |
Sort Column 1, Sort Column 2, Sort Column 3 | Optional Sort Column parameters are an integer index indicating which column to sort in the specified range or table. 1 for the first column, 2 for the second, etc. The default column is 1. |
Sort Order 1, Sort Order 2, Sort Order 3 | Optional Sort Order parameters indicate the sort direction for a corresponding Sort Column:
The default sort order is TRUE (ascending). |
Examples
Formula | Description |
---|---|
=RWSORT(A1:D30) =RWSORT(A1:D30, 1, TRUE) | Sorts data in the range A1:D30 based on the first column in ascending order. |
=RWSORT("Table 1") =RWSORT("Table 1", 1, TRUE) | Sorts data in the Excel table named "Table 1" based on the first column in ascending order. |
=RWSORT(A1:D30, 1, TRUE, 3, TRUE) | Sorts data in the range A1:D30 based on the first column in ascending order, followed by the third column in ascending order. |
=RWSort("Table1", 1, TRUE, 2, TRUE, 3, FALSE) | Sorts data in the Excel table named "Table 1" based on the first column in ascending order, then by the second column in ascending order, followed by the third column in descending order. |
RWSUPPRESS
The RWSUPPRESS function is used to enable custom suppression of rows and/or columns. Suppression can hide or delete the row/columns based on the condition in the Enable parameter. While this function is typically used to check for zero or blank values (zero suppression), any expression can be used. For example, combing RWSUPPRESS with RWSORT would allow you to rank data in order and then keep only the top n rows.
RWZERO -> RWSUPPRESS
The RWZERO function was renamed RWSUPPRESS to better reflect its broad usage. The RWZERO function will continue to be supported for legacy reasons.
Syntax
RWSUPPRESS( Enable, [Axis], [Mode] )
Parameter | Description |
---|---|
Enable | Provide a TRUE or FALSE to enable suppression for this row or column. This is often a formula that performs a zero check. For example, SUMSQ(3:3)=0. |
Axis | Optional parameter that defines whether the row or column of the cell containing the RWSUPPRESSformula is to be suppressed when Enable is TRUE. Valid parameter values are:
The default axis is "rows". |
Mode | Optional parameters that define the suppress mode when Enable is TRUE:
The default mode is "delete". |
Examples
Formula | Description |
---|---|
=RWSUPPRESS(FALSE) | Does nothing to the current row. |
=RWSUPPRESS(TRUE) =RWSUPPRESS(TRUE, TRUE, TRUE) | Delete the current row. |
=RWSUPPRESS(TRUE, FALSE) =RWSUPPRESS(TRUE, "columns", "delete") | Delete the current column. |
=RWSUPPRESS(TRUE, "rows", FALSE) | Hide the current row. |
=RWSUPPRESS(TRUE, "columns", "hide") | Hide the current column. |