
文章插圖
HI,大家好,我是星光 。今天給大家聊SCAN 。
這貨的基本語法如下:
=SCAN(初始值,數(shù)據源,LAMBDA(參數(shù)1,參數(shù)2,計算方式))它可以遍歷數(shù)據源的每一個數(shù)據,根據計算方式,返回一個與數(shù)據源尺寸相等的數(shù)組 。
舉三個常見的用法小栗子 。
1 填充空值
如下圖所示,A列存在合并單元格,現(xiàn)在需要創(chuàng)建一個內存數(shù)組,將A列的數(shù)據填充完整

文章插圖
——既然你已經學到SCAN,函數(shù)段位起碼也是星耀Ⅴ了,就別問我這個問題為什么用內存數(shù)組,而不是基礎操作或者輔助列了 。
SCAN函數(shù)解法參考如下:
公式看不全可以左右拖動..
=SCAN("",A1:A12,LAMBDA(_a,_b,IF(_b="",_a,_b)))
文章插圖
第1參數(shù)是初始值,第2參數(shù)是數(shù)據源A1:A12,第3參數(shù)是一個LAMBDA表達式 , 它又有3個參數(shù),前兩個參數(shù)分別被命名為_a和_b,其中_a指向初始值,_b指向數(shù)據源的迭代元素 , 第3個參數(shù)是一條IF函數(shù)
IF(_b="",_a,_b)IF函數(shù)的意思是如果計算元素_b為空,則返回初始值_a,否則返回_b自身 。
SCAN遍歷數(shù)據源的每個元素,并執(zhí)行LAMBDA計算,整個公式的計算過程如下▼
第1次先計算A1單元格的值 , 此時初始值_a為空,_b指向A1單元格,值為"姓名" 。_b不等于空,IF表達式返回_b自身 , SCAN將計算結果作為新的初始值 。初始值_a也就變成了"姓名" 。

文章插圖
第2次計算A2單元格的值,此時_b指向A2單元格,值為"看見星光",它不等于空,IF表達式返回_b自身 , SCAN將計算結果作為新的初始值 。初始值_a就變成了"看見星光" 。

文章插圖
第3次計算A3單元格的值,此時_b指向A3單元格,值為空,它等于空,IF表達式返回初始值_a , SCAN將計算結果作為新的初始值 。初始值_a依然是"看見星光" 。

文章插圖
第4次計算A4單元格的值 , 此時_b指向A4單元格,值為空,IF表達式返回初始值_a,SCAN將計算結果作為新的初始值 。初始值_a還是"看見星光" 。

文章插圖
……
其余以此類推,把每個元素遍歷完成后,將計算結果以數(shù)組的形式返回 。
在各種親疏關系不同的場合里我們都講過,工作表新函數(shù)正在加速向編程語言轉換,學習這類新函數(shù),多少都需要一點編程的循環(huán)思維 。如果你學過VBA又或者其它編程語言,再看這類新函數(shù)應該簡單很多 , 畢竟它們只是一類被封裝好的基礎循環(huán)語句 。
SCAN函數(shù)不但支持引用,也支持數(shù)組,不但支持查詢 , 也支持聚合等計算方式 。
2 累加求和
如下圖所示,需要將A列的數(shù)據按B列的指定次數(shù)重復,D列為模擬結果 。
(星光老師的原圖有公眾號二維碼 , 但是頭條號里不允許,那就不好意思了……)

文章插圖
這題函數(shù)解法有十幾種 , 其中涉及到SCAN函數(shù)的解法參考如下:
=XLOOKUP(
SEQUENCE(SUM(B2:B5)), SCAN(0,B2:B5,LAMBDA(_a,_b,_a _b)), A2:A5, "",1,-1)
相關經驗推薦
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 分布函數(shù)怎么求 分布函數(shù)怎么求概率
- if函數(shù)的使用方法一鍵重裝系統(tǒng) if函數(shù)的操作步驟
- Matlab怎么求反函數(shù) matlab怎么求反函數(shù)
- 初二正比例函數(shù)的圖像和性質 正比例函數(shù)的圖像和性質
- excel中按條件求和的函數(shù) Excel中如何按指定條件求和
- excel函數(shù)乘法怎么用 excel表格函數(shù)公式乘法
- Excel里如何搜索 如何在excel中搜索函數(shù)
- excel中l(wèi)en函數(shù)的使用方法 Excel中Lenb函數(shù)的用法
- 函數(shù)有定義什么意思 有定義什么意思
- 二次函數(shù)的應用知識點 二次函數(shù)的應用知識點思維導圖
