PR

Power Queryでカスタム関数を使いこなす

Power Query基礎
スポンサーリンク

Power QueryのM言語で数式を書くときに、関数を使いますよね。例えば、日付から年だけを抽出したいときはDate.Year関数を使います。

= Date.Year(#date(2025, 11, 1))

この式であれば2025が返ってきます。Date.Yearという関数が標準で用意されているため、あらかじめ定義しなくても使えます。

次に、内税価格から消費税を計算することは可能でしょうか?
答えはNoです。そんな関数はないからです。

次のように、内税の金額と消費税率を引数に入れて消費税を計算する関数が欲しいですよね。

= tax_calculation([金額(内税)], 0.1)

M言語では標準で用意されていなくても、関数を自作することできます。
本記事ではカスタム関数の作り方を解説します。

スポンサーリンク

サンプルデータ

売上明細をサンプルデータとして使用します。

サンプルデータはこちらからダウンロードしてください。

スポンサーリンク

カスタム関数の作成

Power Queryでカスタム関数を作るには、空のクエリから作成します。次の2つをサンプルに、カスタム関数の作り方を解説します。

  • Hello World 〇〇〇と出力するカスタム関数
  • 内税価格から消費税を計算するカスタム関数

サンプルデータをダウンロードして、「データ」タブー「クエリと接続」をクリックします。「売上明細」を右クリックし、「編集」をクリックします。

Power Queryエディターが開きます。

まず初めに:Hello World 〇〇〇と出力するカスタム関数を作成する

「ホーム」タブー「新しいソース」ー「その他のソース」ー「空のクエリ」をクリックします。

「クエリの設定」ー「プロパティ」ー「名前」に「hello_world」と入力し、「詳細エディター」をクリックします。

詳細エディターが開きました。後述の数式を入力し、OKをクリックします。

数式の次の通りになります。

= (input_text as text) =>
let
    ソース = "Hello World " & input_text
in
    ソース

1行目に引数を定義しています。input_textというテキスト項目を引数にしています。
letの中の「ソース = “Hello World ” & input_text」でHello Worldと引数を文字連結しています。

カスタム関数を作成すると、パラメーターの入力ができるようになります。

「input_text」に「パワークエリ」と入力し、「呼び出し」をクリックします。

カスタム関数が実行された結果が表示されます。

作成したカスタム関数は、他の数式で使用できます。試しに使ってみるために、カスタム列を追加します。

「列の追加」タブー「カスタム列」をクリックします。

「hello」と入力します。すると候補がでてきますが、今回作成したカスタム関数も候補に挙がってきます。

「hello_world(」と入力すると、引数が表示されます。標準関数と同じですね。

「新しい列名」に「Hello World」、「カスタム列の式」に「hello_world(“パワークエリ”)」と入力し、OKをクリックします。

カスタム関数が実行された結果が表示されます。

内税価格から消費税を計算するカスタム関数を作成する

内税とは商品価格に消費税が含まれた金額です。
例:「1,100円(税込)」= 本体価格1,000円 + 消費税100円

この1,100円から消費税を計算する場合、「消費税額 = 内税価格 – 内税価格 / (1 + 消費税率)」になります。
例:消費税額 = 1,100 – 1,100 / 1.1 = 100円

計算式自体は複雑ではありませんが、カスタム関数を定義しておけば、呼び出すだけで簡単に計算することが出来ます。

Hello Worldの時と同様に、「ホーム」タブー「新しいソース」ー「その他のソース」ー「空のクエリ」をクリックします。

「クエリの設定」ー「プロパティ」ー「名前」に「tax_calculation」と入力し、「詳細エディター」をクリックします。

後述の数式を入力し、OKをクリックします。

数式の次の通りになります。

= (amount as number, tax as number) as number =>
let
    ソース = amount - (amount / (1 + tax))
in
    ソース

1行目に引数を定義しています。amount、taxという数値項目を引数にしています。amountが内税価格で、taxが消費税ですね。
関数の戻り値を明示的に数値とするために「(amount as number, tax as number) as number」としています。

あとは、「消費税額 = 内税価格 – 内税価格 / (1 + 消費税率)」とする数式をletの中に入力しています。

作成したカスタム関数を呼び出してみましょう。

「input_text」に「1100」、「tax」に「0.1」と入力し、「呼び出し」をクリックします。

M言語の式では10%と記述できないため、0.1と入力しています。

消費税が戻り値として返ってきました。

スポンサーリンク

活用例

為替レート換算するカスタム関数を作成する

輸出するときに外貨で販売した場合、最終的に売上金額の集計は邦貨(日本円)に換算すると思います。

外貨の種類が多いと式が複雑になります。
為替レートをマスタ化し、マスタのレートから換算するカスタム関数について次の記事で解説しています。

Excel/Power Queryのデータ加工相談サービス

Excel/Power Queryのデータ加工で悩んでおり、ネットや本で調べても解決しない場合は、一度ご相談下さい。

やりたいことをヒアリングして解決までサポートいたします。

ご相談内容の例
  • 前任者が作ったExcelファイルの数式等が意味不明で困っている
  • Power Queryを使ってExcelでデータ加工を行いたいが、うまく使いこなせない
  • 手作業が多く、業務効率化を行いたいが、どう進めていいか分からない

ココナラでご相談を受け付けております。ココナラの会員登録が必要になります。

Power Queryの学習に役立つおすすめ本
初心者向け 初心者~中級者向け 中級者~上級者向け
プロフィール
たがみ

IT業界20年程度のシステムエンジニアです。
構築したシステムのデータ検証をExcelで実施することが多く、検証作業の効率化を模索しているときにPower Queryと出会いました。
Excel業務効率化の手助けになればと当ブログを解説しました。
今ではデータ分析でPower BIを活用しており、Power BI、Excelの両方でPower Queryを活用しています。

たがみをフォローする
Power Query基礎
スポンサーリンク
シェアする
たがみをフォローする
タイトルとURLをコピーしました