DAXのSUMは1列の数値を合計します。一方、数量×単価のように、各行で式を計算してから合計したい場合はSUMXを使います。SUMXはテーブルを1行ずつ評価する反復子です。ただし、何でもSUMXに置き換える必要はなく、既に売上金額列があるならSUMで十分な場合もあります。この記事では、3行の明細を図で追いながら、SUMX、計算列、関連マスターの単価、検算方法を解説します。
- SUMとSUMXの入力と計算順を説明できる
- 数量×単価の売上メジャーをSUMXで作れる
- 計算列との使い分け、RELATED、フィルター時の結果を検算できる
先に結論:SUMXは各行で式を評価して結果を合計する
SUM('売上'[数量])は数量列の値をそのまま足します。SUMX('売上', '売上'[数量] * '売上'[単価])は各売上行で数量×単価を計算し、その行結果を合計します。
Xが付く関数は反復子としてテーブルの行を評価します。行ごとの式が不要で、1列を合計するだけならSUMの方が意図が簡潔です。
3行の売上明細で計算の順番を比較します。

SUMXの第1引数は評価する行の集合、第2引数は各行で計算する式です。現在のフィルターコンテキストにより、第1引数の売上行も絞られます。
SUM(数量) * SUM(単価)では売上になりません。数量と単価の対応を崩して別々に合計した後で掛けるためです。
数量×単価を行ごとに計算する理由
粒度を保ったまま掛け算する
商品Aを2個・単価1,000円、商品Bを3個・単価500円なら、売上は2,000円+1,500円で3,500円です。数量合計5と単価合計1,500円を掛けると7,500円になり、対応関係を失います。
売上明細の1行が商品・注文などの計算単位です。SUMXはその粒度で式を評価し、フィルター後に残る行結果を合計します。
割引率、原価、税率なども行ごとに異なるなら、同じ考え方で売上、粗利、加重平均の分子を作れます。
| 行 | 数量 | 単価 | 数量×単価 |
|---|---|---|---|
| 商品A | 2 | 1,000円 | 2,000円 |
| 商品B | 3 | 500円 | 1,500円 |
| 合計 | 5 | 単純合計は使わない | 3,500円 |
単価がどのテーブルにあるか確認する
単価が売上明細に保存されているなら、その列を使います。現在の商品マスター単価だけがある場合、過去売上へ現在単価を適用してよいか確認します。価格改定履歴が必要なら、日付を含む価格テーブル設計が必要です。
商品マスターとの1対多関係が正しく、売上行から1つの単価を参照できる場合はRELATEDを使えます。マスターキーの重複や未一致があると正しい単価を取れません。
SUMXが各行を通過するときに作る値を追います。

SUMXのXは、指定したテーブルを1行ずつ評価する動きを表します。数量列の合計と単価列の合計を別々に作る処理ではありません。
SUMXで売上メジャーを作る6ステップ
明細粒度と単価の場所を確認してから式を作ります。

