カスタム関数は、M 数式言語を使用し、入力値のセットを受け取り、1 つの出力値を返します。 何度も再利用するロジックがある場合、または同じ変換セットを別のクエリまたは値に適用する場合は、カスタム関数を作成し、必要なときに関数を呼び出す方法を検討してください。 カスタム関数を作成するには、いくつかの方法があります。
- 詳細エディターを使用して、独自の let ステートメントを追加し、最初から開始します。
- カスタム関数の呼び出しコマンドを使用します。
- このヘルプ トピックでは説明されていない関数を作成する方法として、関数の 作成 コマンドや クエリとしての追加コマンドなど、その他の 方法があります。 詳細については、「Power Query M 関数 (docs.com) について」および「カスタム関数の使用 (docs.com)」を参照してください。
詳細エディターを使用して単純なカスタム関数を作成して呼び出す
以下は、長期にわたるプログラミングの伝統に従ったカスタム関数の簡単な例です。
空のクエリを作成するには:
Excel [ Data>Get Data>From Other Sources>Blank Query] を選択します。
Power Query左側の [クエリ] ウィンドウで空白の場所を右クリックし、[新しいクエリ>その他のソース>Blank クエリ] を選択します。
左側の [ クエリ ] ウィンドウで、名前をダブルクリックし、新しい空のクエリの名前を "HelloWorld" に変更します。
新しいクエリを選択し、[ホーム>詳細エディター] を選択します。
テンプレート スターター コードを次のコードに置き換えます。
let
HelloWorld = () => ("Hello World")
in
HelloWorld[完了] を選択します。
クエリ "HelloWorld" をカスタム関数に変更しました。 左側の関数
に注意してください。関数を呼び出すには、関数を選択し、[データ プレビューで 呼び出し ] を選択します。
関数の結果はデータ プレビューに表示され、既定の名前の [呼び出された関数] を持つクエリとして [クエリ] ペインに追加されます。 名前を "HelloWorldResult" など、より意味のある名前に変更することもできます。
そのクエリを選択し、[ホーム] >[閉じる] & [読み込み] を選択して、ワークシートに結果を表示します。
結果
パラメーターを持つカスタム関数を作成して呼び出詳細エディター
次の例では、パラメーターをカスタム関数に渡して、10 進数を 16 進数に変換する方法を示します。
空のクエリを作成するには:
Excel [ Data>Get Data>From Other Sources>Blank Query] を選択します。
Power Query左側の [クエリ] ウィンドウで空白の場所を右クリックし、[新しいクエリ>その他のソース>Blank クエリ] を選択します。
左側の [ クエリ ] ウィンドウで、新しい空のクエリの名前を "MyHex" に変更します。
新しいクエリを選択し、[ホーム>詳細エディター] を選択します。
テンプレート スターター コードを次のコードに置き換えます。
let
MyHex = (parameter1) => Number.ToText(parameter1,"X")
in
MyHex[完了] を選択します。
クエリ "MyHex" をカスタム関数に変更しました。 左側の関数
に注意してください。関数を呼び出すには、関数を選択し、[データ プレビュー] で [パラメーター 1 ] ボックスに数値を入力し、[ 呼び出し] を選択します。
関数の結果はデータ プレビューに表示 され、既定 の名前の [呼び出された関数] を持つクエリとして [クエリ] ペインに追加されます。 名前を "MyHexResult" など、より意味のある名前に変更することもできます。
そのクエリを選択し、[ホーム] >[閉じる] & [読み込み] を選択して、ワークシートに結果を表示します。
結果
カスタム関数を呼び出して列を追加する
少なくとも 1 つのパラメーターを持つ関数を作成した場合は、それをカスタム関数として呼び出して、テーブル内の各行に新しい列と新しい値を作成できます。
クエリを開くには、Power Query エディターから読み込まれたクエリを探し、データ内のセルを選択し、[クエリ>Edit] を選択します。 詳細については、「Excel でクエリを作成、編集、読み込む (Power Query)」を参照してください。
メモ この例では、クエリには 整数 データ型の列が少なくとも 1 つ必要です。
「Create and invoke a custom function with a parameter with the 詳細エディター」セクションで説明されているように、"MyHex" カスタム関数を作成します。
クエリで、[列の 追加>Invoke カスタム関数] を選択します。 [ カスタム関数の呼び出し ] ダイアログ ボックスが表示されます。
[新しい列名] ボックスに、"HexConvert" などの 新しい列名 を入力します。
[関数クエリ] ドロップダウンから、定義済みのカスタム関数の名前を選択します。 この例では、"MyHex" を選択します。
カスタム関数がパラメーターを参照しているため、パラメーターが表示されるようになりました。
関数のパラメーター として整数データ 型の列を選択します。
[OK] を選択します。
結果
パラメーターとして入力した整数列の 16 進値を示す新しい列が作成されます。