二维码 购物车
部落窝在线教育欢迎您!

MAP函数如何使用?有何意义?

 

作者:小窝来源:部落窝教育发布时间:2024-03-27 14:20:50点击:244

分享到:
0
收藏    收藏人气:0人
版权说明: 原创作品,禁止转载。
编按:

如何使用MAP函数?MAP函数有何实际意义?本篇教程为大家解惑。

 

今天小窝向大家分享MAP函数的用法。MAP函数同样需要嵌套LAMBDA函数使用。

1.作用与语法

MAP函数依次将数组的每个值代入LAMBDA函数中进行运算并以数组的形式输出各自的结果。MAP在此处不是地图,而是映射:将数组各值运算后的结果按其原来位置关系映射成新数组。

=MAP(数组,LAMBDA运算式)

数组,要参与运算的数组,可以有多个数组。

LAMBDA运算式,是最后一个参数,其变量的多少取决于数组的多少。譬如一个数组,则LAMBDA只有一个变量;两个数组,LAMBDA就有两个变量。

 

表格
描述已自动生成

 

2.基本用法

1)单个数组运算

譬如求每个数据的平方,公式=MAP(B13:B18,LAMBDA(x,x^2))

 

表格
中度可信度描述已自动生成

 

再譬如求数据的累加和,公式=MAP(B23:B28,LAMBDA(x,SUM(B23:x)))

 

表格
低可信度描述已自动生成

 

说明:

数组中各数据参与运算包含两种:既可以是数组中的各值参与运算,也可以是数组中各单元格参与运算。当前的累加和,X代表的就是单元格引用而非具体的值。

 

2)多个数组运算

譬如求两列数的和,公式=MAP(A33:A38,B33:B38,LAMBDA(x,y,x+y))

 

表格
描述已自动生成

 

说明:

多个数组运算,各数组的大小须一致,譬如当前A33:A38B33:B38都是61列的数组。

如果运算的数组大小不一致,缺少项将出现#N/A错误,譬如=MAP(A33:A38,B33:B37,LAMBDA(x,y,x+y))

 

图形用户界面, 文本, 应用程序
描述已自动生成

 

3LAMBDA运算的每次结果须是单个值而不是数组

譬如求下列数据分别加105的和,公式=MAP(B43:B48,LAMBDA(x,x+{10,5}))得不到正确结果:

 

图形用户界面, 表格
描述已自动生成

 

说明:

MAP会输出由每个X的结果组成的数组,而当前每个X的结果都是一个数组(X+{10,5}会得到一个数组而不是一个数),这就成了嵌套数组。因为Excel函数不支持嵌套数组,所以结果是#CALC!错误。

 

3.MAP有何意义?

到这里,想必大家对MAP的用法有了清楚的认识,同时会浮现一个疑惑:MAP有用吗?

每个数据加10,直接数组运算更简便:

 

表格
描述已自动生成

 

每个数据的平方,同样数组运算很简便:

 

表格
描述已自动生成

 

求累计和,也有简短公式=SUM($B$23:B23)

 

表格
描述已自动生成

 

甚至MAP函数不支持的嵌套数组,也可以直接运算,=B43:B48+{10,5}

 

表格
描述已自动生成

 

诸如以上,用MAP函数,不但公式长,还有限制条件,为何还需要MAP函数呢?

1)有很多函数是聚合类的,只输出单个值而无法得到数组,如SUM、MAX、COUNT、AND等;对这类函数,如果要输出数组,就需要MAP

2MAP函数可以只写一个公式就完成整列数据处理,而不再需要公式的下拉填充;

3)当需要原数组各自用同一算式计算后再分别代入另一个算式中计算时,用MAP就不用建立辅助列。

 

譬如,求下方各行数据的最大值。使用MAX函数公式得到B53:C53的最大值,然后向下填充得到其他行的最大值。

 

表格
描述已自动生成

 

由于MAX是聚合类函数,只输出一个最大值,所以我们不可能通过在MAX参数中添加数组来得到各行的最大值,如下方两个公式都不行:

=MAX(B53:C53,B54:C54,B55:C55,B56:C56,B57:C57)

=MAX(B53:B57,C53:C57)

 

要想一个公式就得到所有行的最大值,只能用MAP函数,=MAP(B53:B57,C53:C57,LAMBDA(X,Y,MAX(X,Y)))

 

表格
描述已自动生成

 

4.应用例举

1)替换字符

小窝曾分享下拉填充REDUCE函数公式进行多字符替换。现在与MAP配合,可以一个公式完成所有替换:

=MAP(B89:B93,LAMBDA(a,REDUCE(a,F89:F93,LAMBDA(x,y,SUBSTITUTE(x,y,OFFSET(y,0,1))))))

 

表格
描述已自动生成

 

2)汇总名单

如下,按班级汇总名单。

 

表格
描述已自动生成

 

现在汇总表标题和班级都有了。用传统公式的话,可以=TEXTJOIN("",1,FILTER($C$98:$C$105,$B$98:$B$105=F98))并向下填充:

 

表格
描述已自动生成

 

不填充,一个公式=MAP(F98:F99,LAMBDA(x,TEXTJOIN("",1,FILTER(C98:C105,B98:B105=x))))

 

表格
描述已自动生成

 

 

本文配套的练习课件请添加客服微信buluowojiaoyu索取。

Excel高手,快速提升工作效率,部落窝教育Excel精品好课任你选择

扫下方二维码关注公众号,可随时随地学习Excel

IMG_256

相关推荐:

LAMBDA递归运算

坐字法查找合并单元格

REDUCE函数用法

连续数统计就用FREQUENCY

版权申明:

本文作者小窝;部落窝教育享有稿件专有使用权。若需转载请联系部落窝教育。