常用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老師