Power Query: If文 - ネストされたIfと複数の条件
Excel Power Queryでは、IF文は最も人気のある関数の一つで、条件を確認し、結果がTRUEかFALSEかに基づいて特定の値を返します。このIF文とExcelのIF関数にはいくつかの違いがあります。このチュートリアルでは、このIF文の構文といくつかの簡単および複雑な例を紹介します。
Power Queryの基本的なIf文の構文
Power Queryでは、構文は次の通りです:
- logical_test: テストしたい条件。
- value_if_true: 結果がTRUEの場合に返す値。
- value_if_false: 結果がFALSEの場合に返す値。
Excel Power Queryでは、このような条件ロジックを作成する方法は2つあります:
- 基本的なシナリオでは「条件付き列」機能を使用する;
- より高度なシナリオではMコードを記述する。
次のセクションでは、このIf文の使用例について説明します。
条件付き列を使用したPower QueryのIf文
例1:基本的なIf文
ここで、Power QueryでのIf文の使い方を紹介します。例えば、次のような製品レポートがあり、製品ステータスが「旧」の場合、50%の割引を表示し、「新」の場合、20%の割引を表示します(以下のスクリーンショット参照)。
1. ワークシートからデータテーブルを選択し、Excel 2019およびExcel 365では、[データ] > [テーブル/範囲から]をクリックしてください。スクリーンショットをご覧ください:
注意: Excel 2016およびExcel 2021では、[データ] > [テーブルから]をクリックしてください。スクリーンショットをご覧ください:
2. 開いたPower Queryエディタウィンドウで、[列の追加] > [条件付き列]をクリックしてください。スクリーンショットをご覧ください:
3. 表示された[条件付き列の追加]ダイアログで、次の操作を行ってください:
- 新しい列名: 新しい列の名前を入力します;
- 次に、必要な基準を指定します。例えば、 ステータスが「旧」の場合50%、「新」の場合20%と指定します;
- 列名: If条件を評価する対象の列。ここでは、ステータスを選択します。
- 演算子: 使用する条件ロジック。選択した列名のデータ型によってオプションが異なります。
- テキスト: 始まる、始まらない、等しい、含むなど。
- 数字: 等しい、等しくない、以上など。
- 日付: より前、より後、等しい、等しくないなど。
- 値: 評価対象となる具体的な値。列名と演算子と一緒に条件を構成します。
- 出力: 条件が満たされた場合に返される値。
- Else: 条件がfalseの場合に返される別の値。
4. 次に、[OK]ボタンをクリックしてPower Queryエディタウィンドウに戻ります。これで、新しい「割引」列が追加されます。スクリーンショットをご覧ください:
5. 数値をパーセンテージ形式にしたい場合は、「割引」列ヘッダーのABC123アイコンをクリックし、必要に応じてパーセンテージを選択してください。スクリーンショットをご覧ください:
6. 最後に、[ホーム] > [閉じて読み込む] > [閉じて読み込む]をクリックして、このデータを新しいワークシートに読み込みます。
例2:複雑なIf文
この条件付き列オプションを使用すると、[条件付き列の追加]ダイアログに2つ以上の条件を挿入することもできます。次のように行ってください:
1. データテーブルを選択し、[データ] > [テーブル/範囲から]をクリックしてPower Queryエディタウィンドウを開きます。新しいウィンドウで、 [列の追加] > [条件付き列]をクリックします。
2. 表示された[条件付き列の追加]ダイアログボックスで、次の操作を行ってください:
- 新しい列名テキストボックスに新しい列の名前を入力します;
- 最初の基準を最初の基準フィールドに入力し、必要に応じて[条件の追加]ボタンをクリックして他の基準フィールドを追加します。
3. 基準の入力を終えたら、[OK]ボタンをクリックしてPower Queryエディタウィンドウに戻ります。これで、必要な結果を持つ新しい列が作成されます。スクリーンショットをご覧ください:
4. 最後に、[ホーム] > [閉じて読み込む] > [閉じて読み込む]をクリックして、このデータを新しいワークシートに読み込みます。
Mコードを記述してPower QueryのIf文を作成する
通常、条件付き列は基本的なシナリオに役立ちます。時々、ANDまたはORロジックを使用して複数の条件が必要になる場合があります。その場合、より複雑なシナリオのためにカスタム列内でMコードを記述する必要があります。
例1:基本的なIf文
最初のデータを例として、製品ステータスが「旧」の場合、50%の割引を表示し、「新」の場合、20%の割引を表示します。Mコードを記述するには、次のように行ってください:
1. テーブルを選択し、[データ] > [テーブル/範囲から]をクリックしてPower Queryエディタウィンドウを開きます。
2. 開いたウィンドウで、[列の追加] > [カスタム列]をクリックしてください。スクリーンショットをご覧ください:
3. 表示された[カスタム列]ダイアログボックスで、次の操作を行ってください:
- 新しい列名テキストボックスに新しい列の名前を入力します;
- 次に、この数式をカスタム列 数式ボックスに入力します: if [Status] = "旧 " then "50% " else "20% "
4. 次に、[OK]をクリックしてこのダイアログボックスを閉じます。これで、必要な結果が得られます:
5. 最後に、 [ホーム] > [閉じて読み込む] > [閉じて読み込む]をクリックして、このデータを新しいワークシートに読み込みます。
例2:複雑なIf文
通常、サブ条件をテストするために、複数のIf文をネストすることができます。例えば、以下のようなデータテーブルがあるとします。「Dress」の場合、元の価格に対して50%の割引を適用し、「Sweater」または「Hoodie」の場合、元の価格に対して20%の割引を適用し、他の製品は元の価格を維持します。
1. データテーブルを選択し、[データ] > [テーブル/範囲から]をクリックしてPower Queryエディタウィンドウを開きます。
2. 開いたウィンドウで、[列の追加] > [カスタム列]をクリックします。開いた[カスタム列]ダイアログボックスで、次の操作を行ってください:
- 新しい列名テキストボックスに新しい列の名前を入力します;
- 次に、以下の数式をカスタム列数式ボックスに入力します。
- = if [Product] = "Dress" then [Price] * 0.5 else
if [Product] = "Sweater" then [Price] * 0.8 else
if [Product] = "Hoodie" then [Price] * 0.8
else [Price]
3. 次に、[OK]ボタンをクリックしてPower Queryエディタウィンドウに戻ると、必要なデータを持つ新しい列が作成されます。スクリーンショットをご覧ください:
4. 最後に、 [ホーム] > [閉じて読み込む] > [閉じて読み込む]をクリックして、このデータを新しいワークシートに読み込みます。
ORロジックは複数の論理テストを実行し、いずれかの論理テストがtrueであればtrueの結果を返します。構文は次の通りです:
例えば、以下の表があるとします。ここで、新しい列を表示させたい:製品が「Dress」または「T-shirt」の場合、ブランドは「AAA」、それ以外の製品のブランドは「BBB」。
1. データテーブルを選択し、[データ] > [テーブル/範囲から]をクリックしてPower Queryエディタウィンドウを開きます。
2. 開いたウィンドウで、[列の追加] > [カスタム列]をクリックします。開いた[カスタム列]ダイアログボックスで、次の操作を行ってください:
- 新しい列名テキストボックスに新しい列の名前を入力します;
- 次に、以下の数式をカスタム列数式ボックスに入力します。
- = if [Product] = "Dress" or [Product] = "T-shirt" then "AAA"
else "BBB"
3. 次に、[OK]ボタンをクリックしてPower Queryエディタウィンドウに戻ると、必要なデータを持つ新しい列が作成されます。スクリーンショットをご覧ください:
4. 最後に、 [ホーム] > [閉じて読み込む] > [閉じて読み込む]をクリックして、このデータを新しいワークシートに読み込みます。
ANDロジックは単一のIf文内で複数の論理テストを実行します。すべてのテストがtrueである場合にtrueの結果が返されます。いずれかのテストがfalseの場合、falseの結果が返されます。構文は次の通りです:
上記のデータを例として取り上げます。新しい列を表示させたい:製品が「Dress」で注文数が300より大きい場合、元の価格に50%の割引を適用し、そうでない場合は元の価格を維持します。
1. データテーブルを選択し、[データ] > [テーブル/範囲から]をクリックしてPower Queryエディタウィンドウを開きます。
2. 開いたウィンドウで、[列の追加] > [カスタム列]をクリックします。開いた[カスタム列]ダイアログボックスで、次の操作を行ってください:
- 新しい列名テキストボックスに新しい列の名前を入力します;
- 次に、以下の数式をカスタム列数式ボックスに入力します。
- = if [Product] ="Dress" and [Order] > 300 then [Price]*0.5
else [Price]
3. 次に、[OK]ボタンをクリックしてPower Queryエディタウィンドウに戻ると、必要なデータを持つ新しい列が作成されます。スクリーンショットをご覧ください:
4. 最後に、[ホーム] > [閉じて読み込む] > [閉じて読み込む]をクリックして、このデータを新しいワークシートに読み込みます。
さて、これまでの例は理解しやすかったですね。今度はさらに難易度を上げましょう。ANDとORを組み合わせて、思いつく限りの条件を作ることができます。このタイプでは、数式に括弧を使用して複雑なルールを定義できます。
上記のデータを例として取り上げます。新しい列を表示させたい:製品が「Dress」で注文数が300より大きい、または製品が「Trousers」で注文数が300より大きい場合、「A+」を表示し、それ以外は「Other」を表示します。
1. データテーブルを選択し、[データ] > [テーブル/範囲から]をクリックしてPower Queryエディタウィンドウを開きます。
2. 開いたウィンドウで、[列の追加] > [カスタム列]をクリックします。開いた[カスタム列]ダイアログボックスで、次の操作を行ってください:
- 新しい列名テキストボックスに新しい列の名前を入力します;
- 次に、以下の数式をカスタム列数式ボックスに入力します。
- =if ([Product] = "Dress" and [Order] > 300 ) or
([Product] = "Trousers" and [Order] > 300 )
then "A+"
else "Other"
3. 次に、[OK]ボタンをクリックしてPower Queryエディタウィンドウに戻ると、必要なデータを持つ新しい列が作成されます。スクリーンショットをご覧ください:
4. 最後に、[ホーム] > [閉じて読み込む] > [閉じて読み込む]をクリックして、このデータを新しいワークシートに読み込みます。
カスタム列数式ボックスでは、次の論理演算子を使用できます:
- = : 等しい
- <> : 等しくない
- > : より大きい
- >= : 以上
- < : より小さい
- <= : 以下
最高のオフィス生産性ツール
🤖 | Kutools AI アシスタント: データ分析を革命化する: インテリジェント実行 | コード生成 | カスタム数式の作成 | データを分析しグラフを生成 | 拡張機能を呼び出す… |
人気の機能: 重複を見つけてハイライトまたはマーキング | 空白行を削除 | データを失わずに列またはセルを統合 | 丸める ... | |
スーパーLOOKUP: 複数条件のVLookup | 複数値のVLookup | 複数シートの検索 | ファジーマッチ .... | |
高度なドロップダウンリスト: ドロップダウンリストを迅速に作成 | 依存ドロップダウンリスト | マルチセレクトドロップダウンリスト .... | |
列管理: 特定の数の列を追加 | 列を移動 | 非表示列の可視ステータスを切り替え | 範囲と列を比較 ... | |
注目の機能: グリッドフォーカス | デザインビュー | 強化された数式バー | ワークブック & ワークシート管理 | オートテキスト ライブラリ (Auto Text) | 日付ピッカー | データの統合 | セルの暗号化/復号化 | リストで電子メールを送信 | スーパーフィルター | 特殊フィルタ (太字/斜体/取り消し線をフィルタリング...) ... | |
トップ15のツールセット: 12 のテキストツール (テキストの追加, 特定の文字を削除, ...) | 50以上 のグラフ の種類 (ガントチャート, ...) | 40以上の実用的な 数式 (誕生日に基づいて年齢を計算する, ...) | 19 の挿入ツール (QRコードの挿入, パスから画像を挿入, ...) | 12 の変換ツール (単語に変換する, 通貨変換, ...) | 7 の統合 & セルの分割ツール (高度な行のマージ, セルの分割, ...) | ...さらに多く |
Kutools for ExcelでExcelスキルを強化し、これまでにない効率を体験してください。 Kutools for Excelは、300以上の高度な機能を提供し、生産性を向上させ、保存時間を節約します。 最も必要な機能を入手するにはここをクリック...
Office TabはOfficeにタブインターフェイスをもたらし、作業を非常に簡単にします
- Word、Excel、PowerPoint、Publisher、Access、Visio、Projectでタブ付きの編集と読み取りを有効にします。
- 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
- 生産性を50%向上させ、毎日数百回のマウスクリックを減らします!