MAP 是 Microsoft 365 Excel 提供的 陣列轉換函數,用來將 一個或多個陣列的值傳入 LAMBDA 函數,並對 每個元素執行計算,生成新的數組。
這對於 批量計算、數據轉換、條件判斷 特別有用,適合與 LAMBDA、MAKEARRAY、BYROW、BYCOL 等函數組合使用!
? MAP 函數語法
MAP(array1, [array2, ...], lambda(value1, [value2, ...]))
- array1, array2, …:要套用 LAMBDA 計算的 一個或多個陣列。
- lambda(value1, value2, …):定義對陣列 每個元素 要執行的計算。
? 作用:逐個取出陣列元素,傳入 LAMBDA,計算後回傳新陣列。
? MAP 函數應用範例
1️⃣ 所有數值乘 2
=MAP(A1:A5, LAMBDA(x, x * 2))
? 效果:將 A1:A5 的每個值都 乘以 2。
? 類似 Excel 的 A1:A5 * 2,但更靈活,可與多個陣列搭配!
2️⃣ 兩個陣列的對應數值相加
=MAP(A1:A5, B1:B5, LAMBDA(x, y, x + y))
? 效果:對應 A 列與 B 列的值相加(A1+B1, A2+B2, ...)。
3️⃣ 條件判斷:數值高於 50 顯示「高」,否則顯示「低」
=MAP(A1:A10, LAMBDA(x, IF(x>50, "高", "低")))
? 效果:對 A1:A10 的數值執行判斷,大於 50 顯示 “高”,否則 “低”。
4️⃣ 兩數相除,避免除數為 0
=MAP(A1:A5, B1:B5, LAMBDA(x, y, IF(y=0, "錯誤", x / y)))
? 效果:對應計算 A1/B1, A2/B2, ...,但如果 B=0,則顯示 "錯誤"。
5️⃣ MAP 搭配 TEXTJOIN,標示大於平均值的數
=LET(avg, AVERAGE(A1:A10), TEXTJOIN(", ", TRUE, MAP(A1:A10, LAMBDA(x, IF(x>avg, "▲"&x, x)))))
? 效果:
- 計算
A1:A10的平均值avg。 - 若數值 > 平均值,則 加上 ▲ 標示。
- 用
TEXTJOIN將所有結果合併為一行。
? MAP vs BYROW vs BYCOL
| 函數 | 作用 | 適用場景 |
|---|---|---|
| MAP | 逐個對陣列元素運算 | 適合單個或多個陣列逐項計算 |
| BYROW | 針對 每一行 計算 | 適合逐行處理,例如行總和 |
| BYCOL | 針對 每一列 計算 | 適合逐列計算,例如列平均值 |
? MAP 適合單獨處理每個元素,而 BYROW/BYCOL 適合行或列整體計算!
? 總結
✅ MAP 可逐一處理陣列元素,並透過 LAMBDA 自訂計算方式。
✅ 可與多個陣列搭配使用,例如加法、條件判斷、除法錯誤處理。
✅ 與 TEXTJOIN、LET、BYROW、BYCOL 結合,可實現更靈活的數據處理!