使用 OFFSET 引用超级数据块

本主题描述了 OFFSET 函数。它指的是“示例”应用程序中的样本报告 RP006。

OFFSET 函数并非 Application Studio 所特有的函数,但在使用超级数据块时该函数尤为有用。这是因为在“视图”模式下,超级数据块为动态。在“设计”模式下,超级数据块为静态。即,其占据单元格的特定范围。但在“视图”模式下,超级数据块随着其内容展开和折叠,从而使特定单元格参考变得毫无意义。例如,如果在超级数据块的外部有公式,且该公式必须引用超级数据块内部的单元格,则需要一个动态公式。

凭借 OFFSET,可通过指定与初始引用单元格相关的位置来标识单元格。可使用到初始引用单元格的行数和列数,使用表示距离的坐标来指定其位置。

此示例引用单元格 C13:

=OFFSET(F11,2,-3)

即,单元格 F11 是初始引用单元格。第二个参数 2 表示引用的单元格为 F11 下面的两行。第三个参数 3 表示引用的单元格为 F11 左侧的 3 列。

此示例还引用单元格 C13:

=OFFSET(B21,-8,1)

即,单元格 B21 是初始引用单元格。第二个参数 -8 表示引用的单元格为 B21 上面的 8 行。第三个参数 1 表示引用的单元格为 B21 右侧的 1 列。

Application Studio 中 OFFSET 的常见用途是计算在诸如 ABC 分析或 Pareto 图表中所用的累积值。如要计算累积值,可将当前单元格的值加到上面单元格的值上。但在超级数据块的动态环境中,无法使用静态单元格引用指定上面的单元格。

报告 RP006 给出了如何使用 OFFSET 计算累积值的示例。

报告 RP006 有创建于“示例”应用程序“分析”多维数据集的“产品”维度的超级数据块。

此超级数据块有两个值单元格。在第一个值单元格中,ROC 公式显示了每组产品的一个值。在第二个值单元格中是 OFFSET 公式。

在“视图”模式下,单元格将重复第一个值单元格中的值。这是因为 OFFSET 公式不正确。

在单元格 E5 中的公式是:

=OFFSET(E5,0,0)+D5

若要更改 OFFSET 公式以便显示累积值:

  1. 在“设计”模式下,单击单元格 E5。
  2. 在“公式编辑器”中,将 OFFSET 公式的第二个参数从 0 更改为 -1。即将公式改为:=OFFSET(E5,-1,0)+D5,其中 -1 指定“上面的行”。

    在“视图”模式下,将显示累积值并显示“累积”标签。这也可通过使用单元格 E3 中的 OFFSET 函数(嵌套于 IF 语句内)来实现。

    IF 语句为:=IF(OFFSET(E3,3,0)=OFFSET(E3,3,-1),"","Cumulative")

    我们知道结果的第一行中的值将始终相等。但如果显示累积值,则在所有其他行中的值将不相等。因此,IF 语句将测试第 2 行中的值是否相等。

    IF 语句解释为:如果 E3 下面 3 行的单元格值等于 E3 下面 3 行和左侧 1 列的单元格值,则这时不现实内容 ("")。否则,将显示“累积”。