自訂函式使用 M 公式語言,取一組輸入值,然後回傳單一輸出值。 如果你有想重複使用多次的邏輯,或是對不同查詢或值套用同一組轉換,可以考慮建立一個自訂函式,然後在需要時調用該函式。 有幾種方法可以建立自訂函式:
- 使用進階編輯器新增你自己的 let 語句,從頭開始。
- 請使用 「呼叫自訂函式 」指令。
- 還有其他未在本說明主題中討論的函式建立方式,包括 建立函式 與 新增為查詢 指令。 欲深入了解,請參閱《理解Power Query M函數 (docs.com) 及使用自訂函數 (docs.com) 。
使用進階編輯器建立並呼叫一個簡單的自訂函式
以下是一個遵循長期程式設計傳統的自訂函式簡單範例。
要建立空白查詢:
Excel選擇資料> 從其他來源>取得資料>空白查詢。
Power Query 右鍵點擊左側查詢窗格的空白,然後選擇新查詢>其他來源>空白查詢。
在左側的 查詢 面板中,雙擊該名稱,然後將新的空白查詢重新命名為「HelloWorld」。
選擇新查詢,然後選擇「首領>進階編輯器」。
請將範本的起始程式碼替換為以下程式碼:
let
HelloWorld = () => ("Hello World")
in
HelloWorld選取 [完成]。
你已經把查詢「HelloWorld」改成自訂函式。 注意它左側的功能圖
。要呼叫該函式,先選取它,然後在資料預覽中選擇 呼叫 。
函式的結果會在資料預覽中顯示,並以預設名稱「調用函式」作為查詢加入查詢窗格。 你可能想把它改成更有意義的名字,比如「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」。
由於自訂函式參考參數,該參數現在會被顯示出來。
選擇一個整 數 資料類型的欄位作為函數的參數。
選取 [確定]。
結果
會建立一個新欄位,顯示你輸入的整數欄位作為參數的十六進位值。