Sign in with Microsoft
Sign in or create an account.
Hello,
Select a different account.
You have multiple accounts
Choose the account you want to sign in with.

初次瞭解如何使用Power Pivot時,大部分的用戶會發現實際電力正在以某種方式匯總或計算結果。 如果您的資料列含有數值,您可以在數據透視表或 Power View 欄位清單中選取數據,輕鬆匯總數據。 根據本質,因為它是數值,因此會自動加總、平均、計算,或您選取的任何匯總類型。 這稱為隱含量值。 隱含量值非常適合快速且輕鬆地匯總,但是有限制,而且這些限制幾乎一律可以用明確的 量值計算結果列來克服。

讓我們先看看一個範例,其中我們使用計算結果列為名為 [產品] 的數據表中的每一列新增文字值。 [產品] 資料表中的每一列都包含關於我們所銷售每個產品的各種相關信息。 我們有 [產品名稱]、[色彩]、[大小]、[經銷商價格] 等欄。 我們有另一個名為 [產品類別] 的相關數據表,其中包含 ProductCategoryName 數據行。 我們想要的是讓 [產品] 資料表中的每個產品包含 [產品類別] 數據表中的產品類別名稱。 在 [產品] 數據表中,我們可以建立名為 [產品類別] 的計算結果列,如下所示:

產品類別計算欄

