LAMBDA 函式(五):SCAN

更新於 發佈於 閱讀時間約 6 分鐘

接下來介紹 LAMBDA 函式的第四個輔助函式,SCAN

「scan」在這邊可以翻成「掃描」,而 SCAN 的作用在於對範圍中的每個值進行「掃描」、累計運算,會回傳一個範圍,裡面的數字是每個計算步驟的中繼值;而它最常見的用法就是算「移動總計」(running total)

什麼是移動總計?舉個例子:

raw-image


我想讓 A 欄每列的值跟它上一列的相加,並把這個結果顯示在 B 欄,像是這樣:

raw-image


這就是 SCAN 可以派上用場的地方!

比起手動一個個算、或是「=A2 + A3」、「=A3 + A4」這樣的算式,SCAN 的做法更好管理、寫法也比較優雅一點,上面的例子只要短短一行:

=SCAN(0, A2:A11, LAMBDA(int, val, int + val))


接下來的教學會介紹幾項你能很快上手的 SCAN 應用。

歡迎來這邊複製一份試算表,跟我一起做做看!




SCAN 語法

=SCAN(初始值, 範圍, LAMBDA)
  • 初始值:在給 LAMBDA 計算前的初始值。
  • 範圍:要計算的陣列或範圍。
  • LAMBDA:要 SCAN 套用於範圍內每個值的自訂函式。

這邊我習慣用 int(initial,初始值的縮寫)和 val(value,值的縮寫)來當作等等寫 LAMBDA 時要用上的代號:

=SCAN(初始值, 範圍, LAMBDA(int, val, ...))


接下來實際用 SCAN 來算些東西吧。




倍倍儲蓄法

有部日本漫畫叫「烏龍派出所」,其中一個叫做「兩津勘吉」的主角,為了在短時間內存到錢,發明了一個叫做「倍倍儲蓄法」的存錢術。規則是先從很小的數目開始存錢(比如 10 塊),隔天存前一天的兩倍,不斷往下存,這麼一來就可以很快累積財富了。

用表格呈現的話:

raw-image


雖然這個理財方法在現實世界中感覺很有難度,不過我們還是試試看在 C 欄計算「當天存到的成果是多少」吧。我的意思是:

1 天存到 10
2 天存到 10+ 20= 30
3 天存到 10+ 20+ 40= 70
4 天存到 10+ 20+ 40+ 80= 150
...


這個就可以用 SCAN 來計算!先彙整一下需求:

  • 初始值:0,從 0 開始算。
  • 範圍B2B21
  • LAMBDA:就是初始值加上範圍內的值,讓它 LAMBDA 逐列計算。

組裝起來,我們就會得到:

=SCAN(0, B2:B21, LAMBDA(int, val, int + val))


放在 C2 上面,看看結果:

raw-image


SCAN 直接回傳了一組範圍,顯示了第 1 天到第 20 天存錢的各日總計分別是多少。這樣就算完囉!




年別移動總和

SCAN 遇到中間有空白的範圍也可以算,只要搭配 IF 就能輕鬆達成。

我們來看看這張表:

raw-image


我想計算移動總和,但要以年份分開、希望 SCAN 不要一路往下計算。

先來彙整一下需求:

  • 初始值:0,從 0 開始算。
  • 範圍B2B15
  • LAMBDA:就是初始值加上範圍內的值,讓它 LAMBDA 逐列計算。

要讓 SCAN 不要往下算,我們要在 LAMBDA 裡面放個 IFSCAN 在判斷的時候,遇到空值就不繼續累加、如果有數字就繼續累加:

=SCAN(0, B2:B15, LAMBDA(int, val, IF(val = "", val, int + val)))


我們在 C2 執行看看:

raw-image

這樣就成功了!




達成率計算(累計百分比)

最後用 SCAN 來算算看「達成率」。現在我有這張表,假設是某間公司每月的銷售額:

raw-image

B 欄有每月的銷售額,F2 則是今年年初設下的年度目標。我想在 C 欄計算當月份的目標達成率是多少,可以幫助我們了解當月的達成率距離目標還有多遠。

達成率的算法是:

=累計銷售額 / 年度目標

舉例來說,一月當月的銷售額約 800 萬,達成率就是:

=7906659 / 100000000

二月當月的銷售額已經累計到約 1500 萬,是一月和二月的總和,達成率就是:

=(7906659 + 7004159) / 100000000

三月的達成率就是一月、二月和三月的總和,達成率就是:

=(7906659 + 7004159 + 2014572) / 100000000

以此類推。

一樣先來彙整需求:

  • 初始值:0,從 0 開始算。
  • 範圍B2B13
  • LAMBDA:就是初始值加上範圍內的值,讓它 LAMBDA 逐列計算後,除以年度目標所在的 F2

