建立和叫用自訂函數

Applies To
Excel for Microsoft 365 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. 函數的結果會顯示在 [資料預覽] 中,並以預設名稱 Invoked 函數的查詢形式新增至 [査詢] 窗格。 您可能會想要將它重新命名為更有意義的名稱,例如 “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. 函數的結果會顯示在 [資料預覽] 中,並以預設名稱 Invoked 函數的查詢新增至 [査詢] 窗格。 您可能想要將它重新命名為更有意義的名稱,例如 “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)