【M言語は難しくない!】今回は使用方法に合ったM関数を、Power Queryエディタ(以降エディタ)上で検索する方法を紹介します
エクセル関数では、エクセルシート上で直接、関数を検索できます

実は、Power Queryでも同じような機能があります
エクセル関数と同じ様に検索した後に、そのまま使い回すことはできませんが、この機能を覚えておくととても便利です
目次
準備作業 / 空のクエリ作成
まずは準備として、空のクエリを作成します
「データタブ」➡「データの取得」の順でクリックします

次に「その他のデータソース」を選択し、「空のクエリ」をクリックします

M関数一覧を取得
空のクエリの数式バー上で「=#shared」を入力し、エンターを押してください

すると、M関数の一覧が表示されます

一覧をテーブル化
表示された一覧を検索できるようにします
画面上の「テーブルへの変換」をクリックします

すると一覧がテーブルに変化され、フィルター機能が活用できるようになります

実際に検索してみる
①Text関数
前述の検索画面では、残念ながら日本語では検索できません
英語である程度アタリをつけて検索を行う必要があります
今回は、「Text」を文字列に含むM関数を、下の画像のように「行のフィルター」で検索してみましょう

検索文字列の指定時は、大文字と小文字の区別には注意しましょう
過去記事でも触れましたが、M言語では、大文字と小文字は厳密に区別されます

上の画像が「Text」文字列で検索を行った時の状態です
②Text.PositionOf関数
この「Text」文字列を含むM関数の一覧から、上から33番目にある「Text.PositionOf」を実際に参照してみます

上の画像の赤丸にあるように、「Text.PositionOf」の右横にある「Function」のテキストがありますので、そちらをクリックします

すると、下の画像のように「Text.PositionOf」関数の機能を事前に検証できるダイアログが開きます

上の画像の黄色で印をつけた箇所を読むと、文字列の中から「検索文字の開始位置」を返すM関数であることが分かります
試しに文字列を「TEST」、検索文字を「E」と指定して、画面右下のOKボタンをクリックしてみます

すると、上のGIF画像のように「1」と出力されます
文字列「TEST」の中から「E」を検索しているので、読者の方の中には「2」が正しいのでは?、と思われた方もいらっしゃると思います
これは、M言語が「0」をベースにしているためです
M言語では、1ではなく0からカウントがはじまります
ですから、文字列「TEST」の中から「T」を検索すると、「1」ではなく「0」が出力されます

なお、
上の画像のように「0」が表示されている段階では、適用したステップは次の画像のようになっています

参照したM関数の詳細を確認するには、最終ステップから一つ前の「Value」に戻します

ステップを一つ戻すと、上の画像のように詳細な解説が表示されています
更に下にスクロールすると、M関数の使用例も確認できます

③カスタム列作成画面で活用
「Text.PositionOf」関数を、他のクエリで実際に使用してみましょう
先ほど、紹介した「Text.PositionOf」の使用例をコピーしておきます

次に、エディタ画面左から他のクエリを開きます

今回の解説でM関数を使用してみるのは、下の画像の「部門」の列です

この「部門」の列から文字列「B」の位置を検索した結果を、新たな列の「結果」に出力してみます
では、「列の追加」タブから「カスタム列」をクリックします

次に、開いた「カスタム列・作成画面」に先ほどのコピーした使用例を貼り付けます

そして、上の画像にて黄色の印/コンマをつけた箇所の左には、画面右の「使用できる列」から「部門」を挿入し、既存の”Hello,・・・”と置き換えます

そして、黄色の印/コンマの右は、Bで置き換えます

コンマの左右を置き換えた後は、右下のOKボタンをおします
すると、次のような結果が出力されます

上から2番目だけは、Bから部門名がはじまっているので「0」と出力されています
<まとめ>
今回は、エディタ上でM関数を参照する方法について解説しました
空のクエリを作成し、数式バーに「#shared」と入力すれば、M関数の一覧が出力されます
更に、一覧をテーブルに変換すれば「検索」も行えるようになります
エクセル関数の参照機能と違い、日本語で検索できないのが、不便ではあります
後、エクセル関数の参照機能では参照した関数を実際に使い回すことができますが、M関数ではその機能はありません
但し、表示された使用例をコピーして変更していくだけでも、だいぶM関数を有効活用できるようになります
ぜひ、実際に手を動かして参照機能からM関数を使用してみてください
これまでよりも、Power Queryをより身近に感じられるようになるはずです!
尚、過去の記事でも解説させて頂きましたが、M関数についてはMicrosoft社のページでも各関数を参照できます

Microsoft社のM関数の解説ページには、エディタ内のカスタム列・作成画面から直接遷移できます

今回の解説は以上です
長文に最後までお付き合い頂き誠にありがとうございました
次回は、M言語で難解なことの1つである[]と{}の組み合わせについて解説します


コメントを残す