总结
- 聚合函数,尽量不要用在数组公式组中
- 如果需要用,尽量只用在最外层 如 {sum()} 没问题
- 用在里层很可能会出错 ,比如 {sum(and())} 一般都是错的
- 为什么呢,因为 and()这种聚合函数只能返回1个值,破坏了数组公式每步都要按数组计算的原则!和计算过程!
1 普通函数/公式里有一类是聚合函数
上次数组公式里的函数分类里说到了2种 普通函数/公式
(1)部分能处理数组的普通函数,但只会返回数组的第1个数
- 还要注意一些细节
- rows() 返回行数,是一定不能用于数组运算的
- row() 返回行号,可以处理数组,但不能直接返回数组,返回的一定是1个数(不是数组)
- 也就是说,不配合数组函数,或其他可处理数组内部数的函数,这个基本上无用。
- {row()} 返回一组行号,可以 结合数组公式返回 数组,把返回的数组存在一个单元格
(2) 部分函数(聚合函数)可处理数组的整体,可以显示正确结果,但只会显示1个结果
- 比如聚合类的sum等,
- 比如 :sum()
- {sum()} 和sum() 还是有差别,差别在于 中间计算过程是否遵循数组计算
部分聚合函数举例
- and()
- or()
- sum()
- max()
- min()
2 聚合函数的用法要注意,以 and() 为什么不用在数组函数{} 中 为例子
- and() 只能返回1个值,这里不能用and
- 如果是两个条件,可以用
- (F12:F21=D12)*(G12:G21=D13) 来联合判断
- 或(F12:F21=D12)+(G12:G21=D13)=2 来联合判断
- 因为true为1,false为0
- 直接用 bool值的数组运算,而不要用and() or()这种函数
上面的例子看,错误写法1,第3步,计算错误的原因就是and() 只能返回1个值,true/false,而不能返回数组,破坏了数组公式的计算过程