LAMBDA 函式(六):REDUCE

更新 發佈閱讀 6 分鐘

再來介紹最後一個 LAMBDA 輔助函式,REDUCE

「reduce」這詞在中文的意思是「縮減」。在 Google 試算表上,REDUCE 會把範圍中的每個值套用指定的 LAMBDA 函式,把這函式的結果累計到一個累計值裡,最後回傳這個值,像是把一個範圍「縮~」成一個值。

簡單舉個例子,我想把 A 欄位的值累加起來(1 + 2 + 3 + ⋯⋯ + 10),把結果放在 B2 上:

raw-image


就可以用這串 REDUCE 得到 55。

=REDUCE(0, A2:A11, LAMBDA(int, val, int + val))
raw-image


如果你還記得上次介紹的 SCAN,其實 REDUCE 應該就會很好理解了:

  • SCAN 會讀取範圍內的每個值,然後回傳中繼值(移動總計)
  • REDUCE 一樣讀取範圍內的每個值,然後回傳最終的統計。

拿上面 1 加到 10 的例子來說,SCAN 就會回傳這樣的一串值:

1
3
6
10
15
21
28
...

REDUCE 就會直接回傳一個值,也就是最後計算出來的 55。

看到這邊,這功能跟 SUM 的功用其實差不多,但 REDUCE 的可能性不只有這樣!它也可以做按條件算總和(像是 SUMIFS 那樣),但提供了更多可能性。

歡迎來複製這個試算表,一起來練習看看 REDUCE 怎麼操作。




REDUCE 語法

=REDUCE(初始值, 範圍, LAMBDA)
  • 初始值:累計值的初始值,也就是 LAMBDA 在計算累加值之前的初始值。
  • 範圍:要套用 LAMBDA 函式的範圍。
  • LAMBDA:要 REDUCE 套用於範圍內初始值跟範圍的自訂函式。

REDUCE 會一個個把範圍內的值累加,從起始值開始,然後一個個累加,得到最後的值。

至於在寫 LAMBDA 的時候,我習慣把初始值的代號叫做 int(initial 的簡寫),範圍內值的代號叫做 val(value 的簡寫),要寫中文或是其他你喜歡的代號也當然沒問題喔!




REDUCE 範例

拿我們剛剛的加總的例子,試著在 B2 運用 REDUCE 看看:

raw-image


首先是初始值。如果我們只想要讓 A 欄的值加總在一起,那這邊就可以寫 0 沒關係;如果你想要讓 REDUCE 先以某個值開始,之後再加總,你就可以在這指定值。

舉例來說,如果我的初始值寫 0,那就是:

=0 + 1 + 2 + 3 + ... + 10
=55

如果你希望一開始就以 100 作為起點,之後再繼續疊加,那就是:

=100 + 1 + 2 + 3 + ... + 10
=155


再來是範圍,就是想要運算的範圍,毫無懸念就是 A2:A11。所以寫到現在,你的算式應該會是這樣:

