为计算生成公式

本主题介绍在 PowerPivot for Excel 中构建公式的基础知识,举例介绍如何创建计算列,以及描述如何处理表。本主题包含以下部分:

  • 度量值和计算列

  • 公式基础知识

  • 使用表和列

  • 更正公式中的错误

在阅读了本主题后,请参阅下列主题以了解详细信息:

度量值和计算列

在 PowerPivot 工作簿中,您可以在“计算列”和“度量值”中使用公式:

  • 计算列是添加到现有 PowerPivot 表中的列。您可以创建用于定义列值的数据分析表达式 (DAX) 公式,而不是在列中粘贴或导入值。如果您在某个数据透视表(或数据透视图)中包括 PowerPivot 表,则您可以像使用任何其他数据列一样使用计算列。

  • 度量值是为用于使用 PowerPivot 数据的数据透视表(或数据透视图)而专门创建的公式。度量值可以基于标准聚合函数,如 COUNT 或 SUM;或者,您可以通过使用 DAX 定义自己的公式。度量值用于数据透视表的**“值”**区域中。如果您想要将计算的结果放置于数据透视表的不同区域中,则应改为使用计算列。

公式基础知识

PowerPivot for Excel 提供 DAX,这是一种用于创建自定义计算的新的公式语言。DAX 使用户能够在 PowerPivot 表和 Excel 数据透视表中定义自定义计算。DAX 包含一些在 Excel 公式中使用的函数,此外还包含其他设计用于处理关系数据和执行动态聚合的函数。有关详细信息,请参阅数据分析表达式 (DAX) 概述

公式可能会比较复杂,但下表显示可以在 PowerPivot 计算列中使用的基础公式。

公式

说明

=TODAY()

将今天的日期插入列中的每一行。

=3

将值 3 插入列中的每一行。

=[Column1] + [Column2]

将 [Column1] 和 [Column2] 的同一行中的值相加,并且将结果放置于计算列的同一行中。

为计算列构建 PowerPivot 公式与在 Microsoft Excel 中构建公式大体相似。通过使用以下对话框之一为度量值构建公式:“度量值设置”对话框(标准聚合)“度量值设置”对话框(自定义聚合)

在构建公式时请采用以下步骤:

  1. 每个公式必须以等号开头。

  2. 可以键入或选择一个函数名称,也可以键入一个表达式。

  3. 开始键入所需函数或名称的前几个字母,记忆式键入功能将显示可用函数、表和列的列表。按 Tab 从记忆式键入列表向公式中添加项。

  4. 单击 Fx 按钮可以显示可用函数的列表。若要从下拉列表中选择某一函数,请使用箭头键突出显示该项,然后单击“确定”将该函数添加到公式中。

  5. 通过从可能的表和列的下拉列表中选择参数,或者通过键入值,向函数提供参数。

  6. 检查是否有语法错误:确保所有括号都是成对的,并且列、表和值被正确引用。

  7. 按 Enter 以接受该公式。

    注意注意

    在计算列中,只要您接受该公式,该列即会填充值。在度量值中,按下 Enter 可以保存度量值定义,并且如果度量值是新度量值,则 PowerPivot 会自动将该度量值添加到数据透视表的“值”区域中。

创建示例公式

下面的示例说明如何基于以下数据使用简单的公式创建计算列:

销售日期

子类别

Product

销售额

数量

1/5/2009

Accessories

Carrying Case

254995

68

1/5/2009

Accessories

Mini Battery Charger

1099.56

44

1/5/2009

Digital

Slim Digital

6512

44

1/6/2009

Accessories

Telephoto Conversion Lens

1662.5

18

1/6/2009

Accessories

Tripod

938.34

18

1/6/2009

Accessories

USB Cable

1230.25

26

使用简单公式创建计算列

  1. 从上表中选择和复制数据,包括表标题。

  2. 在 PowerPivot 窗口中的“主文件夹”选项卡上,单击“粘贴”

  3. “粘贴预览”对话框中,单击“确定”

  4. “设计”选项卡上的“列”组中,单击“添加”

  5. 在表上面的公式栏中,键入以下公式。

    =[Sales] / [Quantity]
  6. 按 Enter 以接受该公式。

    此时将为计算列中的所有行填充值。

