今天我們正式進入了函數式編程的篇章,徹底跟輔助列說拜拜了!這一節我們來了解下MAP函數的使用方法,它是LAMBDA函數的輔助函數,所謂的輔助函數就意味,這個函數必須配合LAMBDA才能使用。
一、了解數組概念
要學習LAMBDA的輔助函數,必須要了解數組這個概念,因為LAMBDA的輔助函數大多都是數字,結果會自動生成無需進行函數填充。
數組簡單來說就是由一串數字組成的數據,數組中的數字是一個整體,不可單獨刪除,關於數組我們需要明白他們的計算規則,數組與單個數字發生運算,是數組中的所有數字與這個數字逐個計算形成一個新數組,數組與數組發生計算,是數組中位置對應的數字計算,然後形成一個新的數組,數組之前有詳細講到過,在這裡就不再贅述了,不明的大家可以搜下之前發的文章。
二、MAP函數
MAP: 將數組中的每個值通過LAMBDA進行計算,得到與原數組相同的結果。
語法:=MAP (array1, lambda_or_array<#>)
- 參數1:要映射的數組。
- 參數2:關於lambda的計算式
我們可以把這個函數簡單理解為映射,就好比當第一參數代入了4個數字,這4個數字會經過lambda的計算,再返回4個對應的結果,結果的位置跟個數與代入數字的位置與個數相互對應。
三、單參數案例
公式:=MAP(A2:A6,LAMBDA(x,PI()*x^2))
- 參數1:A2:A6
- 參數2:LAMBDA(x,PI()*x^2)
這個函數的作用是計算圓的面積,在這裡X就表示A2:A6這個區域,MAP會將這個區域的所有數據逐個代入LAMBDA返回對應的結果。
四、雙參數案例
公式:=MAP(A3:A9,B3:B9,LAMBDA(x,y,x+y))
這個函數的作用是讓2個區域的數組相加,這個案例的關鍵是是要告訴大家,MAP是可以設置多個數據區域的,如果你在MAP設置了多個數據區域,就必須要在LAMBDA中定義對應的名稱。
在這裡X就A3:A9。Y就表示B3:B9 ,表達式可以根據X與Y來隨意書寫。
五、累加求和
公式:=MAP(C2:C8,LAMBDA(X,SUM(C2:X)))
這個公式是為了告訴大家,MAP它引用的是單元格為位置,是將單元格的位置代入到函數中進行計算的,而不是單元格中的值。
如下圖,將C2:C8區域代入到MAP函數後,區域就會變為C2:C2,C2:C3, C2:C4單位依次增加從而達到累加求和的效果。
六、合併同類項
公式:=VSTACK({"部門","姓名"},HSTACK(UNIQUE(C3:C13),MAP(UNIQUE(C3:C13),LAMBDA(x,TEXTJOIN("、",TRUE,FILTER(B3:B13,C3:C13=x))))))
使用這個公式,我們可以補藉助輔助列,一步得到合併同類項的結果,公式雖然看起來挺複雜,但是理解起來並不難。
- 1. 首先利用FILTER來篩選出班級對應的雖有姓名
- 2. 利用TEXTJOIN函數將班級所有的姓名都合併在一個單元格中
- 3. 使用MAP將部門逐個代入TEXTJOIN函數,
- 4. 利用HSTACK將部門添加到結果的左側
- 5. 使用VSTACK將表頭添加在結果上方
以上就是MAP函數函數的使用方法,以後會跟大家介紹更多的編程式函數,大家可以凍手練習一下,因為編程式函數確實有點費腦子。
原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/288268.html