专业编程基础技术教程

网站首页 > 基础教程 正文

map函数是一个超级映射器,遍历数据就用它

ccvgpt 2025-06-08 19:32:31 基础教程 1 ℃

MAP函数是LAMBDA的辅助函数。在Excel中,MAP函数主要用于对数组中的每个值进行特定的运算,并将结果映射到一个新的值。这个函数的核心在于“映射”,即通过一个函数(通常是一个Lambda函数)将一个数组中的每个元素按照特定的规则转换成另一个数组。


map函数是一个超级映射器,遍历数据就用它


函数语法:

=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


Tags:

最近发表
标签列表