函数SCAN可依次扫描数组中的每一个值,每次计算过程可结合上一步的结果,最后得到一组数据结果。函数REDUCE可依次扫描数组中的每一个值,每次计算过程可结合上一步的结果,最后得到一个值。SCAN和REDUCE都可以利用上一步计算结果。而更多时候我们对数组中的每个元素执行计算时,并不利用上一步的结果。这时可以用MAP函数。映射可以理解为一种对应关系。假设你的电影票位置号是7排12号,在“找座位”这个映射下,你将唯一确定你的座位。数学中的函数是一种特殊的映射,只是处理数字。FUNCTION的字面意思是功能,例如数学中的二次函数F(x)=X^2,x是自变量,F的功能就是对输入的x进行平方运算,输出x平方。Excel中的函数也是一样的,每个函数都有特定的功能,它会对输入的参数进行运算,得到结果。MAP函数可以依次对数组中的每个值运算,运算方式可通过LAMBDA指定,从而将每个值映射到新值,形成的数组。A1:B4区域中,将大于4的值平方,在D1输入公式=MAP(A1:B4,LAMBDA(x,IF(x>4,x*x,x)))当然,只在一个单元格输入IF公式并填充,也是这个效果。用MAP则一步生成所有结果,不必填充公式。MAP中可以输入多个数组,数组尺寸要相等,这样元素能够对应上,分别作为LAMBDA的每个参数。如图,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)))))
|