CALCULATEはDAXの中心的な関数ですが、『条件付きSUMのようなもの』と覚えるだけでは応用できません。CALCULATEは、現在のフィルターコンテキストを変更し、その新しい条件で式を評価します。商品色を青へ限定する、地域フィルターを外して全体比を作る、現在期間を前年へ移す処理も同じ考え方です。この記事では、追加・上書き・削除の3つの動きと、つまずきやすいコンテキスト遷移まで図解します。
- フィルターコンテキストとCALCULATEの役割を説明できる
- フィルターの追加・上書き・削除を式で使い分けられる
- KEEPFILTERS、REMOVEFILTERS、行コンテキスト遷移を検算できる
先に結論:CALCULATEは計算式より先に評価環境を作り替える
CALCULATE([売上], '商品'[色] = "青")は、現在のセルへ『色=青』という条件を適用し、その環境で[売上]を再評価します。主役はSUMではなく、フィルターの変更です。
同じ列に既存フィルターがあれば、通常は新しい条件で上書きされます。KEEPFILTERSで交差させたり、REMOVEFILTERSで特定フィルターを削除したりできます。
現在のセルとCALCULATE後で、残る条件を比較してください。

指定していない年・地域のフィルターは残ります。『すべての条件を消してから青を計算する』わけではない点が重要です。
CALCULATEは『式を、変更後のフィルターコンテキストで評価する』関数です。まず現在の条件を書き出し、どの列を追加・上書き・削除するかを考えます。
フィルターコンテキストとは何か
ピボットのセルごとに条件がある
ピボットテーブルで行に地域、列に年を置くと、各セルは『東日本かつ2026年』のような条件を持ちます。スライサー、レポートフィルター、行・列見出し、関係を通じた条件が組み合わさります。
メジャーはセルごとにその条件で再評価されます。[売上]という同じ式でも、東日本のセル、2026年のセル、総計セルでは対象行が違います。
CALCULATEはこの現在条件を受け取り、一部を変えてから式を評価します。現在条件を意識せず式だけ読むと、同じ式が場所によって違う値を返す理由を説明できません。
| フィルターの動き | 代表例 | 結果 |
|---|---|---|
| 追加 | 色=青が未選択 | 青条件を加える |
| 上書き | 色=赤のセルで色=青 | 青へ置き換える |
| 保持・交差 | KEEPFILTERS(色=青) | 既存条件との共通部分 |
| 削除 | REMOVEFILTERS(色) | 色に関係ない合計 |
基本メジャーを小さく作る
まず[売上]、[数量]、[粗利]などの基本メジャーを作り、CALCULATEの第1引数から参照します。長い集計式と複雑なフィルターを同時に書くと、原因を切り分けにくくなります。
商品、日付、地域などのディメンションテーブルからフィルターするのが基本です。ファクト表の属性を直接使う場合と結果が異なることがあるため、モデルの関係を確認します。
CALCULATEの前後で、データを絞る条件がどの順に届くかを追います。

CALCULATEが直接データを書き換えるわけではありません。対象行を決めるフィルター環境を変え、その環境でメジャーを計算し直します。
CALCULATEを理解する6ステップ
式を読む順番を、現在条件から結果までに分けます。

