本文說明 Microsoft Excel 中 CUBEVALUE 函數的公式語法及使用方式。
描述
會從 Cube 傳回彙總值。
語法
CUBEVALUE(connection, [member_expression1], [member_expression2], …)
CUBEVALUE 函數語法具有下列引數:
-
Connection 必要。 連線到 Cube 之連線名稱的文字字串。
-
Member_expression 選擇性。 多維度運算式 (MDX) 的文字字串,會估算出 Cube 中的成員或 Tuple。 member_expression 也可以是以 CUBESET 函數定義的集合。 使用 member_expression 做為交叉分析篩選器以定義會傳回其彙總值之 Cube 的一部分。 如果沒有在 member_expression 中指定量值,則會使用該 Cube 的預設量值。
註解
-
當 CUBEVALUE 函數進行估算時,在所有資料擷取完成之前,該函數會在儲存格中暫時顯示 "#GETTING_DATA…" 訊息。
-
如果將儲存格參照用於 member_expression,且該儲存格參照包含 CUBE 函數,則 member_expression 會使用所參照儲存格中項目的 MDX 運算式,而不使用在該參照儲存格中顯示的值。
-
如果連線名稱不是活頁簿中儲存的有效活頁簿連線,則 CUBEVALUE 會傳回 #NAME? 的錯誤值。 如果線上分析處理 (OLAP) 伺服器並未執行、不可用,或傳回錯誤訊息,則 CUBEVALUE 會傳回 #NAME? 的錯誤值。
-
如果 Tuple 內至少有一個元素無效,則 CUBEVALUE 會傳回 #VALUE! 的錯誤值。
-
CUBEVALUE 傳回 #N/A 錯誤值的時機:
-
member_expression 語法不正確。
-
Cube 中不存在 member_expression 指定的成員。
-
Tuple 無效,因為指定的值沒有交集。 (這可能發生於來自相同階層的多個元素。)
-
集中至少有一個成員的維度與其他成員不同。
-
如果在共用連線時參照數據透視表中的計算成員或具名集等會話物件,則 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 函數計算結果為零長度字串時,將 CUBEVALUE 函數已巢狀方式放入會傳回 0 值的 IF 條件中:
=IF (CUBEVALUE("銷售","[量值].[利潤]","[時間].[2004]","[所有產品].[飲料]")="", 0, CUBEVALUE("銷售","[量值].[利潤]","[時間].[2004]","[所有產品].[飲料]"))
請注意,SUM 函數不需要對零長度字串進行此檢定,因為它會自動在計算傳回值時,忽略零長度字串。
範例
=CUBEVALUE("銷售","[量值].[利潤]","[時間].[2004]","[所有產品].[飲料]")
=CUBEVALUE($A$1,"[量值].[利潤]",D$12,$A23)
=CUBEVALUE("銷售",$B$7,D$12,$A23)