491·函数条件参数的相对位置

标签:
sumiffilter条件 |
分类: 公式技巧 |
这个题目措辞了很久,恐怕还是不足以表达本文要探讨的问题。
实际我要表达的是SUMIF、FILTER等函数,它们有一个条件参数,这个条件参数对应的求和或筛选位置,是一个相对位置。
问题的起源来自于一个提问。
如图,需要提取左侧区域,每一个“金额”单元格下面的数据。
老函数,这种依据一个条件,返回结果的主要是XXIF类函数。
SUMIF就很典型。
同样的区域,如果换个问法,对区域中所有“金额”单元格下面的数据进行求和,SUMIF就是最合适不过的。
SUMIF的工作原理是在区域里先判断符合条件的位置,
然后用这个位置去“套”求和区域,相对应的位置进行求和。
而要“套”的这个求和区域,如果允许你去选择的话,那就不一定选择原区域。比如,我们根据“金额”单元格与它下面单元格的相对位置,把求和区域向下移动一个单元格。
=SUMIF(A2:F9,"金额",A3:F11)这个公式,就是把求和区域在原区域的基础上,向下移动了一位。
当然,我们知道SUMIF还有个特点,就是求和区域不一定非要一个区域,给它一个区域的起点就可以。
所以公式还可以简化为=SUMIF(A2:F9,"金额",A3)
可是,SUMIF是个聚合函数,无法把符合条件的求和区域原样返回。
新的筛选函数FILTER与SUMIF的工作原理相同。
如果筛选区域与条件区域起点相同,筛选的结果就是符合条件的区域对应的数据。
如果筛选区域相对于条件区域向下移动一个单元格,那么筛选结果也会向下移动一个单元格。
可惜的是,FILTER函数条件区域仅支持一维数组。
所以对于此案例,我们可以先将二维数据区域,转为一维区域。
再嵌套FILTER函数向下移位,筛选出结果。
以同样的思路,可以一并筛选出业务标签。