SUMXの式が正しくても、明細が重複していれば結果は増えます。計算式だけでなく、テーブルの粒度と関係を確認します。
手順1:売上テーブルの1行を定義する
注文番号、明細番号、商品番号などから、1行が何を表すか確認します。 ここで大切なのは、画面上で一度だけ正しい結果を作ることではなく、翌月の更新でも同じ条件が再現されるように、操作を適用したステップとして残すことです。
SUMXは第1引数の各行で式を評価するため、重複や集約済み行の意味が結果へ直結します。 Power Queryは上から順に処理を実行するため、列名やデータ型を整える位置が後続処理の安定性を左右します。目的が分かるステップ名へ変更しておくと、引き継ぎ時にも判断しやすくなります。
複合キーで重複件数を確認します。 更新後はプレビューの数行だけで判断せず、行数、null件数、合計値など、変換前に決めた基準と照合してください。
手順2:計算列のデータ型と空白を整える
数量と単価を数値型にし、文字列や型変換エラーを例外へ分離します。 ここで大切なのは、画面上で一度だけ正しい結果を作ることではなく、翌月の更新でも同じ条件が再現されるように、操作を適用したステップとして残すことです。
テキスト値や空白は意図しない無視・空白結果につながります。 Power Queryは上から順に処理を実行するため、列名やデータ型を整える位置が後続処理の安定性を左右します。目的が分かるステップ名へ変更しておくと、引き継ぎ時にも判断しやすくなります。
null、0、負数の件数と意味を確認します。 更新後はプレビューの数行だけで判断せず、行数、null件数、合計値など、変換前に決めた基準と照合してください。
手順3:SUMで数量合計を検算する
[数量] = SUM('売上'[数量])を作り、商品別・総計で確認します。 ここで大切なのは、画面上で一度だけ正しい結果を作ることではなく、翌月の更新でも同じ条件が再現されるように、操作を適用したステップとして残すことです。
SUMXへ進む前に明細フィルターと数量が正しいか切り分けます。 Power Queryは上から順に処理を実行するため、列名やデータ型を整える位置が後続処理の安定性を左右します。目的が分かるステップ名へ変更しておくと、引き継ぎ時にも判断しやすくなります。
元データの数量合計と一致するか確認します。 更新後はプレビューの数行だけで判断せず、行数、null件数、合計値など、変換前に決めた基準と照合してください。
手順4:数量×単価のSUMXを作る
売上テーブルと数量×単価式をSUMXへ指定します。単価がマスターにある場合はRELATEDを使います。 ここで大切なのは、画面上で一度だけ正しい結果を作ることではなく、翌月の更新でも同じ条件が再現されるように、操作を適用したステップとして残すことです。
対応する行の数量と単価を保ったまま計算します。 Power Queryは上から順に処理を実行するため、列名やデータ型を整える位置が後続処理の安定性を左右します。目的が分かるステップ名へ変更しておくと、引き継ぎ時にも判断しやすくなります。
代表3行を手計算し、同じ合計になるか確認します。 更新後はプレビューの数行だけで判断せず、行数、null件数、合計値など、変換前に決めた基準と照合してください。
手順5:商品・地域・期間で再評価する
商品カテゴリ、地域、年月をピボットへ置き、売上メジャーを表示します。 ここで大切なのは、画面上で一度だけ正しい結果を作ることではなく、翌月の更新でも同じ条件が再現されるように、操作を適用したステップとして残すことです。
現在のフィルターで残る売上行だけがSUMXの対象になります。 Power Queryは上から順に処理を実行するため、列名やデータ型を整える位置が後続処理の安定性を左右します。目的が分かるステップ名へ変更しておくと、引き継ぎ時にも判断しやすくなります。
各小計の合計が総計と整合するか確認します。 更新後はプレビューの数行だけで判断せず、行数、null件数、合計値など、変換前に決めた基準と照合してください。
手順6:計算列方式と結果を照合する
検算用に数量×単価の計算列を作れる場合、そのSUMとSUMXメジャーを比較します。 ここで大切なのは、画面上で一度だけ正しい結果を作ることではなく、翌月の更新でも同じ条件が再現されるように、操作を適用したステップとして残すことです。
同じ粒度と式なら結果は一致するため、行式の誤りを発見できます。 Power Queryは上から順に処理を実行するため、列名やデータ型を整える位置が後続処理の安定性を左右します。目的が分かるステップ名へ変更しておくと、引き継ぎ時にも判断しやすくなります。
全体と代表フィルターで差が0か確認します。 更新後はプレビューの数行だけで判断せず、行数、null件数、合計値など、変換前に決めた基準と照合してください。
SUMXの基本式と関連テーブル
単価の保存場所により式が変わります。過去の取引単価を保持することが重要です。
売上明細に単価がある場合
同じ売上行の数量と単価を掛けます。
売上 :=
SUMX (
'売上',
'売上'[数量] * '売上'[単価]
)
現在のピボットセルでフィルターされた売上行が第1引数になります。各行結果は物理列として保存されず、メジャー評価時に計算されます。
商品マスターから単価を参照する場合
売上から商品マスターへ多対1の関係がある例です。
売上_マスター単価 :=
SUMX (
'売上',
'売上'[数量] * RELATED ( '商品'[単価] )
)
RELATEDが1つの対応値を返せる関係が必要です。価格が時点で変わる業務では、現在マスター単価を過去へ使わないようにします。
| 式 | 適する場面 | 注意 |
|---|---|---|
| SUM(列) | 1列の合計 | 式は評価しない |
| SUMX(表,式) | 行ごとの計算後に合計 | 粒度と行数を確認 |
| 計算列+SUM | 行結果を保存・再利用 | モデルサイズが増える |
保存済み売上金額と再計算値は、同じ業務定義かを確認します。

両者に差がある場合、SUMXが誤りとは限りません。割引、税、端数処理など、ソース金額が持つ業務ルールを調べます。
SUMXを検算する方法
まず3〜5行の小さなサンプルで数量×単価を手計算し、SUMXと一致させます。その後、全体、商品別、地域別、月別の順に範囲を広げます。
数量合計、売上合計、単価の最小・最大、未一致商品、重複明細を同時に確認します。売上だけ合っていても、正負の誤りが相殺されている場合があります。
SUMXで確認する6項目です。

