這個函式會對每個值套用 LAMBDA
函式,藉此將指定陣列中的各個值對應為新值。
用法示範
MAP(A1:A5, LAMBDA(儲存格, 儲存格*2))
:以單一範圍做為輸入內容的 MAP
函式。
MAP(A1:A5, B1:B5, LAMBDA(儲存格1, 儲存格2, MAX(儲存格1, 儲存格2)))
:以多個範圍做為輸入內容的 MAP
函式。
MAP(UNIQUE(A1:A10), LAMBDA(數字, 數字 + 1))
:以陣列做為輸入內容的 MAP
函式。
語法
MAP(陣列1, [陣列2, ...], LAMBDA)
陣列1
:要對應的範圍陣列。陣列2, …
:[選用] 要對應的其他陣列或範圍。LAMBDA
:這個LAMBDA
函式會對應到指定陣列中的各個值,藉此取得新的對應值。- 語法:
LAMBDA(名稱1, [名稱2, …], 公式_運算式)
- 相關規定:
- 對每個傳遞的陣列來說,
LAMBDA
都必須含有剛好 1 個名稱
引數,以及使用這些名稱的公式_運算式
。套用LAMBDA
後,這些名稱會解析為已傳遞陣列中目前所對應的值。
- 對每個傳遞的陣列來說,
- 語法:
附註
-
傳遞的
LAMBDA
函式應接受剛好與提供給MAP
的輸入陣列一樣多的名稱
引數,否則會傳回#N/A
錯誤。這些引數會對應到輸入陣列中要與新值對應的數值。 -
輸入陣列中的值應對應至單一值。系統不支援對應值的陣列結果。
- 你可以為
LAMBDA
參數傳遞已命名函式
,運作方式與這裡所說的LAMBDA
相同。請參閱這篇文章,進一步瞭解已命名函式。- 為此函數定義的引數預留位置應剛好與傳遞給
MAP
的輸入陣列一樣多。 已命名函式
後方不得加上括號。
- 為此函數定義的引數預留位置應剛好與傳遞給
範例
使用 MAP 進行簡單的加倍運算
範例資料:
A |
B |
C |
D |
|
---|---|---|---|---|
1 |
1 |
2 |
||
2 |
3 |
4 |
||
3 |
2 |
4 |
||
4 |
6 |
8 |
範例:在 C3:
=MAP(A1:B2, LAMBDA(儲存格, 儲存格*2))
中輸入這個公式
將半形逗號分隔值對應至帶連字號的 SKU 代碼
範例資料:
A |
B |
|
---|---|---|
1 |
牛仔褲,黑色,XL |
牛仔褲-黑色-XL |
2 |
短褲,棕色,S |
短褲-棕色-S |
3 |
T 恤,紅色,L |
T 恤-紅色-L |
4 |
裙子,粉紅色,M |
裙子-粉紅色-M |
範例:在 B1:
=MAP(A1:A4, LAMBDA(項目, JOIN("-", SPLIT(項目, ","))))
中輸入這個公式
將多個輸入範圍對應至各個資料集中的最大值
範例資料:
A |
B |
C |
D |
E |
F |
G |
H |
|
---|---|---|---|---|---|---|---|---|
1 |
38.9 |
17.8 |
42 |
20.2 |
38.6 |
21.2 |
||
2 |
39.2 |
19.6 |
37.8 |
17.1 |
34.6 |
21.2 |
||
3 |
34.1 |
18.1 |
41.1 |
17.6 |
36.6 |
17.8 |
範例:=MAP(A1:B3, D1:E3, G1:H3, LAMBDA(值A, 值B, 值C, MAX(值A, 值B, 值C)))
結果:
A |
B |
|
---|---|---|
1 |
42 |
21.2 |
2 |
39.2 |
21.2 |
3 |
41.1 |
18.1 |
使用已命名函式做為 LAMBDA 來計算含有數字的儲存格
範例資料:
A |
B |
C |
|
---|---|---|---|
1 |
13 Going On 30 |
2 Fast 2 Furious |
12 Angry Men |
2 |
Eternal Sunshine of the Spotless Mind |
Friday the 13th |
No Country for Old Men |
已命名函式:CONTAINS_NUMBER
是已命名函式
,可檢查指定字串值是否包含任何數字。
公式定義:=ARRAYFORMULA(OR(ISNUMBER(SPLIT(儲存格, " "))))
,其中儲存格是針對 CONTAINS_NUMBER
定義的引數預留位置。
範例:=COUNTIF(MAP(A1:C2, CONTAINS_NUMBER), true)
結果:
3 |
常見錯誤
輸入陣列的大小不相符如果輸入陣列的大小不相符,就會發生下列錯誤:
「MAP 的陣列引數大小不同。」
示例: =MAP(C1:C4, D1:D2, LAMBDA(x, x+1))
在這個示例中,陣列 C1:C4
與陣列 D1:D2
的大小不相符。
如果傳遞的 LAMBDA
沒有剛好與提供給 MAP
的輸入陣列一樣多的名稱
引數,就會發生這個錯誤:
「『LAMBDA』的引數數目錯誤。引數數目應該有 3 個,現在卻有 2 個。」
示例: =MAP(C1:C4, D1:D4, LAMBDA(儲存格, 儲存格+1))
在這個示例中,我們將 2 個陣列傳遞至 MAP
,但 LAMBDA
只有 1 個名稱
引數儲存格。
如果 MAP
的最後一個參數不是 LAMBDA
,就會發生這個錯誤:
「引數必須是 LAMBDA。」
示例: =MAP(C1:C3, 3)
如果 1 或多個名稱
引數無效,就會發生這個錯誤:
「LAMBDA 函式的引數 1 不是有效名稱」。
示例: =MAP(C1:C3, LAMBDA(C1, C1+1))
在這個示例中,C1
與範圍衝突,因此是無效的名稱
。
如果在輸入陣列中套用 LAMBDA
會將各個值對應至多個值或其他陣列,就會發生這個錯誤:
「必須是單一值。系統不支援巢狀陣列結果。」
示例: =MAP(E1, LAMBDA(字詞, SPLIT(字詞, " ")))
在這個示例中,我們試圖將儲存格中的文字對應至字詞陣列。
相關函式
- LAMBDA 函式:這個函式可讓你建立及傳回自訂函式,其中含有一組
名稱
和使用這組名稱的公式_運算式
。 - REDUCE 函式:這個函式會將陣列縮減為累計結果。
- BYROW 函式:這個函式會依照資料列將陣列分組。
- BYCOL 函式:這個函式會依照資料欄將陣列分組。
- SCAN 函式:這個函式會掃描陣列並產生中繼值。
- MAKEARRAY 函式:這個函式會建立指定維度的計算陣列。
- 建立及使用已命名函式:這個函式可讓使用者建立及儲存自訂函式,類似於
LAMBDA
。