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