【徹底解説】Power BI で IF 関数を使いこなす!基本から応用まで

1. はじめに

1.1 Power BI での IF 関数の役割

Power BI で分析・レポートを作成する際、特定の条件を満たす場合に値を変えたり、状況に応じて動的に指標を切り替えたりする必要がでてきます。たとえば、「売上が目標を達成したら “達成”、そうでなければ “未達成”」とラベルを振りたい場合です。
そこで活躍するのが IF 関数 です。IF 関数を用いると、条件分岐 を扱えるようになり、レポートに柔軟性を持たせることができます。

1.2 DAX (Data Analysis Expressions) とは

DAX (Data Analysis Expressions) は、Power BI・Excel の Power Pivot・Analysis Services などで使用される数式言語です。SUM や AVERAGE といった基本的な集計関数から、CALCULATE などの強力な関数まで、多彩な機能を備えています。
DAX では IF 関数 だけでなく、TIMEINTELLIGENCE 関数や、行コンテキスト/フィルターコンテキストといった概念を理解しておくと、より高度な分析が可能になります。

1.3 IF 関数と Power Query (M 言語) の違い

Power BI のデータ変換画面(Power Query エディター)で使用される言語は M 言語 と呼ばれます。M 言語では、if ~ then ~ else ~ の形をとり、DAX 関数の IF とは構文や適用タイミングが異なります。

  • DAX:レポートやモデル上で、集計や計算列/メジャー を作成するときに使う

  • M 言語(Power Query):データのインポートや変換(クレンジング)段階で使う

本記事では、主に DAX の IF 関数 にフォーカスします。


2. IF 関数の基本構文

2.1 IF 関数とは

IF 関数は、「条件が TRUE の場合」と「FALSE の場合」で返す値を指定できる、最も基本的な条件分岐関数です。

2.2 IF 関数の書き方 (DAX)

DAX
IF(
<logical_test>, -- 論理式(TRUE/FALSE で評価)
<value_if_true>, -- 条件が TRUE の場合に返す値
[<value_if_false>] -- 条件が FALSE の場合に返す値(省略可)
)
  • <logical_test>[売上] > 1000000 のような論理式を設定します。

  • <value_if_true>:条件が満たされた場合の戻り値を指定します。

  • <value_if_false>:条件が満たされなかった場合の戻り値を指定します。(省略した場合は BLANK() またはエラー扱いになるケースがあります)

2.3 TRUE/FALSE 評価の仕組み

DAX においては、条件が正しい場合は TRUE、間違っている場合は FALSE となります。比較演算子(=, >, <, >=, <=, <>)や、論理演算子(AND, OR, NOT)を組み合わせて複雑な条件を作ることもできます。


3. 実践:IF 関数の活用例

3.1 単純な条件分岐例

例:目標売上を 100 万円とし、それ以上なら “達成”、それ未満なら “未達成” と表示する計算列を作る

DAX
達成フラグ =
IF(
[売上] >= 1000000,
"達成",
"未達成"
)

このように計算列を作成するだけで、各行(各商品や地域など)ごとに達成か未達成かを判別してくれます。

3.2 複数条件がある場合の書き方 (Nested IF / SWITCH)

IF 関数を入れ子(ネスト)にすると、条件が多いときに可読性が下がりがちです。例えば、「売上が 200 万円以上なら “特A”、100 万円以上なら “A”、それ以外は “B”」のようなケースです。
複数の条件を扱う場合、SWITCH 関数 を使うとスッキリ書けます。

DAX
評価カテゴリ =
SWITCH(
TRUE(),
[売上] >= 2000000, "特A",
[売上] >= 1000000, "A",
"B"
)
  • TRUE() を最初に置くことで、順番に条件を評価し、最初に TRUE となった場所の値を返します。

3.3 ブール演算子 (AND, OR) と組み合わせる

IF 関数では、条件式の中に ANDOR を使って 複数の条件を同時に評価 できます。

DAX
IF(
AND(
[売上] >= 1000000,
[利益率] > 0.2
),
"好調",
"要改善"
)

