自訂函數使用 M 公式語言,採用一組輸入值,然後會返回單一輸出值。 如果您有想要重複使用多次的邏輯,或將同一組轉換套用至不同的查詢或值,請考慮建立自訂函數,然後于需要時,在需要的地方和時間啟用函數。 建立自訂函數的方法有好幾種:
-
使用進 位編輯器新增您自己的 let 語句,然後從頭開始。
-
使用 Invoke Custom Function 命令。
-
有其他方法可建立本說明主題未討論的函數,包括建立 函數 和新增 為查詢 命令。 有關深入討論,請參閱瞭解 Power Query M函數 (docs.com) 及使用自訂函數 (docs.com) 。
以下是遵循長期程式設計傳統的自訂函數的簡單範例。
-
若要建立空白查詢:Excel選取資料>從其他>取得資料>
空白查詢。 Power Query 以滑鼠右鍵按一下左側 [查詢> 窗格中的空白點,然後選取[新增查詢> [其他來源>空白查詢。 -
在 左側的 [查詢> 窗格中,按兩下名稱,然後將新的空白查詢重新命名為「HelloWorld」。
-
選取新的查詢, 然後選取 > 進位編輯器。
-
以下列程式碼取代範本入門程式碼:
let HelloWorld = () => ("Hello World") in HelloWorld
-
選取 [完成]。
-
您將查詢 「HelloWorld」變更為自訂函數。 請注意,函數圖示 左側。
-
若要調用函數,請選取它,然後選取資料預覽中的Invoke。
-
函數的結果會顯示在資料預覽中,並新增到查詢窗格,做為具有預設名稱,即 Invoked 函數的查詢。 您可能會想要將其重新命名為更有意義的名稱,例如「HelloWorldResult」。
-
選取該查詢,然後選取>關閉&載入以查看工作表中的結果。
結果
下列範例顯示如何將參數傳遞至自訂函數,將十進位數轉換成十六進位。
-
若要建立空白查詢:Excel選取資料>從其他>取得資料>
空白查詢。 Power Query 以滑鼠右鍵按一下左側 [查詢> 窗格中的空白點,然後選取[新增查詢> [其他來源>空白查詢。 -
在 左側的 查詢窗格中,將新的空白查詢重新命名為「MyHex」。
-
選取新的查詢, 然後選取 > 進位編輯器。
-
以下列程式碼取代範本入門程式碼:
let MyHex = (parameter1) => Number.ToText(parameter1,"X") in MyHex
-
選取 [完成]。
-
您將查詢 「MyHex」變更為自訂函數。 請注意,函數圖示 左側。
-
若要調用函數,請選取它,然後在資料預覽中,在參數 1 方塊中輸入數位,然後選取 Invoke。
-
函數的結果會顯示在資料預覽中,並新增到查詢窗格,做為具有預設名稱 ,即 Invoked 函數的查詢。 您可能會想要將其重新命名為更有意義的名稱,例如「MyHexResult」。
-
選取該查詢,然後選取>關閉&載入以查看工作表中的結果。
結果
如果您建立的函數至少有一個參數,您可以以自訂函數來為數據表中的每一列建立新資料行和新值。
-
若要開啟查詢,請找出先前從 Power Query 編輯器載入的查詢,選取資料中的儲存格,然後選取查詢>編輯。 詳細資訊請參閱在 Power Query Excel (中建立、編輯) 。 附注 在此範例中,您的查詢至少需要一欄 的全數位 資料類型。
-
建立「MyHex」自訂函數,如使用進位編輯器建立及調用具有參數的自訂函數一節所述。
-
在查詢中,選取 新增資料行 > Invoke Custom 函數。 [ 調用自訂函數 」 對話方塊會出現。
-
在 「新增欄名稱」方塊中輸入新的欄名稱,例如「HexConvert」。
-
從函數查詢下拉式清單選取預先定義的自訂函數名稱。 在此範例中,選取 「MyHex」。
-
由於自訂函數參照參數,因此現在會顯示參數。
-
選取 全數位資料類型 的欄做為函數的參數。
-
選取 [確定]。
結果
會建立一個新欄,顯示您輸入為參數之全數位欄的十六進位值。