跳至主要内容
Workday User Guide
上次更新时间 :2023-06-23
概念:工作簿中的结构化引用

概念:工作簿中的结构化引用

Worksheets 工作簿中的动态数据区域与 Excel 表格相似。在您向基于 Workday 高级自定义报告的工作簿添加动态数据区域时,Worksheets 会创建一个包含动态数据的表
。默认情况下,Worksheets 使用英文单词“Report”
加上一个递增的数字来指定动态数据表名称。示例:Report1。
在运行数据向导之时或之后,您可以选择为动态数据表创建自己的名称。Worksheets 仅支持为高级自定义报告提供表名称。如果您确实需要重命名动态数据表,请注意,表名称在工作簿中必须唯一,并且不能与任何已定义的名称或数据透视表同名。
运行数据向导后,您可以使用包含表名称和列名称的特殊语法,在公式中指定动态引用,而不必使用确切的单元格范围。表名称和列名称的这种组合就是结构化引用
。在动态数据刷新时,Worksheets 会根据需要自动更新结构化引用的范围。
示例:您可以使用 =SUM(SalesCategory[Sales Amount])
代替公式 =SUM(B1:B24)
,前者的“SalesCategory”
是表名称,“Sales Amount”
是列名称。“SalesCategory”表名称未在动态数据区域中显示;但是,如果您要显示动态数据面板,该面板就会显示在此处。
请注意以下事项:
  • 对于在 Workday 23R1 之前创建的动态数据区域,若要添加表名称,您需要编辑这些区域。要执行此操作,您可以在动态数据面板中单击
    “编辑动态数据”
    ,或单击面板中的任意
    “编辑”
    链接。
  • 如果您后续更改了表名称或列名称,Worksheets 会更新工作簿内
    的现有结构化引用;但如果您的外部引用包含表名称或列名称,则 Worksheets 不会自动更新使用者工作簿。您需要手动更新引用。
  • Worksheets 不支持以下做法:
    • 使用结构化引用(表名称和列名称)定义条件格式规则。但我们支持为使用结构化引用填充的数据应用条件格式规则。
    • 将最初在 Excel 中创建且包含结构化引用的文件上传到 Worksheets。
    • 在 NOTIFYIF 公式中使用结构化引用

结构化引用语法自动填充

在公式栏或单元格中输入公式时,您无需记住结构化引用的语法。根据您在公式中输入的内容,或者您在动态数据表中选择的内容,Worksheets 会生成并显示相应的语法。
当您选择以下选项时,Worksheets 会生成动态数据结构化引用语法:
  • 动态数据表中的单个单元格。
  • 列标题选择一个或多个标题行。
  • 动态数据列您可以选择标题和数据,也可以仅选择数据。
  • 整个表格请选择包括标题在内的整个动态数据区域。
此外,如果您键入表格名称,然后在公式中键入左括号,系统会显示列名称和特殊标识符以供选择。

结构化引用语法指导标准

  • 无需将表名称用引号引起来或括在方括号内。
  • 无需将列名称用引号引起来,但需要用方括号将它们括起来。
  • 使用井号 (#) 和下文所述的指示符来引用单元格范围的特殊子集。
  • 在动态数据区域中包括公式列时,公式不需要包含表名称,但所有列名称前都要包括 @ 符号。
  • 在提交公式时,请记得按无约束数组公式的键盘快捷键:Ctrl+Alt+Enter 或 Ctrl+Alt+Shift+Enter (Windows) 或 Command+Option+Enter (Mac)。

结构化引用的特殊标识符

说明符
示例
引用
#All
[#All]
整个表,包括列标题和数据。
#Data
[#Data]
仅引用数据行,不引用标题。
#Headers
[#Headers]
仅引用标题行,不引用数据。
#This Row
@
仅引用与公式在同一行中的单元格。您不能将这些说明符与其他任何条目说明符组合使用。
此说明符必须用在动态数据公式列的每个标题之前。
示例:=SUM([@Current Salary],[@Proposed Bonus])

语法示例

基本示例:
=SUM(CompDetails[New Salary],CompDetails[Stock Amount])
注释:
  • 该公式将两列的值相加,并在新列中显示结果。表名称为“CompDetails”
  • 列名称为“New Salary”
    和“Stock Amount”
    (括在方括号中)。
在下面的示例表中,我们向工作簿添加了动态数据,并将该表命名为“CompDetails”
。下图显示了列名称。
结构化引用
所含内容
隐含的单元格范围
CompDetails
CompDetails[#Data]
表中的所有数据,不含列标题。
A2:G39
=CompDetails[[#All],[Proposed Bonus %]]
“Proposed Bonus %”
列中的所有单元格
F1:F39
=CompDetails[[#Headers],[Salary Increase %]]
“Salary Increase %”
列的标题
E1
=CompDetails[[#All],[Compensation Grade]:[Salary Increase %]]
“Compensation Grade”
和“Salary Increase %”
列之间(包含这两列)的所有单元格,含标题
B1:E39
=CompDetails[[Compensation Grade]:[New Salary]]
“Compensation Grade”
和“New Salary”
列之间(包含这两列)的所有数据,不含标题
B2:D39
=CompDetails[[#Headers],[Employee ID]:[New Salary]]
“Employee ID”
和“New Salary”
之间的列的标题
A1:D1
=CompDetails[[#Headers],[#Data],[Compensation Grade]]
“Compensation Grade”
列的标题和数据
B1:B39
=CompDetails[[#This Row], [New Salary]]
=CompDetails[@New Salary]
当前行与
“New Salary”
列相交处的单元格
D5(如果当前行为第 5 行)

结构化引用与定义的名称的比较

定义的名称与结构化引用存在一些相似之处,但两者也有显著差异。下表汇总了主要差异:
定义的名称
结构化引用
您可以为任何工作簿范围创建定义的名称。
结构化引用仅引用动态数据区域中的数据,且仅适用于高级自定义报告数据。
定义的名称可跨列和行指定固定单元格范围,您也可以使用“公式”字段,为公式、常量或一组不连续的单元格范围定义名称。
结构化引用组合使用表名称和列名称,以指定一个或多个动态数据列中的动态单元格范围。
如果定义的名称位于动态数据区域中,那么即使在刷新期间数据发生变化,单元格范围也保持不变。
引用所涉及的数据是动态数据,并在动态数据刷新后自动更新。
“定义的名称”面板(“右侧窗格”)会显示所有定义的名称,便于您查看和管理。
结构化引用并非独立实体,它们作为动态数据区域的一部分进行管理,因此不需要单独的面板。
您可以在 Slides 演示文稿中使用定义的名称。
结构化引用在 Slides 演示文稿中不可见或不可用。
如果您在幻灯片演示文稿的链接表中使用定义的名称,之后又更改了其名称或范围,则需要刷新演示文稿中的链接数据,才能看到更新后的数据。
如果您在幻灯片演示文稿的链接值中使用定义的名称值,然后编辑了定义的名称范围,使得该链接值不再包括在内,则您需要先移除然后再重新添加该链接值。
您可以更改表名称或列名称。如果您执行此操作,Worksheets 会更新工作簿内的现有结构化引用;但如果您的外部引用(使用者工作簿)包含之前的表名称或列名称,Worksheets 不会自动对其进行更新。有关外部引用的更多信息,请参见 概念:使用外部引用来引用其他工作簿中的数据