excel中的强大映射工具! map函数excel正确使用方法
MAP函数是LAMBDA的辅助函数。在Excel中,MAP函数主要用于对数组中的每个值进行特定的运算,并将结果映射到一个新的值。这个函数的核心在于“映射”,即通过一个函数(通常是一个Lambda函数)将一个数组中的每个元素按照特定的规则转换成另一个数组。
函数语法:
=MAP(数组1,[数组2, ...],LAMBDA(x, y, ..., x与y的表达式))
- 数组1(必需):第一个输入数组,可以是单列、多列或单元格范围(如A2:A10)。
- 数组2(可选):最多254个额外数组,须与数组1的行数和列数一致(如B2:B10、C2:C10)
LAMBDA表达式(必需):最后一个参数,用于定义每个元素的操作逻辑。其参数个数需与输入数组的数量严格匹配。
1个数组参数 →LAMBDA(x, 表达式)
x代表数组1中的每个元素,表达式代表对x的运算规则。
2个数组参数 →LAMBDA(x, y, 表达式)
x代表数组1中的每个元素,y代表数组2中的每个元素,表达式代表对x与y的运算规则。
LAMBDA函数最简单的原理:
- LAMBDA(x, y, x+y),假设我们对两个参数进行赋值:x=1,y=3,这里的(1,3)依次传递给x和y,然后用它们执行计算1+3,返回结果4。
比如我们想要将A2:B5区域的内的负数批量在另一区域转换为正数。
可以这样输入公式:
=MAP(A2:B5,LAMBDA(X,X*-1))
定义A2:B5数组区域内每个单元格内容为变量X,用LAMBDA赋予变量X的运算规则为X*-1,即A2:B5数组区域内的每个变量X循环遍历依次乘以-1,然后得到一个映射 出来的新的数组区域D2:E5。

单数组条件简单映射:
比如我们想要将A1:B4区域内学生姓名对应的成绩,大于60分的显示出来,小于等于60分的显示空值。
我们可以这样输入公式:
=MAP(A1:B4,LAMBDA(X,IF(X>60,X,"")))
定义A1:B4数组区域内每个单元格内容为变量X,用LAMBDA赋予变量X的运算规则,运算规则用到了IF函数条件判断:如果X>60分,显示原分数X,否则显示空值即可。即A1:B4数组区域内的每个变量X循环遍历依次按照IF函数进行条件判断,然后将遍历后的判断结果映射出新的数组区域D1:E4。

双数组简单映射:
比如我们要将每个同学的语文成绩和数学成绩加权后,得到总成绩。加权规则:语文成绩加权*0.9、数学成绩加权*0.8后相加。
我们这样输入公式:
=MAP(B2:B4,C2:C4,LAMBDA(X,Y,X*0.9+Y*0.8))
定义B2:B4数组区域内每个单元格内容为变量X,再定义C2:C4数组区域内每个单元格内容为变量Y。用LAMBDA赋予变量X与变量Y之间的运算规则:X*0.9+Y*0.8。即B2:B4与C2:C4数组区域内的每个变量X与Y循环遍历这个计算规则,最终映射出新的数组区域E2:E4。

经典累计求和案例:
B列是日销量数据,我们想要对其累计求和。
我们可以这样输入公式:
=MAP(B2:B7,LAMBDA(X,SUM(B2:X)))
定义B2:B7区域内每个单元格内容为变量X,再用LAMBDA函数对变量X进行运算规则定义:SUM(C2:X),则变量X会循环遍历B2:B7区域内每个单元格,依次为:
- SUM(B2:B2)=100
- SUM(B2:B3)=100+300=400
- SUM(B2:B4)=100+300+500=900
- SUM(B2:B5)=100+300+500+400=1300
- SUM(B2:B6)=100+300+500+400+350=1650
- SUM(B2:B7)=100+300+500+400+350+100=1750

推荐阅读:Excel进入函数式编程: MAP函数使用详解及相关案例