本文介绍 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 工具”,然后单击“ 转换为 Formulas”。)
-
问题: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)