LAMBDA函數賢內助SCAN函數會用了嗎 如何使用lambda函數( 二 )


SCAN部分作為XLOOKUP函數的查詢范圍,對B列的數據累加求和 。
SCAN(0,B2:B5,LAMBDA(_a,_b,_a _b))
第1參數是初始值,為0,第2參數是數據源B2:B5,第3參數是LAMBDA表達式 。系統遍歷數據源的每一個數據▼

LAMBDA函數賢內助SCAN函數會用了嗎 如何使用lambda函數

文章插圖
第1次時 , 初始值_a為0,計算元素_b指向B2單元格 , 為2,計算結果是_a _b , 為2,作為新的初始值 。
第2次時,初始值_a為2,計算元素_b指向B3單元格,為3,計算結果是_a _b,為5,作為新的初始值 。
第3次時,初始值_a為5,計算元素_b指向B4單元格,為4,計算結果是_a _b,為9,作為新的初始值 。
第4次時,初始值_a為9 , 計算元素_b指向B5單元格,為2,計算結果是_a _b,為11,作為新的初始值 。
最后返回計算結果組成的內存數組:
LAMBDA函數賢內助SCAN函數會用了嗎 如何使用lambda函數

文章插圖
XLOOKUP函數查找SEQUENCE函數生成的序列值,查找范圍是SCAN函數返回的累加求和的數組,結果范圍是A2:A5,查詢方式是從后往前找,找下一個較大項 。比如,當尋找1時,匹配大于等于1的最小值2,返回對應的人名看見星光 。
3 連勝次數
如下圖所示,是A列各支隊伍10輪比賽的情況,需要在L列統計每支隊伍最大的連勝次數 。
LAMBDA函數賢內助SCAN函數會用了嗎 如何使用lambda函數

文章插圖
SCAN函數解法參考如下:
L2單元格輸入后向下復制填充:
=MAX(SCAN(0,B2:K2,LAMBDA(_a,_b,IF(_b="勝",_a 1,0))))
SCAN第1參數是初始值,為0,第2參數是數據源B2:K2,第3參數是LAMBDA表達式 。遍歷數據源的每一個元素,如果為勝,則累加初始值,否則將初始值歸0 。
SCAN函數返回一個內存數組 。例如,二肥隊B3:K3返回結果如下:
LAMBDA函數賢內助SCAN函數會用了嗎 如何使用lambda函數

文章插圖
最后使用MAX函數從中取最大值,也就是相關隊伍的最大連勝次數 。
相比于傳統的FREQUENCY函數而言 , SCAN的計算過程是不是清晰很多?
最后給大家說一個好消息,在新函數體系里,SCAN函數并不是必須的,大部分時候,它能做到的事情,REDUCE函數都能做到(效率和公式長短有差異) 。然后再給大家說一個壞消息,號稱萬能函數的REDUCE相比SCAN函數而言,要更……難一些 。
今天給大家分享的內容就這樣, 揮揮手 , 咱們明天再見 。
【LAMBDA函數賢內助SCAN函數會用了嗎 如何使用lambda函數】 原載公眾號:Excel星球
作者:看見星光
,

相關經驗推薦