タグ別アーカイブ: IF式

置き換えのIF式を簡略化する方法~リスト活用、列削除省略~

IF式は便利ですが、作成後のメンテナンスが大変だったりします

1つ内容を追加するだけでも、or以降のコードを追加しなくてはなりません

今回は、リストを使ってIF式の作成を簡略化する方法と、IF式自体を列に置き換える方法を紹介します

List.Contains関数

今回はList.Contains関数をIF関数内で活用します

このM関数はリスト内に該当するものがあれば「TRUE」そうでなければ「FALSE」を返します

上のGIF画像でいえば、リスト{1,2,3}に対して3は含まれているのでTRUE、4は含まれていないのでFALSEを返しています

置き換えのIF式にリストを埋め込む

下の画像の商品コードを①か②にグループ分けをしたいとします

以下のようなイメージです

その時は、通常は以下のようなIF式を使ったカスタム列を挿入すると思います

今回は、or式の部分を前述のList.Contains関数で置き換えます

ただこのままだと、①に置き換える商品コードを追加するには、M関数のメンテナンスが必要です

ですので、次に

{“10001″,”10002”}の部分を別途作成するリストで置き換えます

このような感じです

これで、別途作成するリストの内容を置き換えれば、IF関数の出力も変ります

列削除の省略

置き換えのIF式を作成した後、既存の列を削除することもあるかと思います

工夫をすれば、列削除のステップを省略できます

まずは、

ダミーで変換タブから置き換えを行います

置き換えの内容はなんでもいいです

すると、数式タブの内容が次のようになっているはずです

こちらを次のように置き換えます

A:置き換え前の文字列の箇所は「each [商品コード]」とします

A’:置き換え後の文字列の箇所に先ほどのコード「if List.Contains(myCode,[商品コード]) then “①” else “②”」を使います

ここでポイントは「each」をうまく使うことです

eachを使うことで「各々の行」という意味になります

<まとめ>

今回は、置き換えのIF式をうまく簡略化する方法を解説しました

Power Queryはとにかく便利ですので、ついついクエリのステップが長くなったり、後でメンテナンスが面倒になったりするケースもあります

今回のように、工夫すれば簡略化できますので、ぜひ活用してみてください

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

M言語に慣れる_11回目_前行を参照して計算

【M言語は難しくない】今回は連番波括弧:{}を組み合わせて活用して、前行を参照する仕組みを作成します。前行を参照する仕組みを作成したら、下の図のように「前行との差額」を計算します。

この処理はエクセルシート上であれば、四則演算の式を挿入すれば簡単に行えます

=(列名/N行目)-(列名/N-1行目)

但しセル単位/1つの値単位の操作になるので、M言語を使用しなければPower Queryでは行えません

M言語を使用すればできるといっても、とても難しい処理なのでは?

いえ、決してそんなことはありません!

 エクセルシート上の行番号/レコードに相当する波括弧:{}を、連番/0,1,2・・・とうまく組み合わせて使いこなせば、簡単にできます

 実際に手を動かして前行を参照した計算が行えるようになった時には、M言語の活用に大き自信を持てるようになっているはずです!

目次

今回のポイント

今回使用するデータ

連番の追加

レコードの参照

カスタム列・作成画面で連番を操作

<まとめ>

今回のポイント

過去の記事で、丸括弧と波括弧を組み合わせてエディタ内のデータを参照する方法について解説しました

 括弧を使用して参照する方法は、下のGIF画像のように<前ステップ名 + 波括弧/レコード位置 + 角括弧/リスト>を組み合わせる方法でした

今回は、この「括弧の組み合わせて参照する仕組み」を、更に「連番 /0,1,2,3・・・」と組み合わせて活用します!

今回使用するデータ

今回使用するデータは次の画像のデータです

上の画像のB列にある「株価」を使用して、計算を行います

各行にて、前行との株価の差額を計算します

続きを読む M言語に慣れる_11回目_前行を参照して計算