常用M函式語法介紹

今日目標:

M函式入門6個基礎知識

M函式基礎入門,弄明白這3點很重要

大家都知道,每週六 20:00,我都會在B站做免費Excel公開課直播。

直播的什麼內容,每次我都會用投票的形式,大家來定。

上週的直播,有3個選題。

《從零製作工作日程表》以絕對優勢勝出(文末有回放)

但是《講講Power Query》這個話題的投票數也非常高。

大家對Power Query的呼聲也特別的高,哭爹喊孃的、歇斯底里的說要學PQ!

作為一身正氣的Excel老師,我當然是選擇滿足大家的!

於是週日臨時加場,做了2個小時的《Power Query專題直播》

講的非常爽,同學們也非常的給力,直播資料創歷史新高!

什麼?你沒看到?太可惜了!

沒關係

今天拉登老師最寵學員了,其實Power Query裡最強大的還是M函式了,它算是Excel函式的加強版。

今天總結了M函式入門必知的6個基礎知識,快趕緊收藏學習吧!

1-什麼是M函式

M函式是微軟為MicroSoft Power Query設計的公式語言,簡稱M函式。

所以顧名思義,M函式只能用在Power Query中。

M函式和Excel中的函式相比,有下面幾個優勢:

1- 資料處理能力更強

Excel的函式公式處理上萬行資料的時候,就會出現明顯的卡頓。

M函式是基於Power Query的,Excel中的資料需要先載入到Power Query中,資料處理能力倍增,處理幾十萬行的資料毫無壓力。

2- 資料計算方式更豐富

普通的Excel函式,處理資料通常只有資料計算、文字處理、資料查詢這幾種方式。

而M函式基於List、Table等物件,可以實現分組統計、透視列、逆透視、合併查詢、拆分表格、表格結構重組等更多複雜的表格操作。

2- M函式能幹啥?

舉一個很簡單的例子。

我們經常需要根據某個條件,查詢所有符合的記錄。

在Excel中要編寫這麼複雜的公式。

=IFERROR(INDEX(A$3:A$18,SMALL(IF($A$3:$A$18=$G$2,ROW($A$1:$A$16),4^8),ROW(A1))),"")

而在M函式中,只需要一個SelectRows一個函式,就可以輕鬆實現。

= Table.SelectRows(源, each ([部門] = "工程部"))

而且計算的結果和原始資料保持聯動,資料發生變動,統計結果只需要右鍵,就可以一鍵重新整理。

3- M函式編寫位置

接下來,我們從函式編寫第一步開始,再來看看Excel函式和M函式,更細節的對比。

Excel函式

Excel在任意單元格都可以寫函式,只要用等號開頭就可以。

可以在單元格里寫=A2,引用A2單元格的值

可以在公式欄裡寫=SUM(B3:D4)函式,對資料求和

M函式

M函式在Power Query中編寫,同也有兩種方法

可以在公式欄裡寫M函式

步驟如下:

1- 先點選fx,建立一個新的步驟然後開

2- 在公式欄中開始寫公式

也可以在「高階編輯器」中,用程式碼的形式來寫M函式。

步驟如下:

1- 在「主頁」選單中,點選「高階編輯器」

2- 給這個步驟起一個名字sumresult

3- 其名字後面編寫M函式公式

4- 函式名稱

函式公式根據用途,可以分為統計函式、文字函式、查詢函式等型別。

Excel函式

Excel中可以在「公式」欄中,根據分類選擇使用對應的函式。

如果是直接手寫函式,沒有相關的分類提示。

M函式

M函式的分類管理,使用了程式設計中的“包”管理策略。

根據不同的資料型別,設定了不同的“包”,使用函式的時候,需要先寫“包”名稱。

比如,前面統計3月銷量的公式,步驟如下:

1- 先寫List包名稱。

2- 然後寫List.Sum函式,對錶格“源“中的「3月」這一列求和。

所有的M函式,都要先寫包名稱。

5- 引數型別

引數就是函式公式計算需要的原材料。

M函式學習的一個大門檻,就是對於引數型別(或者說資料型別)的理解。

Excel函式

函式引數型別,都是具體的數值,這個數值有兩種引數形式:

1- 數值,直接寫在函式中

2- 引用,通過單元格引用,寫入函式中

M函式

除了常規的數值型別,M函式中增加了3個資料型別:Record、List、Table,引入了程式設計中的“物件”的概念,增加了學習難度。

1- Record

多個不同型別的資料的合集。比如一個人的姓名、數量等資訊,可以以人為單位,這個人的型別就是Record。

在Power Query中,單元格里顯示的是資料型別「Record」,滑鼠選擇單元格後,下方的預覽面板中,可以檢視Record的明細。

2- List

一組資料清單,類似Excel中的陣列。這個陣列中的資料,可以是數值,也可以是一組Record,也可以是一組List,一組Table。

這個list中既包含了基礎的資料,也包含了Record記錄和另一個list資料。

3- Table

表格型別資料。沒錯的,M函式中可以把一整個表格,都當成引數,而且是常規操作。

因為M函式計算的最終目的就是返回一個表格。

在預覽區域中,可以看到表格的欄位名稱、資料內容。

6- 返回結果

返回結果,是指函式公式計算之後返回到單元格里的資料。

Excel函式

仔細回顧一下Excel中的函式公式,無論是SUM函式,VLOOKUP函式,返回的資料型別都非常單一,全部都是1個單獨的數值。

然後我們再通過「填充公式」的方式,計算出所有符合要求的資料。

無論公式長短,返回結果都是一個數值。

M函式

M函式中的引數多了Record、List、Table三種型別,那麼對應的,M函式也可以把這三種資料型別,作為計算結果返回到Power Query中。

返回Record資料

這段公式將返回一個Record資料

= [姓名="拉登Dony",數量=123]

返回List資料

這段公式將返回一個List資料

= {1,2,3,4}

返回Table資料

這段公式將返回一個Table資料

= #table({"姓名","數量"},{{"dony",123},{"king",456}})

大部分情況下,我期望返回的結果都是一個Table型別,因為需要轉成表格上載到Excel中。

而List和Record通常是資料計算過程中,處理的資料,特別是List型別資料,包含了大量核心的M函式,也是後續深入學習的重點。

總結

如果根據誕生的年份來看

Excel函式已經是一箇中老年人,大家都非常的熟悉了,合作起來也更順暢,但技術陳舊,處理複雜需求的時候,會略顯疲憊。

M函式則是小夥正當年,技術高、能力強,手上一大把的神器函式,但是人生地不熟,語言有障礙,前期溝通成本略高。

看完今天的文章,你覺得自己該不該學習M函式呢?投票告訴我吧?

1. 趕緊學M函式,否則就out了

2. Excel函式夠用了,不著急

我是拉小登,一個會設計表格的Excel老師