好囉!我把這些需求寫成 SCAN 的算式,寫在 C2 上:

=SCAN(0, B2:B13, LAMBDA(int, val, int + val / F2))


來看看結果:

raw-image

這邊的達成率就算好囉!


另外,你還可以搭配剛介紹的 BYROWSPARKLINE 函式,簡單製作每月的進度條:

=BYROW(C2:C, LAMBDA(val, SPARKLINE(val, {"charttype", "bar"; "max", 1})))

D2 上執行:

raw-image

這樣就可以輕易追蹤進度了。

如果不確定怎麼操作 BYROWSPARKLINE,可以來這看看:




以上就是 SCAN 的分享!

相較於其他輔助函式,坦白說我覺得 SCAN 的應用場景比較受限,大部分都是用在計算這類的移動總和,頂多有些在分組跟計算累計百分比上的變化。如果你有想到任何可以用 SCAN 函式的其他可能性,歡迎你留言分享給我知道,我會再研究研究!✨




如果你喜歡這次的文章,歡迎你透過這些方法支持我:

  • 按下愛心、按下儲存
  • 留言告訴我你的想法
  • 加入喜特先生的官方沙龍,即時看到我發布的教學
  • 付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
  • 追蹤喜特先生的 Facebook
  • 這邊小額贊助我的創作!

想要看更多文章的話,歡迎來到我的 Notion 頁面找找有沒有你需要的資源喔!

我是喜特先生,Mr. Sheet,我們下個教學見!