SUMXは誤った粒度でも忠実に計算します。式がエラーにならないことと、業務上正しい売上になることは別です。
割引や返品がある場合、数量・単価・符号のルールを確認します。返品を負数量で表すのか、別区分と正数で持つのかにより式が変わります。
SUMXでよくある誤り
SUM同士を掛けてしまう
売上が実際より大きくなり、商品数が増えるほど差が広がります。 この状態で更新を続けると、見た目は完成していても集計軸が分裂したり、明細が欠落したりするため、結果だけを手直ししてはいけません。
数量と単価を別々に合計して対応を崩しています。 原因を特定するときは、エラーが見えた最終ステップから戻るのではなく、値が初めて想定外になったステップを探します。
売上明細をSUMXし、各行で数量×単価を計算します。 修正ルールは元データを直接書き換えるのではなく、クエリの変換または管理可能なマスター表として残します。
3行サンプルの手計算と比較します。 修正後は正常行だけでなく、例外行が0件になったか、または意図した監査表へ分離されたかまで確認します。
マスター単価が複数ある
RELATEDで値を取れない、または結合設計が曖昧です。 この状態で更新を続けると、見た目は完成していても集計軸が分裂したり、明細が欠落したりするため、結果だけを手直ししてはいけません。
商品番号がマスターで一意でない、価格履歴を同じ表へ複数行で持っています。 原因を特定するときは、エラーが見えた最終ステップから戻るのではなく、値が初めて想定外になったステップを探します。
商品マスターを一意にし、価格履歴は日付を含む別設計で適用します。 修正ルールは元データを直接書き換えるのではなく、クエリの変換または管理可能なマスター表として残します。
商品キー重複と売上側未一致を確認します。 修正後は正常行だけでなく、例外行が0件になったか、または意図した監査表へ分離されたかまで確認します。
空白単価が売上0に見える
数量があるのに売上へ反映されない行があります。 この状態で更新を続けると、見た目は完成していても集計軸が分裂したり、明細が欠落したりするため、結果だけを手直ししてはいけません。
単価未登録や関係未一致が空白のまま計算されています。 原因を特定するときは、エラーが見えた最終ステップから戻るのではなく、値が初めて想定外になったステップを探します。
単価空白を例外メジャーや監査表で抽出し、0へ置換して隠さないようにします。 修正ルールは元データを直接書き換えるのではなく、クエリの変換または管理可能なマスター表として残します。
数量あり・単価空白の件数と影響数量を確認します。 修正後は正常行だけでなく、例外行が0件になったか、または意図した監査表へ分離されたかまで確認します。
SUMXを入れ子にして重複計算する
式が遅く、期待より大きい値を返します。 この状態で更新を続けると、見た目は完成していても集計軸が分裂したり、明細が欠落したりするため、結果だけを手直ししてはいけません。
必要以上に大きなテーブルや重複した粒度を反復しています。 原因を特定するときは、エラーが見えた最終ステップから戻るのではなく、値が初めて想定外になったステップを探します。
計算粒度を1つに定め、基本メジャーや集約表を見直します。 修正ルールは元データを直接書き換えるのではなく、クエリの変換または管理可能なマスター表として残します。
同じ結果をより単純な式で再現し、代表フィルターを照合します。 修正後は正常行だけでなく、例外行が0件になったか、または意図した監査表へ分離されたかまで確認します。
返品と値引きでは符号がどの列へ入るかを追います。

