条件列ではできない!複雑な条件で列を追加する【Power Query】

Excel

「条件列」でいろんな条件つけたいんですけど、うまくいかなくて…できないんです~。何か方法ないですか~?

それなら「カスタム列」とか「詳細エディター」を使ってみて。もっと柔軟に条件設定できるよ。

Power Queryで列を追加するとき「条件列」は簡単な条件分岐ができて便利だけど、ちょっと複雑な処理をしようとすると「あれ、できない…?」ってこと、ありませんか?

そんなときに活躍するのが「カスタム列」や「詳細エディター」

この記事では、まず基本となる「条件列」の機能を確認しつつ、「条件列」では対応しきれない複雑な条件や文字列処理を「カスタム列」や「詳細エディター」で実現する方法をわかりやすく紹介します。

ちょっとした応用テクニックを身につけて、Power Queryをもっと使いこなしましょう!

シンプルな条件分岐はこれでOK!「条件列」

Power Queryの「条件列」は、簡単な条件分岐をしたいときにとても便利な機能です。

こんなデータがあったとします。

リンゴの単価が「120円」から「1200円」に値上がりしたとして、新しい単価に更新した列を作りたいとき、「条件列」を使います。

メニューの「列の追加」→「条件列」をクリックします。

「条件列の追加」ダイアログで条件などを入力します。

  1. 新しい列名:追加する列の名前
  2. 条件とセットする値:条件と、条件に合ったときに入る値
  3. それ以外の場合:条件に合わなかったときに入る値

この場合、商品が「りんご」の場合は「1200」を出力し、それ以外の場合は、「単価」列の値を出力します。

出力する値が「入力した値」か「列の値」かは、下の図のように入力欄の前にあるアイコンで選びます。

「りんご」だけ「1200」に更新された列が新しくできました。

「条件列」って、ちょっとした条件を使うにはめちゃくちゃ便利なんです。

でも、ちょっと複雑なことをやろうとすると、できないことも出てきます。

条件列でできないことって何?

こんなケースは苦手です。

  • 条件を2つ以上組み合わせたい(ANDやORを使いたい)
  • 条件の中にさらに条件を入れる、いわゆる“入れ子(ネスト)”にしたい
  • 条件に応じて、数値を計算したり文字を加工したい

こういった処理を行うには、「カスタム列」や「詳細エディター」の出番となります。

カスタム列で複雑な条件を設定する

「条件列じゃ無理かも…」となったら、次に使いたいのがカスタム列です!

「カスタム列」は、メニューの「列の追加」→「カスタム列」から使えます。

ここではちょっとだけ「M言語」という、Power Query専用の数式を使います。

…と言っても、よく使うパターンを覚えればいいと思います!

(もっと詳しく知りたい方は「Power Query M言語」で検索するといろいろ出てきます)

条件式は「if~then~else」が基本形となります。

ワンポイント

「if~then~else」条件によって結果を分けたいときに使う基本の書き方です。

とってもシンプルなので、まずはこの形を覚えましょう!

if 条件 then 値1 else 値2
  • 条件if のあとは「条件」(= や < など)
  • 値1:then のあとに「条件に当てはまったときの値
  • 値2:else のあとに「それ以外のときの値

例:

if [商品] = "りんご" then "フルーツ" else "その他"

これは「商品」が「りんご」だったら「フルーツ」、それ以外だったら「その他」と表示されます。

では実際に、条件を使った例を見てみましょう。

たとえばこんな感じのルールで値を入れてみます。

  • 取引先が「株式会社モフ」かつ、商品が「りんご」だったら「1200円」
  • それ以外の取引先の「りんご」は「1000円」
  • 「りんご」以外の単価は据え置き

この場合の式はこんなふうになります。

if [商品] = "りんご" then 
    if [取引先] = "株式会社モフ" then 1200 else 1000 
else [単価]

式を入力したら、「OK」をクリック!

入れ子(ネスト)にしてみましたが、こんな書き方でもいいです。

if [取引先] = "株式会社モフ" and [商品] = "りんご" then 1200
else if [商品] = "りんご" then 1000
else [単価]

条件に合わせて「単価」が入った新しい列ができあがります。

条件によって値を変えるだけじゃなくて、「計算させる」こともできます。

もっと自由に書きたいなら「詳細エディター」にチャレンジ!

「カスタム列」でかなり柔軟な条件分岐ができるようになりますが、

  • 「もっと全体の流れを自分でコントロールしたい!」
  • 「複数の条件や処理を整理しながら書きたい!」

というときに使いたいのが 「詳細エディター」 です。

これは、Power Queryの処理を“スクリプト形式”で全部まとめて見られる場所で、どんな順番で何をやっているか、1つずつのステップをコードで編集できます。

メニューの「ホーム」→「詳細エディター」をクリックすると開きます。

いきなり詳細エディターを見たら「うわっ…コードっぽい…」とびっくりするかもですが、1行ずつの意味がわかってくると、カスタム列よりもスッキリ書けたりします。

条件を増やしたり、計算させたり…とにかくいろいろできます!

「詳細エディター」を見ると、「あ、こうやってPower Queryは動いてるんだな~」と理解が深まるのもポイント!

慣れてくると、「カスタム列」よりも「詳細エディター」の方が使いやすく感じることも多いです。

自分で処理の流れを整理できたり、あとから調整しやすかったりして、意外とこっちの方がラクかも?って思えてきますよ。

まとめ

今回は、Power Queryで「条件によって値を変える」テクニックを3段階でご紹介しました。

  1. まずはカンタンな「条件列」
  2. ちょっと複雑になってきたら「カスタム列」
  3. さらに自由にコントロールしたくなったら「詳細エディター」

最初は「えっ、むずかしそう…」と感じるかもしれませんが、実際に手を動かしてみると「意外とできる!」ってなることも多いです。

「条件列で詰まったな」と思ったら、ぜひ次のステップにもチャレンジしてみてくださいね!

最初は条件列でいっぱいいっぱいだったけど、カスタム列とか詳細エディター使えば、けっこう何でもできちゃうんですね…!

ちょっとずつ慣れていきますっ!