=REDUCE(0, A2:A11, 


最後是 LAMBDA!我們先定義代號:

=REDUCE(0, A2:A11, LAMBDA(int, val, 


再來,我們想要讓起始值跟範圍的值相加在一起,所以就是 int + val

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


爽快按下 Enter,就會看到 REDUCE 的結果囉:

raw-image




只計算偶數值的累加、只計算奇數值的累加

你可以在 LAMBDA 寫條件給 REDUCE 計算累加值。

比如說,我希望 REDUCE 只計算剛剛範圍內的偶數值。我們先把 REDUCE 寫完:

=REDUCE(0, A2:A11,


接下來,我想交給 IF 去判斷範圍內的值是不是偶數。如果是的話,就累加,如果不是,就不累加,也就是這樣:

=REDUCE(0, A2:A11, LAMBDA(int, val, IF(val 是偶數, int + val, int)))


判斷偶數這件事可以交給 ISEVEN 函式來做。只要把值放到括號裡面,ISEVEN 會回傳 TRUE 或是 FALSETRUE 就是偶數、FALSE 就是奇數了。簡單舉例:

=ISEVEN(10) --> TRUE
=ISEVEN(8) --> TRUE
=ISEVEN(7) --> FALSE


好,那我們把 ISEVENLAMBDA 組裝起來,就會像這樣:

=REDUCE(0, A2:A11, LAMBDA(int, val, IF(ISEVEN(val), int + val, int)))


來看看結果:

raw-image

這樣就完成了。


至於奇數的話,你可以用 ISODD 函式來做判斷。ISODD 會判斷一個數是否是奇數,如果是的話會回傳 TRUE、不是就會回傳 FALSE

也就是,我們把剛剛的 ISEVEN 改成 ISODD,就可以計算奇數值了。像是這樣:

=REDUCE(0, A2:A11, LAMBDA(int, val, IF(ISODD(val), int + val, int)))


看看結果吧!

raw-image


這樣就完成了。接下來介紹幾個可以運用 REDUCE 的場景,提供給你參考!




計算每年漲跌幅後的最終價格

我想要算某商品 2000 年的價格(A2)在經過 C 欄與 D 欄的漲跌幅後,在 2024 年的最終價格是多少:

raw-image

如果要一年一年算的話,可能會這樣:

2000 年:5000
2001 年:5000 * -5%
2002 年:2001 年的價格 * 10%
2003 年:2002 年的價格 * 10%
2004 年:2003 年的價格 * -4%
...
本年的價格:去年的價格 * 漲跌幅​


這個就可以用 REDUCE 可以累加的特性來處理了。先彙整一下我們的需求:

  • 初始值A2,2000 年的價格。
  • 範圍D2:D,漲跌幅度的所在範圍。

再來看看 LAMBDA 怎麼寫。我們想要讓它從 2000 年的初始值開始,把初始值加上它乘上漲跌幅的價格就可以了,像是這樣:

=REDUCE(A2, D2:D, LAMBDA(int, val, int + int * val))


來試試看在 F2 上寫這個算式,看看結果:

raw-image


這樣就算得出最後的價格了!




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

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

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

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



留言
avatar-img
留言分享你的想法!
avatar-img
喜特先生官方沙龍
21.2K會員
153內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 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
想開始學塔羅卻不知道要準備哪些工具?這篇整理塔羅新手必備好物清單,從塔羅牌、塔羅布到收納袋與香氛噴霧一次入手。趁蝦皮雙11優惠打造專屬占卜空間,還能加入蝦皮分潤計畫,用分享創造收入。
Thumbnail
想開始學塔羅卻不知道要準備哪些工具?這篇整理塔羅新手必備好物清單,從塔羅牌、塔羅布到收納袋與香氛噴霧一次入手。趁蝦皮雙11優惠打造專屬占卜空間,還能加入蝦皮分潤計畫,用分享創造收入。
Thumbnail
今天不只要分享蝦皮分潤計畫,也想分享最近到貨的魔法少年賈修扭蛋開箱,還有我的雙11購物清單,漫畫、文具、Switch2、後背包......雙11優惠真的超多,如果有什麼一直想買卻遲遲還沒下手的東西,最適合趁這個購物季趕緊下單!
Thumbnail
今天不只要分享蝦皮分潤計畫,也想分享最近到貨的魔法少年賈修扭蛋開箱,還有我的雙11購物清單,漫畫、文具、Switch2、後背包......雙11優惠真的超多,如果有什麼一直想買卻遲遲還沒下手的東西,最適合趁這個購物季趕緊下單!
Thumbnail
中學數學基礎練習—整數減法練習
Thumbnail
中學數學基礎練習—整數減法練習
Thumbnail
基本的加減乘除
Thumbnail
基本的加減乘除
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 的出現,讓我們在試算表的資料處理能力帶來了革命性的進步,可以更輕鬆地完成複雜的工作!一起來看看。
Thumbnail
有招 LET,可以讓你的長算式更清晰好讀!
Thumbnail
有招 LET,可以讓你的長算式更清晰好讀!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News