offset()函数简介技巧及在函数组合方面的应用
来源:网络收集 点击: 时间:2024-04-10不难看出,完单量是按 0-23 时,分时统计的,要想计算出单日最高完单数,就必须先计算各城市每日完单量之和,再判断最大值。
这个问题需要分步计算,通常要使用辅助列来完成,因为辅助列能更好地匹配正常思维和计算的思路。
这道题惨绝人寰反人类的地方,正在于此,它明确禁止了这种常规完美操作!
于是乎,答题者被逼上梁山,必须想办法在一个公式中完成「计算单日完单量的分组求和」和「判断最大值」两步运算。
这就需要用到函数嵌套和数组公式了。

OFFSET+ROW,分割表格为 24 行一组的单日完单量数据表。
❶ OFFSET(D2:D25,24*(ROW(1:50)-1),)
由于数据表是按 0-23 时分时依次填列,每 24 行代表一整天的完单数。
也就是说,我们需要在公式中,将 D 列每 24 个分时完单数相加,形成一个表示每日完单量的有序数组。
这一步的前提就是将 D 列的每 24 行拆分为一组,以便进一步求和。
公式片段①就是为了实现这一目的。
我们先用 ROW(1:50)-1 返回一组 0-49 的有序数组 A,这里的 50 不是固定数值,它可以是任意、能够完全将有效数据区域拆分的足够大的数。
将 0-49 的有序数组乘以 24,即可得到{0;24;48;......;1176}这样公差为 24 的等差数列 B。

然后我们使用到了OFFSET 函数,它是从初始区域开始,向下偏移指定行数,再向右偏移指定列数。
然后从偏移后的位置开始,返回指定多少行多少列单元格区域的偏移函数。

通过偏移函数OFFSET 函数,以 D2:D25 单元格区域为起点,依次偏移{0;24;48;......;1176}个单元格;
得到 50 个,包含各自 24 个单元格的不同区域:
RFS{D2:D25,D26:D49,D50:D73,,,}
这些区域正好表示每一个城市每一天连续 24 小时的完单量。

MAX+SUMIF,求和单日完单量,并取最大值。
② {=MAX(SUMIF(RFS,0))}
这里,我们使用 SUMIF 函数来进行分组求和。
SUMIF 是一个条件求和函数,它通过条件区域与条件值的比对,将满足条件的求和区域单元格求和。

很显然,区域 RFS 中的每个数据都大于 0,所以 SUMIF 的第二个参数本身是没有意义的,它的作用仅仅在于求和。
但我们不能直接使用 SUM 函数,否则无法形成 50 个单独的求和结果。

于是一个没有意义的求和条件「0」就显得很有必要了,它使得每个区域都进行单独进行这种判断,并计算出各个区域之和。
也就是我们所需要的各城市单日完单量数组 C{478519;458663;……;0;0;0}。
其中 478519 就是福州周一的完单量,以此类推。

最后就是 MAX 函数取最大值了。
这里最外围的大括号表示整个公式是一个数组公式。
我们在输入公式后,需要同时按【Ctrl+Shift+Enter】才能执行数组运算。

简要概括分组求和取最大值公式的运算逻辑:
❶先使用 ROW 函数生成的符合有序数组。❷再通过 OFFSET 函数偏移实现分组。❸ SUMIF 分组求和后再用 MAX 取最大值。
2/2本试题在测评函数嵌套和数组公式使用能力的同时,也考验了求职者 Excel 技能的储备水平。
例如,解题中用到的 ROW 函数和 OFFSET 函数,ROW 在编号和排序中屡试不爽,OFFSET 则在动态图表制作中予取予求。
版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_481388.html