留言
avatar-img
留言分享你的想法!
喜特先生 Mr. Sheet -avatar-img
發文者
2024/05/04
LAMBDA 系列文索引提及了這篇文章,趕快過去看看吧!
R-avatar-img
2024/04/25
請問如果要逐列計算的範圍有2欄的話,如何讓scan的結果只出現一欄?
喜特先生 Mr. Sheet -avatar-img
發文者
2024/04/25
R 首先 D 欄先用 MAP 去抓多個範圍,然後給它判斷日期是否為空值,如果不是,就算收入跟支出;然後 E 欄再用 SCAN 去算累積餘額。如果 SCAN 套用在兩欄的話,就會變成這樣:收入 支出 |AA BB | AA       AA+BBCC DD | AA+BB+CC AA+BB+CC+DD...所以沒辦法只讓它出現一欄喔!
avatar-img
喜特先生官方沙龍
17.9K會員
152內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 Google 試算表教學、Google Apps Script 的研究、數據分析課程的開箱,還有 Google 試算表疑難雜症的解題分享唷!💪
2025/04/20
請你試著在 Google 試算表的儲存格上打這個,按下 Enter: =WHATTHEFOXSAY() 會有神奇的事情發生喔 ✨
Thumbnail
2025/04/20
請你試著在 Google 試算表的儲存格上打這個,按下 Enter: =WHATTHEFOXSAY() 會有神奇的事情發生喔 ✨
Thumbnail
2024/06/02
上次介紹了 REPLACE 函式,可以用來取代儲存格內的特定文字。其實我們還有一個相似的函式叫 SUBSTITUTE,也有取代的功能,不過當然有一點不一樣的地方!今天會分享語法的範例,還有跟 REPLACE 的差異在哪。一起來看看!
Thumbnail
2024/06/02
上次介紹了 REPLACE 函式,可以用來取代儲存格內的特定文字。其實我們還有一個相似的函式叫 SUBSTITUTE,也有取代的功能,不過當然有一點不一樣的地方!今天會分享語法的範例,還有跟 REPLACE 的差異在哪。一起來看看!
Thumbnail
2024/05/25
這是文字處理基礎函式的第四篇文章,今天要來介紹 REPLACE 函式! REPLACE 可以取代掉儲存格內的文字,今天會分享一下它語法怎麼寫、也有兩個實際應用的案例。一起來看看! REPLACE 語法 REPLACE 的語法長了一點點,有四個參數要設定: =REPLACE(要取代
Thumbnail
2024/05/25
這是文字處理基礎函式的第四篇文章,今天要來介紹 REPLACE 函式! REPLACE 可以取代掉儲存格內的文字,今天會分享一下它語法怎麼寫、也有兩個實際應用的案例。一起來看看! REPLACE 語法 REPLACE 的語法長了一點點,有四個參數要設定: =REPLACE(要取代
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
本文提供了一個關於模擬法演算法的問題,介紹了操作指令的格式及其解析。透過程式碼模擬每條指令,找出回到根目錄所需的操作次數。本文詳細說明瞭模擬法的複雜度分析,能夠幫助讀者更好地理解這個問題。
Thumbnail
本文提供了一個關於模擬法演算法的問題,介紹了操作指令的格式及其解析。透過程式碼模擬每條指令,找出回到根目錄所需的操作次數。本文詳細說明瞭模擬法的複雜度分析,能夠幫助讀者更好地理解這個問題。
Thumbnail
高效生活,幫助你找回更多自己的時間 歡迎來到 AL 的 Googlesheet 學習筆記系列文章。在這個系列中,我們將一步步介紹各種函數,並將它們應用於日常生活中,加速工作、提高效率。 今天要介紹的是使用 Index 、 Counta 函數尋找最後一列的資料!
Thumbnail
高效生活,幫助你找回更多自己的時間 歡迎來到 AL 的 Googlesheet 學習筆記系列文章。在這個系列中,我們將一步步介紹各種函數,並將它們應用於日常生活中,加速工作、提高效率。 今天要介紹的是使用 Index 、 Counta 函數尋找最後一列的資料!
Thumbnail
喜特先生發佈了一系列介紹 LAMBDA 的文章,我把它們都統整在這了!你可以從頭開始學習,也可以找你有興趣的函式開始學習唷。 LAMBDA 函式(一):基本原理 介紹了 Google 試算表在 2022 年推出的 LAMBDA 函式和其輔助函式,以及如何在試算表中使用它們。LAMBDA
Thumbnail
喜特先生發佈了一系列介紹 LAMBDA 的文章,我把它們都統整在這了!你可以從頭開始學習,也可以找你有興趣的函式開始學習唷。 LAMBDA 函式(一):基本原理 介紹了 Google 試算表在 2022 年推出的 LAMBDA 函式和其輔助函式,以及如何在試算表中使用它們。LAMBDA
Thumbnail
再來介紹最後一個 LAMBDA 輔助函式,REDUCE!「reduce」這詞在中文的意思是「縮減」。在 Google 試算表上,REDUCE 會把範圍中的每個值套用指定的 LAMBDA 函式,把這函式的結果累計到一個累計值裡,最後回傳這個值,像是把一個範圍「縮~」成一個值。
Thumbnail
再來介紹最後一個 LAMBDA 輔助函式,REDUCE!「reduce」這詞在中文的意思是「縮減」。在 Google 試算表上,REDUCE 會把範圍中的每個值套用指定的 LAMBDA 函式,把這函式的結果累計到一個累計值裡,最後回傳這個值,像是把一個範圍「縮~」成一個值。
Thumbnail
接下來介紹 LAMBDA 函式的第四個輔助函式,SCAN! 「scan」在這邊可以翻成「掃描」,而 SCAN 的作用在於對範圍中的每個值進行「掃描」、累計運算,會回傳一個範圍,裡面的數字是每個計算步驟的中繼值;而它最常見的用法就是算「移動總計」(running total)。
Thumbnail
接下來介紹 LAMBDA 函式的第四個輔助函式,SCAN! 「scan」在這邊可以翻成「掃描」,而 SCAN 的作用在於對範圍中的每個值進行「掃描」、累計運算,會回傳一個範圍,裡面的數字是每個計算步驟的中繼值;而它最常見的用法就是算「移動總計」(running total)。
Thumbnail
接著想要一口氣介紹兩個類似的 LAMBDA 輔助函式:BYROW 跟 BYCOL。
Thumbnail
接著想要一口氣介紹兩個類似的 LAMBDA 輔助函式:BYROW 跟 BYCOL。
Thumbnail
今天要接著聊聊 LAMBDA 的第二個輔助函式,MAP。 英文中「map」這個詞除了有名詞「地圖」的意思之外,在電腦科學與數學領域裡面偶有動詞「映射」的意思。一起來看看怎麼用!
Thumbnail
今天要接著聊聊 LAMBDA 的第二個輔助函式,MAP。 英文中「map」這個詞除了有名詞「地圖」的意思之外,在電腦科學與數學領域裡面偶有動詞「映射」的意思。一起來看看怎麼用!
Thumbnail
我們馬上來介紹 LAMBDA 函式的第一個輔助函式 MAKEARRAY!
Thumbnail
我們馬上來介紹 LAMBDA 函式的第一個輔助函式 MAKEARRAY!
Thumbnail
Google 試算表在 2022 年隆重推出了 LAMBDA 函式跟它的輔助函式,讓使用者可以製作自己的函式,還可以在指定範圍內做複雜的運算。LAMBDA 的出現,讓我們在試算表的資料處理能力帶來了革命性的進步,可以更輕鬆地完成複雜的工作!一起來看看。
Thumbnail
Google 試算表在 2022 年隆重推出了 LAMBDA 函式跟它的輔助函式,讓使用者可以製作自己的函式,還可以在指定範圍內做複雜的運算。LAMBDA 的出現,讓我們在試算表的資料處理能力帶來了革命性的進步,可以更輕鬆地完成複雜的工作!一起來看看。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News