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