MAP 函數

MAPMicrosoft 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 結合,可實現更靈活的數據處理

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *