Excel函数之MAP

本文介绍了Excel中的MAP函数,包括其语法、作用和案例。MAP函数用于对数组中的值进行映射处理,通过lambda表达式执行计算,返回与原数组形状相同的计算结果数组。示例包括基于成绩的合格判断、随机数生成和移动平均计算等应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MAP

语法

MAP(array, [arrar2], ……, lambda(value,[value2], ……, calculation))

  • array:需要进行映射的数组,可以有多个

    注:多个数组的形状大小尽可能保持一致,否则将出现错误值

  • value:数组中的每个值,每次取一个值,每个 array 按顺序对应一个 value

  • calculation:设定的计算处理逻辑

作用

  • 依次将数组中的每个值放入lambda中进行函数运算,最终形成一个和原数组形状大小一样的新的数组

图示

在这里插入图片描述

案例

  1. 计算成绩是否合格

    • 根据成绩列的平均分判断是否合格
    =MAP(C24:C33,LAMBDA(x,IF(AVERAGE(--TEXTSPLIT(x,","))>=60,"合格","不合格")))
    
    // 公式详解
    =MAP(
    	C24:C33,         //需要进行映射的数组
    	LAMBDA(
    		x,             //数组中的每个值
    		// 1.用TEXTSPLIT函数对成绩单元格中的内容进行拆分
    		// 2.用"--"将拆分后的数据转化为数值
    		// 3.计算拆分后数组的平均值
    		// 4.根据平均值结果是否">=60"判断合格于否
    		IF(AVERAGE(--TEXTSPLIT(x,","))>=60,"合格","不合格")
    	)
    )
    

    在这里插入图片描述

  2. 列出合格人员的姓名

    • 根据是否合格筛选出对应人员姓名
    =MAP(B24:B33,D24#,LAMBDA(x,y,IF(y="合格",x,"")))
    
    // 公式详解
    =MAP(
    	B24:B33,       // 数组1,姓名
    	D24#,          // 数组2,是否合格
    	LAMBDA(
    		x,           // 姓名中的每个值
    		y,           // 是否合格中的每个值
    		IF(y="合格",x,"")   // 判断是否合格,是则取出对应的姓名,否则置空
    	)
    )
    

    在这里插入图片描述

  3. 生成指定大小的随机计算题

    • array指定数组大小,但不直接参与运算
    =MAP(SEQUENCE(10,4),LAMBDA(x,CONCAT(RANDBETWEEN(10,50),"+",RANDBETWEEN(10,50),"=")))
    
    // 公式详解
    =MAP(
    	SEQUENCE(10,4),      // 利用SEQUENCE函数指定最终输出数组的大小为10行4列
    	LAMBDA(
    		x,                 // 数组中的每个值,不参与下方逻辑处理
    		// 1.用RANDBETWEEN函数生成2个10到50间的随机数
    		// 2.用CONCAT函数进行数据拼接,形成计算题
    		CONCAT(RANDBETWEEN(10,50),"+",RANDBETWEEN(10,50),"=")
    	)
    )
    

    在这里插入图片描述

  4. 模糊筛选(双层MAP嵌套)

    • 根据指定英文名进行模糊筛选
    =MAP(B4:B9,LAMBDA(z,TEXTJOIN(,TRUE,MAP($M$4:$M$5,LAMBDA(y,IF(ISNUMBER(SEARCH(y,z)),z,""))))))
    
    // 公式详解
    =MAP(
    	B4:B9,          // 外层循环数组Data
    	LAMBDA(
    		z,            // Data中的每个值
    		// 由于每个Data被内层find_text匹配了2遍,故用TEXTJOIN进行合并,否则公式报错
    		TEXTJOIN(     
    			,
    			TRUE,       // 字符串合并忽略空值
    			MAP(
    				M4:M5,    // 内层循环数组find_text
    				LAMBDA(
    					y,      // find_text中的每个值
    					// 1.查找Data值是否包含find_text中的值
    					// 2.如包含则返回位置的数值,此时用ISNUMBER判断返回值是否为数值
    					// 3.如为真,则返回Data值,否则返回空
    					IF(ISNUMBER(SEARCH(y,z)),z,"")
    				)
    			)
    		)
    	)
    )
    

    在这里插入图片描述
    5. 计算移动平均

    • 利用映射单元格的属性,计算近3天移动平均
    =MAP(C56:C68,LAMBDA(x,AVERAGE(OFFSET(x,-2,,3))))
    
    =MAP(
    	C56:C68,       // 需要进行映射的数组
    	LAMBDA(
    		x,           // 数组中的每个值
    		// 1.用OFFSET将当前映射单元格向上偏移2行并获取3行的区域
    		// 2.计算移动平均值
    		AVERAGE(OFFSET(x,-2,,3))
    	)
    )
    

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值