実際の内部評価にはさらに細かな規則がありますが、まず『現在条件→変更→再評価』の3段階で読むと、多くのメジャーを説明できます。
手順1:第1引数の式を単独で検算する
CALCULATEへ渡す[売上]をピボットへ置き、現在の行・列で正しい値か確認します。 ここで大切なのは、画面上で一度だけ正しい結果を作ることではなく、翌月の更新でも同じ条件が再現されるように、操作を適用したステップとして残すことです。
基本式が誤っているとフィルターを直しても結果は合いません。 Power Queryは上から順に処理を実行するため、列名やデータ型を整える位置が後続処理の安定性を左右します。目的が分かるステップ名へ変更しておくと、引き継ぎ時にも判断しやすくなります。
総計と代表セルを元データへ照合します。 更新後はプレビューの数行だけで判断せず、行数、null件数、合計値など、変換前に決めた基準と照合してください。
手順2:セルのフィルターコンテキストを把握する
年、月、商品、地域、スライサーなど、現在セルへ適用される条件を書き出します。 ここで大切なのは、画面上で一度だけ正しい結果を作ることではなく、翌月の更新でも同じ条件が再現されるように、操作を適用したステップとして残すことです。
CALCULATEが何を変えるかは、変更前の状態によって決まります。 Power Queryは上から順に処理を実行するため、列名やデータ型を整える位置が後続処理の安定性を左右します。目的が分かるステップ名へ変更しておくと、引き継ぎ時にも判断しやすくなります。
総計セルと明細セルで条件がどう違うか確認します。 更新後はプレビューの数行だけで判断せず、行数、null件数、合計値など、変換前に決めた基準と照合してください。
手順3:どの列のフィルターを変えるか決める
色、カテゴリ、年など、式のフィルター引数が参照する列を特定します。 ここで大切なのは、画面上で一度だけ正しい結果を作ることではなく、翌月の更新でも同じ条件が再現されるように、操作を適用したステップとして残すことです。
同じ列の既存フィルターは通常上書きされ、別列の条件は残ります。 Power Queryは上から順に処理を実行するため、列名やデータ型を整える位置が後続処理の安定性を左右します。目的が分かるステップ名へ変更しておくと、引き継ぎ時にも判断しやすくなります。
意図せずテーブル全体をフィルターしていないか確認します。 更新後はプレビューの数行だけで判断せず、行数、null件数、合計値など、変換前に決めた基準と照合してください。
手順4:ブールフィルターの結果を確認する
'商品'[色] = "青"など、単一テーブル列の条件を適用します。 ここで大切なのは、画面上で一度だけ正しい結果を作ることではなく、翌月の更新でも同じ条件が再現されるように、操作を適用したステップとして残すことです。
簡単な条件はFILTERより直接指定した方が意図と処理が分かりやすい場合があります。 Power Queryは上から順に処理を実行するため、列名やデータ型を整える位置が後続処理の安定性を左右します。目的が分かるステップ名へ変更しておくと、引き継ぎ時にも判断しやすくなります。
赤を選んだセル、色未選択セル、総計で値を比較します。 更新後はプレビューの数行だけで判断せず、行数、null件数、合計値など、変換前に決めた基準と照合してください。
手順5:REMOVEFILTERSとKEEPFILTERSを使い分ける
全体比では対象列のフィルターを削除し、既存条件と交差させたい場合はKEEPFILTERSを使います。 ここで大切なのは、画面上で一度だけ正しい結果を作ることではなく、翌月の更新でも同じ条件が再現されるように、操作を適用したステップとして残すことです。
上書き、交差、削除ではビジネス上の意味が異なります。 Power Queryは上から順に処理を実行するため、列名やデータ型を整える位置が後続処理の安定性を左右します。目的が分かるステップ名へ変更しておくと、引き継ぎ時にも判断しやすくなります。
スライサー選択時の分母や共通部分が期待どおりか確認します。 更新後はプレビューの数行だけで判断せず、行数、null件数、合計値など、変換前に決めた基準と照合してください。
手順6:総計・明細・スライサーで検算する
同じメジャーを色別、地域別、年別、総計へ置き、各フィルター状態で結果を比較します。 ここで大切なのは、画面上で一度だけ正しい結果を作ることではなく、翌月の更新でも同じ条件が再現されるように、操作を適用したステップとして残すことです。
1つのセルだけでは偶然正しく見えることがあります。 Power Queryは上から順に処理を実行するため、列名やデータ型を整える位置が後続処理の安定性を左右します。目的が分かるステップ名へ変更しておくと、引き継ぎ時にも判断しやすくなります。
最低でも既存フィルターなし、同列の別値、別列フィルターありをテストします。 更新後はプレビューの数行だけで判断せず、行数、null件数、合計値など、変換前に決めた基準と照合してください。
CALCULATEの基本パターン
売上メジャーを再利用し、フィルター変更だけを式へ表します。
色を青へ上書きする
現在の色選択にかかわらず青色商品の売上を返す基本例です。
青色売上 :=
CALCULATE (
[売上],
'商品'[色] = "青"
)
年や地域のフィルターは残り、商品[色]のフィルターが青へ変わります。色=赤のセルでも青色売上を返す点を確認します。
色フィルターを削除して全体比を作る
現在売上を、色に関係しない同じ年・地域の売上で割ります。
色構成比 :=
DIVIDE (
[売上],
CALCULATE (
[売上],
REMOVEFILTERS ( '商品'[色] )
)
)
商品テーブル全体ではなく色列だけを解除するため、カテゴリなど別列のフィルターを維持できます。分母の範囲を意図に合わせます。
既存条件との交差を保つ
既存の色フィルターへ青条件を交差させます。
青色売上_交差 :=
CALCULATE (
[売上],
KEEPFILTERS ( '商品'[色] = "青" )
)
色=赤のセルでは赤と青の共通部分がないため空白になります。上書きとの違いを比較するとKEEPFILTERSを理解しやすくなります。
| 現在の色 | 通常の青条件 | KEEPFILTERSの青条件 |
|---|---|---|
| 未選択 | 青売上 | 青売上 |
| 青 | 青売上 | 青売上 |
| 赤 | 青売上 | 空白 |
同じ色列への条件でも、上書き・交差・削除で残る行が変わります。

