492·遍历单元格引用

标签:
map遍历单元格 |
分类: 公式技巧 |
EXCEL和WPS 表格都新增了一组遍历数组的自定义函数,如BYCOL、BYROW、MAP、REDUCE、SCAN等。
这些函数使得我们可以对数组内部,进行判断或计算。
我们需要在左侧区域逐一判断是否是“金额”。
返回的结果仍是原始区域大小,不需要聚合。
以上遍历数组函数,只有MAP不带聚合。
所以,我们可以使用MAP遍历A1:F9数据区域。
=MAP(A1:F9,
MAP要与LAMBDA配合使用。
LAMBDA函数的参数,就代表了A1:F9区域的每一个单元格。
=MAP(A1:F9,LAMBDA(X,
我们可以对这个参数进行判断,如果它等于“金额”,则做什么……
=MAP(A2:F9,LAMBDA(X,IF(X="金额",
关键是MAP向LAMBDA传递的每一个X值,是【引用】,还是一个具体的【值】?
公式中OFFSET(X,1,0)部分是指,由“金额”单元格,向下移动一位。
OFFSET的第一个参数必须是引用,这与COUNTIF,SUMIF的第一个参数必须是引用一样。
说明,MAP向LAMBDA传递的是单元格引用。
公式的作用,相当于直接用IF判断数组。
最终需要TOCOL转成一列的话,需要在IF判断为“假”时,给它赋一个错误值NA()。
因为TOCOL函数可以忽略空单元格,忽略错误值,却不能忽略0值。
而MAP、IF最后的结果都不是单元格引用,而是空单元格的值“0”。
如本例,需要多一个判断.
那么无论使用IF数组判断,还是MAP遍历两个数据区域判断,都要注意两个区域之间的相对关系。
如此公式中MAP第二个参数,必须根据第一个参数A2:F9的位置,确定向上移动一位的区域,即A1:F7或F8或F9。