本文介绍 Microsoft Excel 中 CUBEVALUE 函数的公式语法和用法。

说明

从多维数据集中返回汇总值。

语法

CUBEVALUE(connection, [member_expression1], [member_expression2], …)

CUBEVALUE 函数语法具有以下参数:

  • Connection    必需。 一个表示多维数据集的连接名称的文本字符串。

  • Member_expression    可选。多维表达式 (MDX) 的文本字符串,用来计算出多维数据集内的成员或元组。另外,member_expression 可以是由 CUBESET 函数定义的集合。使用 member_expression 作为切片器来定义要返回其汇总值的多维数据集部分。如果 member_expression 中未指定度量值,则使用该多维数据集的默认度量值。

备注

  • 当 CUBEVALUE 函数求值时,它会在检索到所有数据之前在单元格中暂时显示“#GETTING_DATA…”消息。

  • 如果 member_expression 使用单元格引用,并且该单元格引用包含 CUBE 函数,则 member_expression 使用引用的单元格中的项目的 MDX 表达式,而不是显示在该引用的单元格中的值。

  • 如果连接名称不是存储在工作簿中的有效工作簿连接,则 CUBEVALUE 函数返回 #NAME? 错误值。如果联机分析处理 (OLAP) 服务器未运行、不可用或返回错误消息,则 CUBEVALUE 函数返回 #NAME? 错误值。

  • 如果元组中至少有一个元素是无效的,则 CUBEVALUE 函数返回 #VALUE! 错误值。

  • 当遇到以下情况时,CUBEVALUE 函数返回错误值 #N/A:

    • member_expression 语法不正确。

    • member_expression 所指定的成员在多维数据集中不存在。

    • 由于指定的值不交叉,元组无效。 (当多个元素来自同一层次结构时会发生此情况。)

    • 集合至少包含一个其维数与其他成员都不同的成员。

    • CUBEVALUE 在以下情况下可能返回错误值 #N/A:如果您在共享连接时引用数据透视表中的基于会话的对象,如计算成员或命名集,而该数据透视表已被删除或者您已将该数据透视表转换为公式 (在“选项”选项卡的“工具”组中,单击“OLAP 工具”,然后单击“转换为公式”)。

问题:Null 值转换为零长度字符串

在 Excel 中,如果某个单元格没有数据(由于您从未更改它或已删除其内容),该单元格将包含一个空值。在许多数据库系统中,空值被称为 Null 值。空值或 Null 值的字面意思就是“没有值”。但是,公式始终不会返回空字符串或 Null 值。公式通常返回以下三种值中的一种:数值、文本值(可能是零长度字符串)或者错误值(如 #NUM! 或 #VALUE)。

如果公式中包含连接到联机分析处理 (OLAP) 数据库的 CUBEVALUE 函数,并且对此数据库的查询的结果为 Null 值,Excel 会将此 Null 值转换成一个零长度字符串,即使该公式本来将返回一个数值也是如此。这会造成这样的情况:某个单元格区域中既包含数字又包含零长度字符串值,而这种情况会影响其他引用该单元格区域的公式的结果。例如,如果 A1 和 A3 包含数值,而 A2 包含带有返回零长度字符串的 CUBEVALUE 函数的公式,则以下公式会返回 #VALUE! 错误:

=A1+A2+A3

为了防止发生这种情况,可以使用 ISTEXT 函数来测试是否存在零长度字符串,并使用 IF 函数将零长度字符串替换成 0(零),如下面的示例所示:

=IF(ISTEXT(A1),0,A1)+IF(ISTEXT(A2),0,A2)+IF(ISTEXT(A3),0,A3)

或者,如果 CUBEVALUE 函数计算结果为零长度字符串,则您还可以在返回 0 值的 IF 条件中嵌套 CUBEVALUE 函数,如下面的示例所示:

=IF (CUBEVALUE("Sales","[Measures].[Profit]","[Time].[2004]","[All Product].[Beverages]")="", 0, CUBEVALUE("Sales","[Measures].[Profit]","[Time].[2004]","[All Product].[Beverages]"))

请注意,SUM 函数不需要进行这样的零长度字符串测试,因为它在计算返回值时将自动忽略零长度字符串。

示例

=CUBEVALUE("Sales","[Measures].[Profit]","[Time].[2004]","[All Product].[Beverages]")

=CUBEVALUE($A$1,"[Measures].[Profit]",D$12,$A23)

=CUBEVALUE("Sales",$B$7,D$12,$A23)