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
14.2K會員
148內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 Google 試算表教學、Google Apps Script 的研究、數據分析課程的開箱,還有 Google 試算表疑難雜症的解題分享唷!💪
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
喜特先生官方沙龍 的其他內容
今天要接著聊聊 LAMBDA 的第二個輔助函式,MAP。 英文中「map」這個詞除了有名詞「地圖」的意思之外,在電腦科學與數學領域裡面偶有動詞「映射」的意思。一起來看看怎麼用!
我們馬上來介紹 LAMBDA 函式的第一個輔助函式 MAKEARRAY!
Google 試算表在 2022 年隆重推出了 LAMBDA 函式跟它的輔助函式,讓使用者可以製作自己的函式,還可以在指定範圍內做複雜的運算。LAMBDA 的出現,讓我們在試算表的資料處理能力帶來了革命性的進步,可以更輕鬆地完成複雜的工作!一起來看看。
有招 LET,可以讓你的長算式更清晰好讀!
已命名範圍是 Google 試算表的功能,簡單來說可以把儲存格參照範圍改成自己想要的名字,可以讓算式更好讀、減少維護時間、減少錯誤機率、在算式和可以用這個名字引用這個範圍。來看看怎麼做!
今天要接著聊聊 LAMBDA 的第二個輔助函式,MAP。 英文中「map」這個詞除了有名詞「地圖」的意思之外,在電腦科學與數學領域裡面偶有動詞「映射」的意思。一起來看看怎麼用!
我們馬上來介紹 LAMBDA 函式的第一個輔助函式 MAKEARRAY!
Google 試算表在 2022 年隆重推出了 LAMBDA 函式跟它的輔助函式,讓使用者可以製作自己的函式,還可以在指定範圍內做複雜的運算。LAMBDA 的出現,讓我們在試算表的資料處理能力帶來了革命性的進步,可以更輕鬆地完成複雜的工作!一起來看看。
有招 LET,可以讓你的長算式更清晰好讀!
已命名範圍是 Google 試算表的功能,簡單來說可以把儲存格參照範圍改成自己想要的名字,可以讓算式更好讀、減少維護時間、減少錯誤機率、在算式和可以用這個名字引用這個範圍。來看看怎麼做!
你可能也想看
Google News 追蹤
Thumbnail
※ GROUP BY 用於將數據表中的數據按照一個或多個列進行分組。例如在處理一個表格的資料時,可以指定欄位,一個或是多個,然後把將其視為ID進行分組處理。 ※ 語法 SELECT column1, column2, ..., aggregate_function(column) FROM
Thumbnail
🎗️本次主題成果展示:人力資訊分析 上集回顧 🔗EXCEL儀表板 | 人力資訊分析儀表板 #1 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #2 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #3 | 上手等級:入門🔗
Thumbnail
高效生活,幫助你找回更多自己的時間 歡迎來到 AL 的 Googlesheet 學習筆記系列文章。在這個系列中,我們將一步步介紹各種函數,並將它們應用於日常生活中,加速工作、提高效率。 今天要介紹的是使用 Index 、 Counta 函數尋找最後一列的資料!
Thumbnail
給定一個字串陣列,請把它們所共有的字元伴隨著出現次數輸出。這篇文章介紹如何使用字典統計出現次數,和字典取交集的方法來解決此問題。並提供了複雜度分析和關鍵知識點。
Thumbnail
最近每天都有同學在解題社群提問這類型的問題,有些同學甚至po出解答來提問,表示看了解答卻還是看不懂,畢竟有時候「詳解」也沒辦法完整表達所有觀念。 排列組合是一門龐大的章節,許多人聞排組而色變,但排列組合的本質其實還是「窮舉法」,也就是把全部的可能通通列出來,只是很多地方我們可以透過計算讓窮舉變得更
Thumbnail
題目敘述 題目會給定我們一個二維陣列,要求我們計算內部元素相同的column row pairs總共有多少條? 註: pair的定義就是row i 和 column j 彼此內部元素值都相同,這樣就算一條pair。 題目的原文敘述 測試範例 Example 1: Input: gr
Thumbnail
在 Google 試算表或 Excel 做文字處理時,有時只需要一串文字的右邊第一個字,例如「星期一」我只需要「一」,用left()、right()和mid()就可以快速處理。這篇文章將以星期為例。
Thumbnail
本文介紹了串列運算式的應用,以及與Lambda匿名函式方法的比較,並提供了程式範例。串列運算式提供了一種簡潔的語法,用於創建、轉換和過濾列表。lambda函式用於創建匿名函式,通常用於簡單的操作。建議在比較複雜的情況下使用一般for迴圈加if來表示。
Thumbnail
如果我只是想要重複做一些很簡單的運算,還有沒有更簡潔的方式,那就是Lambda匿名函式。 本文將介紹 : Lambda匿名函式的用法,也比較跟自定函式的差異之處。 結合map,filter,sorted函式做應用介紹
Thumbnail
※ GROUP BY 用於將數據表中的數據按照一個或多個列進行分組。例如在處理一個表格的資料時,可以指定欄位,一個或是多個,然後把將其視為ID進行分組處理。 ※ 語法 SELECT column1, column2, ..., aggregate_function(column) FROM
Thumbnail
🎗️本次主題成果展示:人力資訊分析 上集回顧 🔗EXCEL儀表板 | 人力資訊分析儀表板 #1 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #2 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #3 | 上手等級:入門🔗
Thumbnail
高效生活,幫助你找回更多自己的時間 歡迎來到 AL 的 Googlesheet 學習筆記系列文章。在這個系列中,我們將一步步介紹各種函數,並將它們應用於日常生活中,加速工作、提高效率。 今天要介紹的是使用 Index 、 Counta 函數尋找最後一列的資料!
Thumbnail
給定一個字串陣列,請把它們所共有的字元伴隨著出現次數輸出。這篇文章介紹如何使用字典統計出現次數,和字典取交集的方法來解決此問題。並提供了複雜度分析和關鍵知識點。
Thumbnail
最近每天都有同學在解題社群提問這類型的問題,有些同學甚至po出解答來提問,表示看了解答卻還是看不懂,畢竟有時候「詳解」也沒辦法完整表達所有觀念。 排列組合是一門龐大的章節,許多人聞排組而色變,但排列組合的本質其實還是「窮舉法」,也就是把全部的可能通通列出來,只是很多地方我們可以透過計算讓窮舉變得更
Thumbnail
題目敘述 題目會給定我們一個二維陣列,要求我們計算內部元素相同的column row pairs總共有多少條? 註: pair的定義就是row i 和 column j 彼此內部元素值都相同,這樣就算一條pair。 題目的原文敘述 測試範例 Example 1: Input: gr
Thumbnail
在 Google 試算表或 Excel 做文字處理時,有時只需要一串文字的右邊第一個字,例如「星期一」我只需要「一」,用left()、right()和mid()就可以快速處理。這篇文章將以星期為例。
Thumbnail
本文介紹了串列運算式的應用,以及與Lambda匿名函式方法的比較,並提供了程式範例。串列運算式提供了一種簡潔的語法,用於創建、轉換和過濾列表。lambda函式用於創建匿名函式,通常用於簡單的操作。建議在比較複雜的情況下使用一般for迴圈加if來表示。
Thumbnail
如果我只是想要重複做一些很簡單的運算,還有沒有更簡潔的方式,那就是Lambda匿名函式。 本文將介紹 : Lambda匿名函式的用法,也比較跟自定函式的差異之處。 結合map,filter,sorted函式做應用介紹