建立並呼叫自訂函式

套用到
Microsoft 365 Excel Excel 2019 Excel 2016 Excel 2013 Excel 2010

自訂函式使用 M 公式語言,取一組輸入值,然後回傳單一輸出值。 如果你有想重複使用多次的邏輯,或是對不同查詢或值套用同一組轉換,可以考慮建立一個自訂函式,然後在需要時調用該函式。 有幾種方法可以建立自訂函式:

使用進階編輯器建立並呼叫一個簡單的自訂函式

以下是一個遵循長期程式設計傳統的自訂函式簡單範例。

  1. 要建立空白查詢:

    Excel選擇資料> 從其他來源>取得資料>空白查詢

    Power Query 右鍵點擊左側查詢窗格的空白,然後選擇新查詢>其他來源>空白查詢

  2. 在左側的 查詢 面板中,雙擊該名稱,然後將新的空白查詢重新命名為「HelloWorld」。

  3. 選擇新查詢,然後選擇「首領>進階編輯器」。

  4. 請將範本的起始程式碼替換為以下程式碼:
    let
         HelloWorld = () => ("Hello World")
    in
         HelloWorld

  5. 選取 [完成]

  6. 你已經把查詢「HelloWorld」改成自訂函式。 注意它左側的功能圖 示

  7. 要呼叫該函式,先選取它,然後在資料預覽中選擇 呼叫

    呼叫 HelloWorld 自訂函式

  8. 函式的結果會在資料預覽中顯示,並以預設名稱「調用函式」作為查詢加入查詢窗格。 你可能想把它改成更有意義的名字,比如「HelloWorldResult」。

  9. 選擇該查詢,然後選擇 「首頁>關閉 & 載入 」以查看工作表中的結果。

結果

HelloWorld 的成果工作表

用進階編輯器建立並呼叫一個帶有參數的自訂函式

以下範例說明如何將參數傳給自訂函式,將小數轉換為十六進位。

  1. 要建立空白查詢:

    Excel選擇資料> 從其他來源>取得資料>空白查詢

    Power Query 右鍵點擊左側查詢窗格的空白,然後選擇新查詢>其他來源>空白查詢

  2. 在左側的 查詢 窗格中,將新的空白查詢重新命名為「MyHex」。

  3. 選擇新查詢,然後選擇「首領>進階編輯器」。

  4. 請將範本的起始程式碼替換為以下程式碼:
    let
         MyHex = (parameter1) => Number.ToText(parameter1,"X")
    in
         MyHex

  5. 選取 [完成]

  6. 你已經把查詢「MyHex」改成自訂函式。 注意它左側的功能圖 示

  7. 要呼叫該函式,選取它,然後在資料預覽中,在 參數1 框輸入一個數字,然後選擇 呼叫
    調用 MyHex 自訂函數

  8. 函式的結果會在資料預覽中顯示,並以預設名稱「調用函數」作為查詢加入查詢窗格。 你可能想把它改成更有意義的名字,比如「MyHexResult」。

  9. 選擇該查詢,然後選擇 「首頁>關閉 & 載入 」以查看工作表中的結果。

結果

MyHex 函數在工作表中的結果

透過呼叫自訂函式來新增欄位

如果你建立了至少一個參數的函式,可以呼叫它作為自訂函式,為資料表中的每一列建立新的欄位和新值。

  1. 要開啟查詢,請先找到先前從 Power Query 編輯器載入的查詢,選取資料中的一個儲存格,然後選擇查詢>編輯。 更多資訊請參閱「在 Excel 中建立、編輯及載入查詢」 (Power Query)

    在這個例子中,你的查詢至少需要一欄的 整數 資料型態。

  2. 依照章節說明,建立「MyHex」自訂函式,並用進階編輯器呼叫帶有參數的自訂函式

  3. 在查詢中,選擇 新增欄位>呼叫自訂函式。 「 呼叫自訂函式 」對話框會出現。

  4. 新欄位 名稱框輸入新欄位名稱,例如「HexConvert」。

  5. 從函數查詢下拉選單中選擇預先定義的自訂函式名稱。 在此範例中,選擇「MyHex」。

  6. 由於自訂函式參考參數,該參數現在會被顯示出來。

  7. 選擇一個整 資料類型的欄位作為函數的參數。

    呼叫自訂函式對話框

  8. 選取 [確定]

結果

會建立一個新欄位,顯示你輸入的整數欄位作為參數的十六進位值。

工作表中新的 MyHex 值欄

另請參閱

適用於 Excel 的 Power Query 說明

在 Excel 中建立 Power Query 公式

建立參數查詢

管理查詢

理解Power Query M函數 (docs.com)

使用自訂函式 (docs.com)