跳转至

MAP 函数

函数概述

MAP 是 Excel 动态数组函数之一,用来对一个或多个数组逐元素执行同一个计算,并把每次计算的结果按原数组形状“映射”输出为一个新数组。

你可以把它理解成:

  • 给定 1~N 个数组
  • 按相同位置取出元素
  • 交给 LAMBDA 做处理
  • 把每个位置的结果拼回成数组

常见用途包括:逐行/逐列清洗、逐元素换算、批量生成标签、并行对齐多个字段做计算等。

基础语法

MAP(array1, [array2], …, lambda)

MAP 的最后一个参数必须是 LAMBDA;前面可以传 1 个或多个数组。

参数说明

参数 必填 说明
array1 第一个参与映射的数组/区域
array2… 额外数组,可传多个;用于与 array1 按位置配对处理
lambda LAMBDA 函数,参数个数应与传入数组个数一致

补充规则(写公式时很实用):

  • 传入多个数组时,MAP 会按位置“并行”取值:第1个数组的第i个元素 + 第2个数组的第i个元素…一起交给 LAMBDA。
  • 输出是动态数组,会自动溢出到相邻单元格区域。

基础用法示范

下面示例默认数据在工作表中已经存在,你可以直接套用公式。

示例1:单数组逐元素处理

需求:把一列数值都乘以 1.06(比如含税价/涨幅)。

=MAP(A2:A11, LAMBDA(x, x*1.06))

解释:MAP 逐个取出 A2:A11 的元素作为 x,计算 x*1.06,返回同等长度的新数组。


示例2:双数组并行计算

需求:单价 × 数量,计算每行金额。

=MAP(B2:B11, C2:C11, LAMBDA(price, qty, price*qty))

解释:同一行位置的 price 与 qty 被一起送入 LAMBDA,输出每行金额。


示例3:生成条件标签

需求:成绩 ≥ 60 标记“及格”,否则“不及格”。

=MAP(D2:D11, LAMBDA(s, IF(s>=60, "及格", "不及格")))

解释:MAP 很适合把“同一规则”批量套用到整列。


示例4:对文本逐元素清洗

需求:把姓名去掉首尾空格,并统一为大写(英文场景)。

=MAP(E2:E11, LAMBDA(t, UPPER(TRIM(t))))

解释:TRIM 清理空格,UPPER 统一大写,MAP 负责批量映射。


示例5:多数组合成描述文本

需求:把“部门-姓名”拼成标签,如“销售-张三”。

=MAP(F2:F11, G2:G11, LAMBDA(dept, name, dept&"-"&name))

解释:多个数组并行取值,特别适合做拼接、口径统一的字段生成。

总结

  • MAP 的核心价值是:把 LAMBDA 的单次计算,稳定地批量应用到数组的每个元素上
  • 适用场景:逐元素换算、清洗、打标签、拼接字段、多列并行计算。
  • 写 MAP 时抓住两点就够用:

    1. 你传了几个数组,就在 LAMBDA 里写几个参数
    2. LAMBDA 返回什么,MAP 就把它按位置汇总成动态数组输出