関数名の違いは構文上の差ではなく、最終的に残る売上行の集合の差として確認します。
CALCULATEを検算する方法
検算用ピボットへ[売上]と変更後メジャーを並べ、対象列を行へ置きます。色別なら赤、青、総計の3行で比較し、上書きと交差の違いを見ます。
フィルター削除では、削除した列だけが分母から外れているかを確認します。カテゴリや年まで外れていないか、スライサーを切り替えて比較します。
式の結果を6つの観点で確認します。

総計は表示行を足し上げるとは限らず、総計のフィルターコンテキストで式が再評価されます。各セルの条件を説明できるかが検算の中心です。
DAX Studioなどの外部ツールを使わなくても、小さなピボットテーブルで条件を1つずつ追加すれば多くの問題を切り分けられます。複雑な式ほど検算用メジャーを分けます。
CALCULATEでつまずく原因
フィルターが追加ではなく置き換わる
赤色を選んでいるのに青色売上が表示されます。 この状態で更新を続けると、見た目は完成していても集計軸が分裂したり、明細が欠落したりするため、結果だけを手直ししてはいけません。
同じ色列へのブールフィルターは既存条件を通常上書きします。 原因を特定するときは、エラーが見えた最終ステップから戻るのではなく、値が初めて想定外になったステップを探します。
交差が目的ならKEEPFILTERSで包みます。 修正ルールは元データを直接書き換えるのではなく、クエリの変換または管理可能なマスター表として残します。
未選択、青、赤の3状態を比較します。 修正後は正常行だけでなく、例外行が0件になったか、または意図した監査表へ分離されたかまで確認します。
ALLでフィルターを消しすぎる
色構成比の分母が商品カテゴリや他の条件まで無視します。 この状態で更新を続けると、見た目は完成していても集計軸が分裂したり、明細が欠落したりするため、結果だけを手直ししてはいけません。
列ではなく商品テーブル全体へALLやREMOVEFILTERSを使っています。 原因を特定するときは、エラーが見えた最終ステップから戻るのではなく、値が初めて想定外になったステップを探します。
解除したい列だけを指定します。 修正ルールは元データを直接書き換えるのではなく、クエリの変換または管理可能なマスター表として残します。
カテゴリスライサーを変えて分母が変化するか確認します。 修正後は正常行だけでなく、例外行が0件になったか、または意図した監査表へ分離されたかまで確認します。
FILTERを多用して式が読めない
単純な等価条件でも長いFILTER式になり、意図が分かりません。 この状態で更新を続けると、見た目は完成していても集計軸が分裂したり、明細が欠落したりするため、結果だけを手直ししてはいけません。
ブールフィルターで書ける条件をテーブルフィルターにしています。 原因を特定するときは、エラーが見えた最終ステップから戻るのではなく、値が初めて想定外になったステップを探します。
単一列の簡単な条件は直接指定し、複雑な行条件だけFILTERを使います。 修正ルールは元データを直接書き換えるのではなく、クエリの変換または管理可能なマスター表として残します。
変更前後で同じ結果になる代表条件を照合します。 修正後は正常行だけでなく、例外行が0件になったか、または意図した監査表へ分離されたかまで確認します。
計算列で値が固定される
ピボットの選択を変えても期待した動的結果になりません。 この状態で更新を続けると、見た目は完成していても集計軸が分裂したり、明細が欠落したりするため、結果だけを手直ししてはいけません。
メジャーではなく計算列へCALCULATEを書いています。 原因を特定するときは、エラーが見えた最終ステップから戻るのではなく、値が初めて想定外になったステップを探します。
分析結果はメジャーで作り、計算列は行ごとの固定属性に限定します。 修正ルールは元データを直接書き換えるのではなく、クエリの変換または管理可能なマスター表として残します。
スライサー変更でメジャーが再評価されることを確認します。 修正後は正常行だけでなく、例外行が0件になったか、または意図した監査表へ分離されたかまで確認します。
ディメンションからファクトへ条件が流れる基本形です。