このように書けば、売上と利益率の両方が一定以上の場合のみ “好調” と返す、といったロジックを作れます。


4. 計算列とメジャーでの使い方の違い

4.1 計算列 (Calculated Column) での IF 関数

計算列は、テーブルに新しい列を追加し、行単位のコンテキストで計算を行います。各行の [売上] や [利益] を参照し、それをもとに IF 関数が TRUE/FALSE を返します。

  • メリット:ビジュアルで使いやすい(列として扱える)

  • デメリット:データ量が多い場合、メモリ使用量が増えやすい

4.2 メジャー (Measure) での IF 関数

メジャーは、ビジュアルやフィルターのコンテキストに応じて動的に値を計算します。たとえば、テーブルやマトリクスに [売上] を置いて切り替えて表示する場合などに便利です。

  • メリット:集計された結果に対して条件分岐をかけられる

  • デメリット:ビジュアル上でしか表示できず、列のように行ごとの値を持たない

4.3 選択する際のポイント (Row Context vs Filter Context)

  • Row Context:計算列は行ごとのコンテキスト(Row Context)で評価

  • Filter Context:メジャーは、ビジュアルやフィルターの状況(Filter Context)で評価

実装したいロジックが「行ごとに固定的なフラグを立てたい」のか、「ビジュアルの集計レベルで条件分岐したい」のかによって、計算列かメジャーを選択するとよいでしょう。


5. 具体例:売上管理ダッシュボード

5.1 製品ごとに評価ラベルを付ける

複数の指標(売上高、在庫回転率、利益率など)を加味して、製品にランク付けをする場面がよくあります。
たとえば、「売上高が 200 万円以上」かつ「利益率が 15% 以上」の場合に “高需要商品” とラベルを付けるロジックは、以下のように書けます。

DAX
製品評価 =
IF(
AND([売上] >= 2000000, [利益率] >= 0.15),
"高需要商品",
"標準"
)

5.2 目標売上と実績売上を比較して色分けする

Power BI の条件付き書式機能と組み合わせると、IF 関数で返した値(たとえば数値や文字列)をもとに、表やカードビジュアルの背景色・フォント色を変えることができます。
メジャーで “1” や “0” を返すようにしておいて、条件付き書式のルールで “1 のときは緑、0 のときは赤” と設定する、などの工夫が可能です。

5.3 セグメント別に可視化しやすい形へ変換する

「法人向け(B2B)」と「個人向け(B2C)」など、セグメントを区別したい場合にも IF 関数が役立ちます。データに “セグメント” が含まれない場合でも、アドホックに IF 関数で分類列を作ることができます。


6. IF 関数の応用パターン

6.1 同じ処理を複数条件で分岐させる (SWITCH 関数の活用)

先述の通り、複数段階の評価をしたい場合は SWITCH 関数が便利です。たとえば、売上に応じたスコアリングをする場合は、以下のように書けます。

DAX
売上スコア =
SWITCH(
TRUE(),
[売上] >= 5000000, 3, -- 500 万円以上ならスコア 3
[売上] >= 3000000, 2, -- 300 万円以上ならスコア 2
[売上] >= 1000000, 1, -- 100 万円以上ならスコア 1
0 -- それ以外は 0
)

6.2 CALCULATE や SUMX など他の DAX 関数と組み合わせる

IF 関数の <logical_test> 部分には、CALCULATE(SUM(テーブル[売上])) のような集計関数も使えます。これにより、特定のフィルターコンテキストを適用した結果に応じて、条件分岐が可能になります。

6.3 条件付き書式と連携して動的に色やアイコンを変更する

Power BI には、表やマトリクス・カードなどで “条件付き書式” を設定する機能があります。IF 関数で数値や文字列を返すメジャーを作っておけば、その結果をもとに背景色・アイコン・データバーなどを表示させることができます。

  • 例:IF([売上] >= [目標], 1, 0) → 条件付き書式で 1 のセルに緑色の背景を適用


7. トラブルシューティング & ベストプラクティス

