分享

MAP函数:依次对数组中的每个值运算,形成的数组。

 F2967527 2024-04-28 发布于天津
关注我,搞定数据处理。
函数SCAN可依次扫描数组中的每一个值,每次计算过程可结合上一步的结果,最后得到一组数据结果。
函数REDUCE可依次扫描数组中的每一个值,每次计算过程可结合上一步的结果,最后得到一个值。
SCAN和REDUCE都可以利用上一步计算结果。而更多时候我们对数组中的每个元素执行计算时,并不利用上一步的结果。这时可以用MAP函数。
MAP在这里不是地图的意思,而是映射的意思。
映射可以理解为一种对应关系。假设你的电影票位置号是7排12号,在“找座位”这个映射下,你将唯一确定你的座位。
数学中的函数是一种特殊的映射,只是处理数字。FUNCTION的字面意思是功能,例如数学中的二次函数F(x)=X^2,x是自变量,F的功能就是对输入的x进行平方运算,输出x平方。
Excel中的函数也是一样的,每个函数都有特定的功能,它会对输入的参数进行运算,得到结果。
MAP函数可以依次对数组中的每个值运算,运算方式可通过LAMBDA指定,从而将每个值映射到新值,形成的数组。
语法
MAP (array1, lambda)
array1 要映射的数组,可以输入多个数组。
lambda LAMBDA定义运算方式。
例1
A1:B4区域中,将大于4的值平方,在D1输入公式
=MAP(A1:B4,LAMBDA(x,IF(x>4,x*x,x)))
图片
当然,只在一个单元格输入IF公式并填充,也是这个效果。用MAP则一步生成所有结果,不必填充公式。
例2 多个数组的情况
MAP中可以输入多个数组,数组尺寸要相等,这样元素能够对应上,分别作为LAMBDA的每个参数。
在一行中查找两列均为 TRUE 的值
如图,AB两列有TRUE和FAlSE,要找到AB两列同时为TRUE的C列的值。这是一个多条件查找问题。用FILTER来查找,其中的筛选条件,这次我们用MAP函数来写。在E1输入公式
=FILTER(C1:C12,MAP(A1:A12,B1:B12,LAMBDA(x,y,AND(x,y))))
图片
MAP内有两个数组,第一次运算时,A1和B1作为LAMBDA的x,y,得出第一个结果,第二运算A2和B2作为LAMBDA的x,y,得出第二个结果……
在讲EXPAND函数扩展数组时,我们使用了EXPAND(y,OFFSET(y,0,1,1,1),1,y),
Y代表扫描区域中一个单元格,作为了OFFSET的第一参数,说明y仍保留了单元格引用的属性,而不是变成了一个纯粹的值。
本例中,MAP内的x,y也一样,其单元格引用的属性仍然可以用。
例如,本例可以改为
=FILTER(C1:C12,MAP(A1:A12,LAMBDA(x,AND(x,OFFSET(x,0,1,1,1)))))
图片
将第二条件用第一数组的偏移表示,所得结果一样。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多