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

文章插圖
——既然你已經學到SCAN,函數段位起碼也是星耀Ⅴ了,就別問我這個問題為什么用內存數組,而不是基礎操作或者輔助列了 。
SCAN函數解法參考如下:
公式看不全可以左右拖動..
=SCAN("",A1:A12,LAMBDA(_a,_b,IF(_b="",_a,_b)))
文章插圖
第1參數是初始值,第2參數是數據源A1:A12,第3參數是一個LAMBDA表達式 , 它又有3個參數,前兩個參數分別被命名為_a和_b,其中_a指向初始值,_b指向數據源的迭代元素 , 第3個參數是一條IF函數
IF(_b="",_a,_b)IF函數的意思是如果計算元素_b為空,則返回初始值_a,否則返回_b自身 。
SCAN遍歷數據源的每個元素,并執行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還是"看見星光" 。

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

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