当前位置: 欣欣网 > 办公

Excel新函数MAP,如何使用?有何意义?

2024-04-17办公

文 前 推 荐


LAMBDA递归运算

坐字法查找合并单元格

REDUCE函数用法

连续数统计就用FREQUENCY

编按:

如何使用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:A38和B33:B38都是6行1列的数组。

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

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

譬如求下列数据分别加10和5的和,公式=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;

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

(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)))):

课件下载方式


扫码入群,下载视频配套的Excel课件练习。

最后,欢迎加入Excel函数训练营,学习51个函数、练习课件、辅导答疑。