我們新的 [產品類別] 公式使用 RELATED DAX 函數,從相關 [產品類別] 資料表的 [ProductCategoryName] 數據行取得值,然後在 [產品] 資料表中的每一列) 輸入每個產品的值 (。

這是一個很好的範例,說明如何使用計算結果列,為日後可在數據透視表的 [列]、[欄] 或 [FILTERS] 區域或 Power View 報表中使用的每一列新增固定值。

讓我們建立另一個範例,我們想要計算產品類別的利潤。 這是常見的案例,即使是在許多教學課程中也是如此。 我們在數據模型中有具有交易數據的 [銷售] 數據表,且 [銷售] 數據表與 [產品類別] 數據表之間有關聯。 在 [銷售] 數據表中,我們有一個包含銷售金額的數據行,以及另一個含有成本的數據行。

我們可以建立計算結果列,藉由從 [SalesAmount] 數據行中的值減去 COGS 數據行中的值,來計算每一列的利潤金額,如下所示:

Power Pivot 表格中的 [收益] 欄

現在,我們可以建立數據透視表,並將 [產品類別] 欄位拖曳到 COLUMNS,而我們在 PowerPivot 數據表中數據表中數據行 (新的 [Profit] 欄位則是 [數據透視表字段清單]) 中的字段。 結果得出名為 Sum of Profit 的隱含量值。 這是每個不同產品類別的 [利潤] 欄中值的匯總金額。 結果看起來像這樣:

簡易樞紐分析表

在此情況下,Profit 在 VALUES 中做為欄位是有意義的。 如果我們將 Profit 放在 COLUMNS 區域,數據透視表看起來會像這樣:

沒有實用值的樞紐分析表

我們的 Profit 欄位在放置於 COLUMNS、ROWS 或 FILTERS 區域時,不會提供任何有用的資訊。 它在 VALUES 區域中做為匯總值才有意義。

我們所做的是建立一個名為 Profit 的數據行,該欄會計算 Sales 數據表中每一列的利差。 接著我們將 Profit 新增至數據透視表的 [值] 區域,自動建立隱含量值,其中會針對每個產品類別計算結果。 如果您認為我們的產品類別真的計算了兩次利潤,則表示您是正確的。 我們先計算 Sales 數據表中每個數據列的利潤,然後將 [利潤] 新增到每個產品類別匯總的 [值] 區域。 如果您也認為我們並不需要建立 Profit 計算結果列,您也是正確的。 但是,我們該如何計算利潤而不建立 Profit 計算結果列?

利潤,最好用明確的量值來計算。

目前,我們要在數據透視表的 [值] 中,將 [銷售] 數據表中的 [利潤] 計算結果列保留在 [COLUMNS] 和 [利潤] 中,以比較結果。

在 [銷售] 數據表的計算區域中,我們將建立名為 [合計利潤 ] (的量值,以避免命名衝突) 。 最後,它會產生與之前相同的結果,但不會產生 Profit 計算結果列。

首先,在 [銷售] 數據表中,選取 [SalesAmount] 數據行,然後按兩下 [自動求和] 以建立明確的 [SalesAmount加總] 量值。 請記住,明確量值是我們在 Power Pivot 數據表的計算區域中建立的量值。 我們也會對 COGS 資料行執行相同的動作。 我們將重新命名這些 Total SalesAmount Total COGS ,以便更容易識別。

Power Pivot 中的 [自動加總] 按鈕

然後,我們使用此公式建立另一個量值:

Total Profit:=[ Total SalesAmount] - [TOTAL COGS]

附註: 我們也可以將公式寫成 Total Profit:=SUM ([SalesAmount]) - SUM ([COGS]) ,但透過建立個別的 [總銷售額] 和 [合計 COGS] 量值,我們也可以在數據透視表中使用這些量值,而且可以在各種其他量值公式中使用它們做為自變數。

將新的合計利潤量值格式變更為貨幣之後,我們可以將它新增至數據透視表。

樞紐分析表

您可以看到我們新的 [合計利潤] 量值會傳回與建立 Profit 計算結果列,然後將它放在 VALUES 中相同的結果。 差異在於我們的 [合計利潤] 量值更有效率,並讓我們的數據模型更乾淨、更精簡,因為我們目前只針對我們為數據透視表選取的字段進行計算。 畢竟,我們並不需要 Profit 計算結果列。

為什麼最後一個部分很重要? 計算結果欄會將數據新增至數據模型,而數據會佔用記憶體。 如果我們重新整理數據模型,也需要處理資源以重新計算 Profit 欄中的所有值。 我們並不需要佔用像這樣的資源,因為當我們在數據透視表中選取要 Profit 的欄位時,我們真的想要計算利潤,例如產品類別、地區或日期。

讓我們看看另一個範例。 其中一個計算結果列建立的結果,乍看之下看起來是正確的,但是...

在此範例中,我們想要以佔總銷售額的百分比來計算銷售量。 我們在 [銷售] 數據表中建立一個名為 [銷售量百分比] 的 計算結果欄,如下所示:

銷售計算欄的 %

我們的公式指出:針對 [銷售] 數據表中的每一列,將 [SalesAmount] 數據行中的金額除以 [SalesAmount] 欄中所有金額的加總。

如果我們建立數據透視表並將產品類別新增至 COLUMNS,然後選取 [銷售] 欄中新的 [百分比 ] 來將它放到 [值] 中,我們會取得每個產品類別銷售總額的總和。

顯示針對產品類別之銷售 % 加總的樞紐分析表

還行。 到目前為止,這看起來不錯。 但是,讓我們新增交叉分析篩選器。 我們新增 「行事歷年」,然後選取一年。 在此情況下,我們選取 [2007]。 這是我們取得的功能。

樞紐分析表中銷售錯誤結果的 % 加總

乍看之下,這可能仍然正確無誤。 但是,我們的百分比實際上應該總計 100%,因為我們想知道 2007 年每個產品類別的總銷售額百分比。 那麼哪裡出了問題呢?

我們的 [銷售額百分比] 欄會針對 SalesAmount 欄中值的每一列計算百分比,除以 [SalesAmount] 欄中所有值的總和。 計算結果列中的值是固定的。 這是表格中每個數據列不可復原的結果。 當我們將 銷售的百分比 加到數據透視表時,它會匯總為 SalesAmount 欄中所有值的總和。 [銷售額] 欄中所有值的總和永遠為 100%。

提示: 請務必閱讀 DAX 公式中的上下文。 它可讓您深入瞭解列層級上下文及篩選上下文,這也是我們在此描述的內容。

我們可以刪除 [銷售額百分比] 計算結果列,因為這不會對我們有所説明。 相反地,我們將建立一個可正確計算總銷售額百分比的量值,不論套用了任何篩選或交叉分析篩選器。

還記得我們先前建立的 TotalSalesAmount 量值,也就是只加總 SalesAmount 數據行的量值嗎? 我們在 Total Profit 量值中使用它做為自變數,我們將在新的計算欄位中再次使用它做為自變數。

提示: 在數據透視表或報表中,建立如 Total SalesAmount 和 Total COGS 等明確量值不僅有用,而且在您需要結果為自變數時,這些量值在其他量值中也很實用。 這可讓您的公式更有效率且更容易閱讀。 這是良好的數據模型做法。

我們會使用下列公式建立新的量值:

總銷售額的百分比:= ([Total SalesAmount]) / CALCULATE ([Total SalesAmount], ALLSELECTED () )

此公式指出:將結果與 Total SalesAmount 除以 SalesAmount 的總和,而不需要數據透視表中所定義以外的任何欄或列篩選。

提示: 請務必閱讀 DAX 參照中的 CALCULATEALLSELECTED 函數。

現在,如果我們將 總銷售額的新增百分比 新增至數據透視表,我們就會收到:

樞紐分析表中銷售正確結果的 % 加總

看起來好多了。 現在,我們每個產品類別 的總銷售額百分比 ,會計算為 2007 年總銷售額的百分比。 如果我們選取不同的一年,或在 CalendarYear 交叉分析篩選器中選取一年以上,我們會取得產品類別的新百分比,但是總計仍然是 100%。 我們也可以新增其他交叉分析篩選器和篩選器。 無論套用何種交叉分析篩選器或篩選,我們佔總銷售額的百分比一律會產生佔總銷售額的百分比。 使用量值時,結果一律會根據 COLUMNS 和 ROWS 中的欄位所決定的上下文,以及套用的任何篩選或交叉分析篩選器來計算。 這是量值的力量。

以下是一些指導方針,可協助您判斷計算結果列或度量是否適合特定計算需求:

使用計算結果列

  • 如果您希望新數據出現在數據透視表中的 [列]、[欄] 或 [篩選],或 Power View 視覺效果中的 [座標軸]、[圖例] 或 [磚依據],則必須使用計算結果列。 就像一般數據域一樣,計算結果列可以做為任何區域的欄位,如果是數值,也可以在 VALUES 中匯總。

  • 如果您想要將新資料設為該列的固定值。 例如,您有一個含有日期數據行的日期數據表,而您想要另一個只包含月份數的數據行。 您可以建立計算結果列,只計算 [日期] 欄中日期的月數。 例如,=MONTH ('Date'[Date]) 。

  • 如果您想要在表格中新增每一列的文字值,請使用計算結果列。 具有文字值的欄位永遠無法在 [值] 中匯總。 例如,=FORMAT ('Date'[Date],“mmmm”) 會在 [日期] 數據表的 [日期] 數據行中為每個日期提供月份名稱。

使用量值

  • 如果您的計算結果永遠取決於您在數據透視表中選取的其他欄位。

  • 如果您需要執行更複雜的計算,例如根據某種篩選來計算計數,或是計算年份或變異數,請使用導出字段。

  • 如果您想要將活頁簿的大小保持在最低限度並最大化其效能,請盡可能建立任意數量的計算量值。 在許多情況下,您所有的計算都可以進行量值,大幅縮減活頁簿大小並加快重新整理時間。

請記住,建立計算結果列並沒有任何錯誤,就像我們使用 Profit 數據行一樣,然後在數據透視表或報表中匯總。 實際上,這是一種很好且簡單的方法,可讓您瞭解並建立自己的計算。 隨著您對 Power Pivot 這兩項強大功能的理解而成長,您會想要建立最有效率且最精確的數據模型。 希望您在這裡所學到的內容有説明。 還有一些其他很棒的資源也能協助您。 以下是幾個內容: DAX 公式中的上下文Power Pivot 中的匯總,以及 DAX 資源中心的上下文。 此外,雖然比較進階,並導向會計和財務專業人員,但 Excel 中 Microsoft Power Pivot 的 [損益數據模型] 和 [分析 ] 範例會載入絕佳的數據模型和公式範例。

Need more help?

Want more options?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?
By pressing submit, your feedback will be used to improve Microsoft products and services. Your IT admin will be able to collect this data. Privacy Statement.

Thank you for your feedback!

×