パラメータが必要なときは、よく使っています。
僕の方式だと戻り値のデータ型がanyなので、実際に使う場合は適宜データ型の変換が必要になります。
この辺りをコントロールする方法が見つかったら、書き足すかも知れません。
###準備
下図のようなテーブルを作り、名前を「ParameterTable」としておきます。
※テーブル名はコードの方もいじれば変えられますが、列名は必ず、NameとValueにしてください。(Record.FromTable関数が作動しなくなるため)
###関数のコード
名前は何でもいいです。
※レコード化せず、テーブルのままフィルタをかけ、ドリルダウンをする方法でも書ける。パフォーマンスに違いがあるほどデータを詰め込んだことないので、どっちがいいかは不明。
(ParameterName as text)=>
let
Source = Excel.CurrentWorkbook(){[Name="ParameterTable"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Name", type text}, {"Value", type any}}),
Custom1 = Record.FromTable(#"Changed Type"),
Custom2 = Record.Field(Custom1,ParameterName)
in
Custom2
###実行した様子
普通は、こういうコードを書いて、コード内で固定値に差し替えて使います。
= GetParameterValue("日付")
もちろん、パラメータの名前を打って、呼び出しをしても動きます。
###コピーの仕方
都度、テーブルを作って、関数をコピペ――でもいいんですが、下図のようにテーブルの隣に適当にロードした値をくっつけておいて、ブックとして保存しておくと便利です。
この状態でシートをコピーしてやれば、クエリも一緒にコピーされます。
###参考
一般的な関数の書き方としては、下記サイトからダウンロードできるPDFの9章が詳しいです。
Power Query M language specification - PowerQuery M | Microsoft Docs