什么是 MAP?
MAP 是 Microsoft 365/Excel 2021 引入的全新动态数组成员函数,它可以在一个公式里对多个数组的对应元素同时进行自定义计算,并返回与原数组维度相同的动态数组。在过去,这类逐行计算往往需要拖拽公式或使用辅助列,而 MAP + LAMBDA 的组合让我们仅用一行公式就能完成,极大提升工作效率。
语法结构
=MAP(array1, [array2,…], LAMBDA(参数1, 参数2,…, 表达式))
• array1, array2,…:必须是可以展开的数组或区域,长度必须相同。 • LAMBDA:用于定义对每个元素的运算规则。参数个数必须与前面的数组个数一致。 • 返回值:与输入数组同形的动态数组。
小技巧:LAMBDA 中的参数名可以自定义,例如
LAMBDA(x, y, x*y),阅读时更具业务语义。
示例一:快速计算每行利润
在示例数据中,已知销售额(列 E)和利润率(列 G),直接相乘即可得到利润。使用 MAP 只需一行公式:
=MAP(E2:E21, G2:G21, LAMBDA(sales, rate, sales*rate))
公式说明
• E2:E21为销售额数组。• G2:G21为利润率数组。• LAMBDA(sales, rate, sales*rate)把每行的销售额与对应利润率相乘。
结果示例(前 5 行)
完整返回的数组即为 20 行利润值,可直接放入其他函数(如 SUM、AVERAGE)进行汇总。
示例二:根据销售额划分“高低”等级
想把每行的销售规模标记为 高(>40000)或 低(≤40000),同样可以用 MAP 完成:
=MAP(E2:E21, LAMBDA(sales, IF(sales>40000,"高","低")))
公式说明
• 只传入销售额数组。 • IF(sales>40000,"高","低")判断后返回文字标签。
结果示例(前 6 行)
小提示:若要同时显示“高/中/低”三档,只需在
IF中再嵌套一层IF或使用IFS。
示例三:拼接区域‑产品类别标签
在分析时经常需要生成 “区域‑类别” 的组合标签,MAP 让这一步变得极其简洁:
=MAP(A2:A21, B2:B21, LAMBDA(region, category, region&"-"&category))
公式说明
• A2:A21为销售区域。• B2:B21为产品类别。• region&"-"&category将两段文字用短横线连接。
结果示例(前 5 行)
生成的标签可直接用于透视表切片或 VLOOKUP 辅助列。
常见错误与排查
#CALC! | E2:E21 与 G2:G20) | |
#VALUE! | LAMBDA(参数1, 参数2, …) 与 MAP(数组1, 数组2, …) 的对应关系 | |
#NAME? | LAMBDA 关键字或拼写错误 | LAMBDA(...),不要遗漏括号 |
#SPILL! |
调试技巧:在公式栏中选中
LAMBDA部分后按 F9,可以直接预览该段表达式的计算结果,帮助快速定位错误。
小结
• MAP让我们把 循环思维 变成 数组公式,只需一行代码即可批量处理每个元素。• 结合 LAMBDA,可以实现任意自定义逻辑(算术、文本、条件判断等),无需辅助列。• 记得保证所有输入数组的 维度一致,否则会触发错误。 • MAP的返回值是 动态数组,在 Excel 365/2021 中会自动溢出并兼容FILTER、SORT等函数。
掌握以上三个实战案例后,你已经能熟练使用 MAP 处理日常数据清洗、分类标签生成、批量计算等需求。赶紧打开 Excel,复制示例数据,亲自试试吧!
📚 配套学习资料免费领评论回复:MAP点击公众号菜单「函数教程」,获取教程。
夜雨聆风