分享

Excel中的“映射”函数:MAP函数

 ExcelEasy 2022-01-18

在LAMBDA函数之后,Excel又推出了一系列新函数,这些函数是伴随着LAMBDA函数的(关于LAMBDA函数的使用,请阅读这个新函数,让Excel进入了一个新的境界)。这一系列函数有一个共同的特点,就是将LAMBDA函数作为自己的一个参数。

今天我们就介绍其中的MAP函数。

从函数的实际作用来看,MAP的意思应该是“映射”,它将一个给定的数组(或者区域)中的每个值,“映射”成LAMBDA函数的对应结果。

举一个例子,

在这里,MAP函数有两个参数,第一个参数是

A2:A4

这是一个区域,

第二个参数是LAMBDA函数:

LAMBDA(x,x+1)

我们先看结果:

结果就是得到了一个自动填充的数组区域,将A2:A4中的每一个值对应的加1。

简单说明一下

首先大家要注意到,这里的

LAMBDA(x,x+1)

只是一个公式的定义,并没有输入参数的地方。而我们上次介绍LAMBDA函数时说过,LAMBDA函数在Excel中的单元格直接输入时,必须后面跟着参数。只有在名称中定义时才可以不带参数。

这是这一系列函数的一个共同特点,在MAP中使用LAMBDA公式,就像是在LAMBDA中定义公式是一样的。

实际上,

如果我们用名称定义了一个自定义函数:

AddOne

这个MAP公式就可以写成下面的样子:

结果是一样的。

这么使用的时候,Excel自动将前面区域(或者数组)中的每个值作为参数,计算后面的LAMBDA的结果。

这就是“映射”的意思。

当然,第一个参数还可以用数组,比如:

= MAP({1,2,3},LAMBDA(x,x+1))

结果如下:

这里的数组或区域还可以是多个,比如下面的公式:

=MAP(B2:B5,C2:C5,LAMBDA(x,y,x+y))

结果如下:

因为有两个区域,后面的LAMBDA函数有两个参数,x和y,对应关系如下:

x ===> B2:B5

y ===> C2:C5

分别计算出来对应的结果。

注:这里的B2:B5,C2:C5并不能写成B2:C5。

以上就是MAP函数的工作方式和原理,只要你理解了LAMBDA函数,那么MAP函数还是挺简单的。

但是,这个公式的意义何在?

我完全可以定义一个LAMBDA公式,比如,

ADD = LAMBDA(x,y,x+y)

然后选中一个空白单元格,输入公式:

回车后,得到结果:

因为动态数组的特点,自动得到了和上面MAP公式相同的结果。

???

意义何在?

原来,在Excel中,有一些函数是不接收数组参数的。对于这些函数来说,即使你强行用数组或者区域作为它的参数,结果也不会如你所愿,比如AND,OR等函数。

在下面的例子中,即使我们使用的数组作为参数:

这个AND也只不过返回一个结果而已,并没有生成数组:

即使你写成LAMBDA函数,也无济于事:

而这时,使用下面的MAP公式就可以得到想要的结果了:

=MAP(B3:B8,C3:C8,LAMBDA(x,y,AND(x,y)))

说明一下

当然,如果只想得到上图中F列的结果,直接写AND公式拖拽即可。但是一则MAP函数生成的动态数组用起来非常方便,省得公式拖拽填充。二则,Excel提供的很多数组函数,例如Filter,Sort等非常强大,这样就要求我们生成数组作为这些函数的参数,所以,这个MAP函数还是很有用的。

最后

MAP函数可以有很多个参数,但是最后一个参数一定是LAMBDA,前面可以有很多个数组或者单元格区域,但是需要注意:

如果有多个数组或区域,这些数组或区域不要求有相同的行或者列,但是,如果它们的列或行数不同,结果可能不能尽如你所愿。所以,还是要保证它们的行数和列数一致。

·end·

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多