這個函式會透過對每個資料列套用 LAMBDA
函式,依資料列將陣列分組。
用法示範
BYROW(A1:C3,LAMBDA(列,MAX(列)))
BYROW(A1:C3,LAMBDA(列,SUM(列)))
語法
BYROW(陣列_或_範圍,LAMBDA)
陣列_或_範圍
:要按列分組的陣列或範圍。LAMBDA
:這個LAMBDA
會套用至指定陣列或範圍中的各個資料列,藉此取得其分組值。- 語法:
LAMBDA(名稱,公式_運算式)
- 相關規定:
- 這個
LAMBDA
必須只含有 1 個名稱
引數,以及使用該名稱
的公式_運算式
。套用LAMBDA
後,名稱
會解析為目前所分組的資料列。
- 這個
- 語法:
附註
- 傳遞的
LAMBDA
應只接受 1 個名稱
引數,否則會傳回#N/A
錯誤。這個引數會對應到輸入陣列中的一列。 - 每一列都應分組為單一值。系統不支援已分組值的陣列結果。
- 你可以為
LAMBDA
參數傳遞已命名函式
,運作方式與這裡所說的LAMBDA
相同。請參閱這篇文章,進一步瞭解已命名函式。- 你應為其明確定義 1 個引數預留位置。
已命名函式
後方不得加上括號。
範例
逐列求和
範例資料:
A |
B |
C |
|
---|---|---|---|
1 |
3 |
5 |
7 |
2 |
4 |
3 |
5 |
3 |
1 |
2 |
4 |
範例: =BYROW(A1:C3,LAMBDA(列SUM(列)))
結果:
15 |
12 |
7 |
篩選任一季度銷售額超過 1300 的年份
範例資料:
A |
B |
C |
D |
E |
|
---|---|---|---|---|---|
1 |
第 1 季 |
第 2 季 |
第 3 季 |
第 4 季 |
|
2 |
2019 |
1060 |
295 |
1425 |
280 |
3 |
2020 |
270 |
585 |
675 |
170 |
4 |
2021 |
285 |
1200 |
780 |
1235 |
5 |
2022 |
1440 |
1390 |
45 |
650 |
範例:=FILTER(A2:A5,BYROW(B2:E5,LAMBDA(列,MAX(列)>1300)))
結果:
2019 |
2022 |
使用已命名函式做為 LAMBDA 傳回 3x1 陣列,其中含有每列最大值和最小值的差
範例資料:
A |
B |
C |
|
---|---|---|---|
1 |
3 |
5 |
7 |
2 |
4 |
3 |
5 |
3 |
1 |
2 |
4 |
範例: =BYROW(A1:C3,MAX_MIN_DIFF)
已命名函式:MAX_MIN_DIFF
是已命名函式
,會輸出最大值和最小值之間的差。
公式定義:=MAX(列)-MIN(列)
,其中列
是針對 MAX_MIN_DIFF
定義的引數預留位置。
結果:
4 |
2 |
3 |
常見錯誤
傳遞的 LAMBDA 沒有剛好 1 個名稱引數如果傳遞的 LAMBDA
沒有剛好 1 個名稱
引數和 1 個公式運算式
做為引數,就會發生這個錯誤:
「『LAMBDA』的引數數目錯誤。引數數目應該有 1 個,現在卻有 2 個。」
示例: =BYROW(C1:C4,LAMBDA(a,b,a+b))
在這個示例中,LAMBDA
有 2 個名稱
引數,但其實只需要 1 個。
如果 BYROW
的最後一個參數不是 LAMBDA
,就會發生這個錯誤:
「引數必須是 LAMBDA。」
示例: =BYROW(C1:C4,4)
如果 1 或多個名稱
引數無效,就會發生這個錯誤:
「LAMBDA 函式的引數 1 不是有效名稱」。
示例: =BYROW(C1:C4,LAMBDA(C1, C1+1))
在這個示例中,C1
與範圍衝突,因此是無效的名稱
。
如果在輸入陣列中套用 LAMBDA
不會將每一列分組為單一值,就會發生這個錯誤:
「必須是單一值。系統不支援巢狀陣列結果。」
示例:=BYROW(C1:E1,LAMBDA(列,列))
相關函式
- LAMBDA 函式:這個函式可讓你建立及傳回自訂函式,其中含有一組
名稱
和使用這組名稱的公式_運算式
。 - MAP 函式:這個函式會將指定陣列中的各個值對應為新值。
- REDUCE 函式:這個函式會將陣列縮減為累計結果。
- BYCOL 函式:這個函式會依照資料欄將陣列分組。
- SCAN 函式:這個函式會掃描陣列並產生中繼值。
- MAKEARRAY 函式:這個函式會建立指定維度的計算陣列。
- 建立及使用已命名函式:這個函式可讓你建立及儲存自訂函式,類似於
LAMBDA
。