7.1 IF 関数が意図しない結果を返す場合のチェックポイント

  • 条件が正しいか?:演算子(> や >=)の向きに誤りがないか

  • データ型が一致しているか?:文字列と数値を比較していないか

  • フィルターコンテキスト が意図しない形になっていないか(メジャー使用時)

7.2 ネストが深くなりすぎたときの対処 (SWITCH 関数の検討)

ネストした IF が 3 段階以上になるとコードが読みにくくなります。そんなときは、SWITCH 関数 の方がシンプルになるケースが多いです。可読性を重視するなら、早めに SWITCH 関数に切り替えるのがベターです。

7.3 パフォーマンスを意識した条件分岐の組み方

大規模データを扱う場合、無駄な計算列を増やすとモデルサイズが大きくなり、レポートが重くなる可能性があります。

  • 計算列よりメジャーの使用を検討:動的に必要なときだけ評価される

  • 単一テーブルにまとめるより、必要なときに参照:リレーションを使ってデータ量を最適化


8. まとめ

8.1 本記事のおさらい

  • IF 関数は条件分岐を実現するための基本的な関数

  • ネストが深くなる場合や複雑な条件には SWITCH や他の演算子を活用

  • 計算列とメジャーの使い分けが重要:Row Context と Filter Context を意識

8.2 今後の学習リソース紹介

8.3 次のステップ

  • SWITCH 関数のマスター:IF より可読性が高い書き方を習得

  • Time Intelligence 関数との組み合わせ:期間比較や前年度比など複雑な分析を条件分岐で制御

  • 条件付き書式の使いこなし:IF 関数で返した値をもとに、見やすいレポートデザインを実現


終わりに

Power BI における IF 関数 は、データを条件ごとに分類したり、動的にフラグを立てたりする際に欠かせない強力なツールです。特に、DAX の概念(Row Context や Filter Context)を理解したうえで IF 関数を使うと、シンプルな集計だけでは得られない柔軟なレポートを構築できます。
また、条件が複雑化する際には SWITCH 関数の利用を検討するなど、可読性やメンテナンス性 を高める工夫も大切です。IF 関数の活用テクニックをマスターして、より高度な Power BI レポートを作り、ビジネスの意思決定に役立ててみてください。

もし困り事があるなら、まずは無料相談を

「Power BI で箱ひげ図を使って詳細分析をしたいが、データモデルやDAX設計が複雑でわからない…」「Power Automate を併用してデータ更新フローを自動化したいが、どこから手を付ければいいのかわからない」といったお悩みをお持ちの方も多いのではないでしょうか。

私たちは、Power BIやPower AutomateなどのMicrosoft製品の導入・運用支援、およびデータ活用コンサルティングを行っています。

  • 具体的な設定や開発代行

  • 社内教育のための伴走型支援

  • 有料プランへの移行タイミングやROIの判断支援

など、さまざまなニーズに合わせたサービスをご用意しています。まずはお気軽に「無料相談」へお申し込みください。下記のリンクからお問い合わせいただけます。

👉 無料相談はこちらから


7. セミナーで学ぶ!DAX 関数の実践スキル

箱ひげ図をはじめ、Power BIを使いこなすうえで欠かせないのがDAX関数の知識です。DAXをしっかり学ぶことで、データの前処理から複雑な指標の算出までスムーズにこなせるようになります。そんなDAXとデータモデル設計を効率よく学習できるハンズオンセミナーを開催しています。

🔰 Power BIハンズオンセミナー初級編

  • 短時間でデータモデリングの基礎を身につける

  • 実務にすぐ活かせるレポート作成を実践形式で学ぶ

  • 少人数制なので、つまずきポイントを都度フォロー

👉 セミナー詳細を今すぐチェック

🚀 Power BIハンズオンセミナー中級編

  • DAX関数 × データモデル設計 の実践的なノウハウを習得

  • 複雑な分析要件にも対応できる応用力を身につける

  • 即戦力として業務効率アップや社内評価向上に直結

👉 詳細はこちら

関連記事

この記事へのコメントはありません。

カテゴリー

アーカイブ