負の数量と負の単価を同時に使うと正の金額になるため、符号を担う列を一つに決めます。
SUMXと計算列を使い分ける
SUMXメジャーは結果列を保存せず、現在フィルターで必要な計算を行います。計算列は更新時に各行の値を保存し、別の列や分類で再利用しやすい一方、モデルサイズが増えます。
行ごとの売上金額を明細として出力・監査したい場合は、Power Queryで列を作る選択もあります。計算場所は、データ準備、モデルサイズ、再利用、動的フィルターの必要性で決めます。
| 方法 | 向く用途 | 特徴 |
|---|---|---|
| SUMXメジャー | 動的な集計 | 結果列を保存しない |
| DAX計算列 | 行結果の再利用 | 更新時に保存 |
| Power Query列 | 前処理で固定計算 | 読み込み前に計算 |
| SUM | 既存金額列の合計 | 最も単純 |
既に信頼できる売上金額列がソースにあるなら、SUMで合計する方が業務定義を保てる場合があります。数量×単価とソース金額の差を監査し、税・割引・丸めの違いを確認します。
税や割引を含む売上では、計算順序と丸め単位も粒度の一部です。明細ごとに割引し1円未満を丸めてから合計する業務と、注文全体へ割引率を掛けて最後に丸める業務では結果が変わります。SUMXへ式を書く前に、基幹システムが採用する順序を確認し、同じ明細サンプルで差額を検算します。
返品や訂正行も同様です。負の数量、負の単価、取消区分のどれで表すかを統一しないまま掛け算すると、負×負で正の売上になることがあります。符号をどの列が担うかを決め、通常売上・返品・値引きの代表行を別々に手計算してください。
実務で継続運用するためのポイント
メジャー名と表示形式を統一する
DAXメジャーには、値の定義が分かる名前と表示形式を設定します。金額、数量、率、指数を区別し、同じ『前年比』でも差額、成長率、前年を100とした指数のどれかを名称から判断できるようにします。
基本メジャー、期間比較、比率、表示用メジャーをフォルダーまたは命名規則で整理します。式の中へ同じ集計を繰り返さず、検算済みの基本メジャーを参照すると、定義変更の影響範囲を小さくできます。
検算用ピボットテーブルを残す
完成ダッシュボードとは別に、日付、商品、地域などを自由に置ける小さな検算用ピボットを残します。基本値と派生値を同時に表示し、総計、代表明細、フィルターなし、単一選択の状態を比較します。
メジャーが正しく見える1つのセルだけを確認せず、境界日、空白、0、未一致、複数選択などの条件をテストします。DAXはセルのフィルターコンテキストで再評価されるため、テストケースを変えることが式の品質確認になります。
定義とモデル変更を記録する
メジャーの目的、分子、分母、対象期間、空白時の扱い、参照テーブルを一覧にします。リレーション、日付テーブル、列名を変更した場合は、関係するメジャーとピボットの検算結果を記録します。
数値の定義は式だけでは伝わりません。利用者が同じ言葉を別の意味で使わないよう、レポート上の注記とメジャー定義をそろえ、変更後は主要数値を確定済みレポートへ照合します。
よくある質問
SUMXはSUMより遅いですか?
一般に行式を評価する分だけ処理は複雑ですが、速度はモデル、行数、式、フィルターに依存します。まず正しい粒度と単純な式を作り、実データで測定します。
AVERAGEXなど他のX関数も同じですか?
基本は同じで、第1引数のテーブルを行ごとに評価し、その結果を平均・最大などで集約します。何を1行とするかが重要です。
売上金額の計算列を作ればSUMXは不要ですか?
その列が正しく、保存コストを許容できるならSUMで合計できます。動的な式や複数シナリオを切り替える場合はSUMXメジャーが柔軟です。
UdemyでDAX・Power Pivotをさらに学びたい方へ
SUMXの行ごとの評価は、SUMとの計算結果を同じデータで比較することで、イテレーターの役割を具体的に理解できます。
記事の内容を動画と演習で復習したい方へ、関連性の高いUdemy講座を3つ選びました。
1.Microsoft Excel – Power Pivot, Power Query, DAX 入門講座
こんな方におすすめ
ExcelでPower Query、Power Pivot、DAXがどう連携するのかを、レポート作成の流れに沿って学びたい方に向いています。
2.3時間でDAXの基礎を徹底解説 Power BIでのレポート作成のレベルをあげる!
こんな方におすすめ
CALCULATE、前年比、累計、SUMXなど、この記事群で扱うDAXの考え方と基本関数を集中して学びたい方に向いています。
3.【Power Pivot】大量データを瞬時に集計・分析!DAX関数&ダッシュボード作成実践講座
こんな方におすすめ
Excel Power PivotでデータモデルとDAXを組み合わせ、実務の集計やダッシュボード作成まで進みたい方に向いています。
Udemyは動画の再生速度を調整でき、必要な箇所を繰り返し確認できます。価格は講座やセール時期によって変わるため、申込み前に講座ページの内容、対応環境、最新価格をご確認ください。
※本記事にはアフィリエイトリンクが含まれます。リンク経由で申込みがあった場合、運営者に報酬が発生することがあります。
まとめ:行の対応を保って計算する
SUMは1列の数値を合計し、SUMXは指定テーブルの各行で式を評価してから結果を合計します。
数量×単価では、数量と単価の行対応を保つ必要があるため、売上明細をSUMXします。マスター単価を使う場合は関係の一意性と価格時点を確認します。
代表行の手計算、数量・単価の型、未一致、重複、小計・総計を検算し、SUMX、計算列、Power Query列、既存金額列を用途に応じて選びます。

コメント