自定義函數使用 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 方塊中輸入數字,然後選取 [ 叫用]。
-
函數的結果會顯示在 [數據預覽] 中,並新增到 [ 查詢 ] 窗格做為具有默認名稱 之 [叫用函數] 的查詢。 您可能會想要將其重新命名為更有意義的名稱,例如「MyHexResult」。
-
選取該查詢,然後選取 [ 首頁 ]> [關閉 & 載入 ] 以查看工作表中的結果。
結果
如果您已使用至少一個參數建立函數,您可以呼叫它做為自定義函數,以建立數據表中每一列的新數據行和新值。
-
若要開啟查詢,請找出先前從 Power Query 編輯器 載入的查詢、選取數據中的儲存格,然後選取 [查詢 > 編輯]。 如需詳細資訊,請參閱在 Excel (Power Query) 中建立、編輯和載入查詢。 注意 在此範例中,您的查詢需要至少一個 整 數數據類型的數據行。
-
建立「MyHex」自定義函數,如建立及叫用具有 進階編輯器 參數的自定義函數一節所述。
-
在查詢中,選取 [新增欄 > 叫用自定義函數]。 隨即出現 [叫用自定義函數] 對話框。
-
在 [新增欄名] 方塊中輸入新的 欄 名稱,例如“HexConvert”。
-
從 [函數] 查詢下拉式清單中選取預先定義的自定義函數名稱。 在此範例中,選取 [MyHex]。
-
由於自定義函數會參照參數,因此現在會顯示參數。
-
選取整 數數據類型的 欄做為函數的參數。
-
選取 [確定]。
結果
隨即建立新的數據行,顯示您輸入為參數之 [整數] 數據行的十六進位值。