LAMBDA 函式(四):BYROW、BYCOL

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

接著想要一口氣介紹兩個類似的 LAMBDA 輔助函式:BYROWBYCOL

「row」跟「col」(column 的縮寫)在 Google 試算表分別是「列」與「欄」,這邊的「by」可翻成「每⋯⋯」的意思,所以你可以把它們兩個函式理解成:

  • BYROW:在指定範圍的逐列套用 LAMBDA 函式
  • BYCOL:在指定範圍的逐欄套用 LAMBDA 函式

我們常在這些地方用 BYROWBYCOL

  • 跟聚集函式配合SUMAVERAGECOUNT / COUNTAMAXMIN):計算每列或是每欄的聚集結果。
  • 篩選數據、格式化數據:可以逐列依照條件篩選文字、數字,又或是讓它們以某種格式顯示。這效用類似於 MAP

老樣子,歡迎來這邊領取練習用的試算表,一起來實作看看!




BYROW 語法、BYCOL 語法

=BYROW(範圍, LAMBDA)
=BYCOL(範圍, LAMBDA)
  • 範圍:要套用 LAMBDA 函式的範圍。這邊只能填一個,不能有多個。
  • LAMBDA:要 BYROWBYCOL 套用於範圍內每列或每欄的自訂函式。

看得出這兩個函式語法很接近!另外給你一個小技巧:

  • BYROW 函式的結果會「往下長」
  • BYCOL 函式的結果會「往右長」




BYROW 範例

我想先舉個 BYROW 的例子,一起來看看語法怎麼寫吧。

假如我想一口氣計算 A 欄的各店家第一季到第四季營收(B 欄到 E 欄)的總和(E 欄):

raw-image

我要先指定計算的範圍,也就是 B2E4

=BYROW(B2:E4, 

接下來就是 LAMBDA 了。我想取每列的總和,所以代號取 row(表「列」的意思),再用 SUM 把它包起來:

=BYROW(B2:E4, LAMBDA(row, SUM(row))

這樣就一口氣算好了!

raw-image


如果不用 BYROW⋯⋯

要達到一樣這種一口氣的效果,或許要借助 ArrayFormula 的力量:

=ArrayFormula(B2:B + C2:C + D2:D + E2:E)
raw-image

不過看起來沒那麼理想。一來是它會產生很多 0,可能得再用其他方法才可以消去 0(像是 IF 或是 ARRAY_CONSTRAIN 限制顯示的結果),二來是這串「B2:B + C2:C + D2:D + E2:E」看起來不漂亮,萬一有很多欄要加總的話,也挺花時間的。

你也可以在開頭寫 SUM 來算整列,然後再手動向下拉:

=SUM(B2:E2)

但這樣就多了一步,且工作表內的算式就會變多,會影響管理跟效能。


所以這就是 BYROWBYCOL 常常會和聚集函式在一起用的一大原因!

我把這個結果放在「BYROW 範例」工作表,你可以參考看看。




BYCOL 範例

BYCOL 也是類似的使用場景,只是變成逐欄計算。舉例來說,我們用同一組資料,來算「每季最高營收」是多少:

raw-image


我們在 B2BYCOL 起頭:

=BYCOL(

範圍一樣是 B2E4

=BYCOL(B2:E4, 

最後定義 LAMBDA 要如何計算。我想取每欄的最大值,所以代號取 col(表「欄」的意思),再用 MAX 把它包起來:

=BYCOL(B2:E4, LAMBDA(col, MAX(col)))

來看看結果:

raw-image

這樣就搞定啦!


我們最後來看一個比較複雜一點的 BYROW 場景。



勤學徽章與加油徽章:用指定條件對每列做分類

假設你是一位班導師。最後一次段考結束了,你收到了每個學生每科的成績。你要基於下面的條件,給學生兩種徽章來鼓勵同學:

  • 勤學徽章:各科平均超過 80 分。
  • 加油徽章:各科平均低於 60 分,且每科都低於 60 分。

這是成績單,我們要在 G 欄寫產生出結果:

raw-image


好!來試著寫看看吧。我們先釐清一下需求:

  • 範圍:B2:F31
  • LAMBDA:這邊要做多條件的判定(判斷是勤學徽章、加油徽章以及兩者皆非),所以會用到 IFSIFNA。要計算平均值就會用到 AVERAGE,要找最大值就是 MAX

因為要對每列做判斷,所以選擇以 BYROW 開頭:

=BYROW(

範圍就是 B2F31

=BYROW(B2:F31, 

再來是 LAMBDA。我們要讓 LAMBDA 運算每列,所以用「row」作為代號:

=BYROW(B2:F31,
LAMBDA(row,

(因為想到等等的 LAMBDA 可能會寫很長,就先斷行了。你可以用 Ctrl/Cmd + Enter 在算式間斷行)

我們要對每列成績做多條件判斷,且需要顧慮到有兩者皆非的可能性,所以先寫 IFNAIFS

=BYROW(B2:F31,
LAMBDA(row, IFNA(IFS(

到這裡就可以開始寫條件了:

  • 如果各科平均超過 80 分,就是勤學徽章
  • 如果各科平均低於 60 分,且每科都低於 60 分,就是加油徽章。

翻譯成算式,就會像這樣:

=BYROW(B2:F31,
LAMBDA(row, IFNA(IFS(AVERAGE(row) > 80, "勤學徽章",
AND(AVERAGE(row) < 60, MAX(row) < 60), "加油徽章"))))


我們在 G2 執行看看:

raw-image

完成!


這種利用 IFSANDOR 配合、篩選分類數據的方法,也是另一個 BYROWBYCOL 的常用場景,可以跨過 ArrayFormula 對特定函式無法套用的障礙。




在做數據分析的時候,我們往往見到比較「長」的表格,也就是列數較多、欄數較少的表格,所以實務上我比較常用 BYROW 來解決這類批次聚集運算、或是分類數據的問題。BYCOL 在「寬」表格當然也很好用,把 BYROW 學會了,你就可以輕鬆學會 BYCOL




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

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

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

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



留言
avatar-img
留言分享你的想法!
avatar-img
喜特先生官方沙龍
20.6K會員
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
高效生活,幫助你找回更多自己的時間 歡迎來到 AL 的 Googlesheet 學習筆記系列文章。在這個系列中,我們將一步步介紹各種函數,並將它們應用於日常生活中,加速工作、提高效率。 今天要介紹的是使用 Index 、 Counta 函數尋找最後一列的資料!
Thumbnail
高效生活,幫助你找回更多自己的時間 歡迎來到 AL 的 Googlesheet 學習筆記系列文章。在這個系列中,我們將一步步介紹各種函數,並將它們應用於日常生活中,加速工作、提高效率。 今天要介紹的是使用 Index 、 Counta 函數尋找最後一列的資料!
Thumbnail
在 Google 試算表中,LEFT、MID、RIGHT 函式都是用來擷取文字字串中特定部分的函式。我想在這次的教學簡單介紹一下它們,歡迎來看看! LEFT:從左邊(開頭)取字串 我們可以用 LEFT 函式從字串的左邊(開頭)取指定字數的字串。 語法 =LEFT(字串, 要取的
Thumbnail
在 Google 試算表中,LEFT、MID、RIGHT 函式都是用來擷取文字字串中特定部分的函式。我想在這次的教學簡單介紹一下它們,歡迎來看看! LEFT:從左邊(開頭)取字串 我們可以用 LEFT 函式從字串的左邊(開頭)取指定字數的字串。 語法 =LEFT(字串, 要取的
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 輔助函式: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