使用记忆式键入的提示

  • 可以在具有嵌套函数的现有公式中使用公式记忆式键入功能。刚好在插入点之前的文本将用于显示下拉列表中的值,并且插入点之后的所有文本都保持不变。

  • PowerPivot 不添加函数的右括号或自动匹配括号。您必须确保每个函数在语法上都是正确的,否则不能保存或使用公式。PowerPivot 会突出显示括号,便于您检查括号是否完整。

有关使用记忆式键入的详细信息,请参阅创建计算列创建度量值

使用表和列

PowerPivot 表在外观上与 Excel 表类似,但在处理数据和公式的方式上有所不同:

  • 公式只使用表和列,而不使用各个单元格、范围引用或数组。

  • 公式可以使用关系从相关表中获取值。检索到的值始终与当前行值相关。

  • 不能将数据分析表达式 (DAX) 公式粘贴到 Excel 工作簿中,反之亦然。

  • 与在 Excel 工作表中一样,不能使用不规则或“不齐整”的数据。表中每行所包含的列数必须相同。然而,一些列中可以包含空值。Excel 数据表和 PowerPivot 数据表不可交换,但您可以从 PowerPivot 链接到 Excel 表并将 Excel 数据粘贴到 PowerPivot 中。有关详细信息,请参阅通过使用 Excel 链接表添加数据将数据复制并粘贴到 PowerPivot

在公式和表达式中引用表和列

可以通过名称来引用任何表和列。例如,下面的公式说明如何通过使用“完全限定”的名称来引用两个表中的列:

=SUM('New Sales'[Amount]) + SUM('Past Sales'[Amount])

计算公式时,PowerPivot for Excel 首先检查常规语法,然后根据当前上下文中的可能列和表检查所提供的列和表的名称。如果名称不明确或者列或表无法找到,则您将收到有关公式的错误(在发生错误的单元格中,用 #ERROR 字符串代替数据值)。有关对表、列和其他对象的命名要求的详细信息,请参阅 针对 PowerPivot 的 DAX 语法规范中的“命名要求”。

注意注意

上下文是 PowerPivot 工作簿中的一项重要功能,用于生成动态公式。上下文由工作簿中的表、表之间的关系和所应用的所有筛选器确定。有关详细信息,请参阅 DAX 公式中的上下文

表关系

表可以与其他表相关。通过创建关系,可以在另一个表中查找数据,并使用相关值来执行复杂计算。例如,可以使用计算列来查找与当前分销商相关的所有装运记录,然后对每个分销商的装运成本求和。效果类似于参数化查询:可以对当前表中的每一行计算不同的总和。

很多 DAX 函数都要求两个表或多个表之间存在关系,以便定位所引用的列并返回有意义的结果。其他函数将尝试确定关系;但是,为获得最佳结果,您始终应尽量创建关系。有关详细信息,请参阅以下主题:

使用数据透视表时,将数据透视表中所用的所有表关联起来非常重要,这样才能正确计算汇总数据。有关详细信息,请参阅在数据透视表中使用关系

更正公式中的错误

如果在定义计算列时遇到错误,公式可能会包含“语法错误”或“语义错误”。

语法错误最容易解决。它们通常涉及缺少括号或逗号。有关单独函数的语法的帮助,请参阅针对 PowerPivot 的 DAX 函数参考

在语法无误时发生其他类型的错误,但引用的值或列在公式的上下文中没有意义。此类语义错误可能是由于下列任何问题导致的:

  • 公式中引用不存在的列、表或函数。

  • 公式似乎正确,但在 PowerPivot 数据引擎提取数据时,它发现一个类型不匹配,并引发错误。

  • 公式将错误的参数数目或类型传递到函数。

  • 公式中引用有错误的其他列,因此它的值无效。

  • 公式中引用尚未处理的列。如果您将工作簿更改为手动模式,进行了更改,然后从未刷新数据或更新计算,则可能会发生这种情况。

在前四种情况中,DAX 标记包含无效公式的整个列。在最后一种情况中,DAX 会灰显该列,以便指示该列处于未处理的状态中。