CALCULATEで商品テーブルを絞ると、その条件は関係を通じて売上へ伝わります。関係の向きや非アクティブ状態も結果を左右します。
CALCULATEとFILTERの役割を分ける
CALCULATEはフィルターコンテキストを変更して式を評価します。FILTERは条件に合う行だけのテーブルを返します。複雑な条件テーブルが必要なときにFILTERをCALCULATEの引数として使います。
単純な列=値はCALCULATEへ直接書くと、どの列を上書きするか読みやすくなります。複数列やメジャー条件、上位条件などではFILTERが必要になる場合があります。
| 目的 | 書き方 | ポイント |
|---|---|---|
| 単一列の等価条件 | CALCULATE([売上], 色=”青”) | 意図が明確 |
| 複雑な行条件 | CALCULATE([売上], FILTER(…)) | 対象テーブルを意識 |
| 既存条件と交差 | KEEPFILTERS | 上書きしない |
| 条件を削除 | REMOVEFILTERS | 列範囲を限定 |
フィルター引数を増やすと通常ANDで組み合わされます。OR条件や別テーブルをまたぐ条件は、データモデルの設計やFILTERするテーブルの粒度を確認します。
実務で継続運用するためのポイント
メジャー名と表示形式を統一する
DAXメジャーには、値の定義が分かる名前と表示形式を設定します。金額、数量、率、指数を区別し、同じ『前年比』でも差額、成長率、前年を100とした指数のどれかを名称から判断できるようにします。
基本メジャー、期間比較、比率、表示用メジャーをフォルダーまたは命名規則で整理します。式の中へ同じ集計を繰り返さず、検算済みの基本メジャーを参照すると、定義変更の影響範囲を小さくできます。
検算用ピボットテーブルを残す
完成ダッシュボードとは別に、日付、商品、地域などを自由に置ける小さな検算用ピボットを残します。基本値と派生値を同時に表示し、総計、代表明細、フィルターなし、単一選択の状態を比較します。
メジャーが正しく見える1つのセルだけを確認せず、境界日、空白、0、未一致、複数選択などの条件をテストします。DAXはセルのフィルターコンテキストで再評価されるため、テストケースを変えることが式の品質確認になります。
定義とモデル変更を記録する
メジャーの目的、分子、分母、対象期間、空白時の扱い、参照テーブルを一覧にします。リレーション、日付テーブル、列名を変更した場合は、関係するメジャーとピボットの検算結果を記録します。
数値の定義は式だけでは伝わりません。利用者が同じ言葉を別の意味で使わないよう、レポート上の注記とメジャー定義をそろえ、変更後は主要数値を確定済みレポートへ照合します。
よくある質問
CALCULATEを日本語で一言にすると?
『フィルター条件を変更して式を計算し直す関数』です。単なる条件付き合計ではなく、任意のメジャーや式を再評価できます。
CALCULATEをフィルターなしで使う意味は?
行コンテキストをフィルターコンテキストへ移すコンテキスト遷移に使われます。計算列や反復子内で必要になる場合がありますが、メジャー参照では自動的に起こる場面もあります。
ALLとREMOVEFILTERSはどちらを使いますか?
フィルター削除の意図だけなら、使用環境でサポートされる場合はREMOVEFILTERSが読みやすいです。ALLはテーブルを返す関数としても働くため、式全体の目的で選びます。
UdemyでDAX・Power Pivotをさらに学びたい方へ
CALCULATEはDAXの中心となる関数です。フィルターコンテキストの変化をサンプルレポートで繰り返し確認すると理解が安定します。
記事の内容を動画と演習で復習したい方へ、関連性の高い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は動画の再生速度を調整でき、必要な箇所を繰り返し確認できます。価格は講座やセール時期によって変わるため、申込み前に講座ページの内容、対応環境、最新価格をご確認ください。
※本記事にはアフィリエイトリンクが含まれます。リンク経由で申込みがあった場合、運営者に報酬が発生することがあります。
まとめ:現在条件・変更列・再評価の順に読む
CALCULATEは、現在のフィルターコンテキストを受け取り、指定した条件を追加・上書き・削除して、第1引数の式を再評価します。
基本メジャーを小さく作り、現在セルの条件と変更対象列を書き出すと、上書き・KEEPFILTERS・REMOVEFILTERSの違いを説明できます。
総計、同じ列の別値、別列スライサーを使って検算し、分母やフィルター解除の範囲が業務上の問いと一致することを確認してください。

コメント