offset降维打击:对所有列最后一个数字求和

你好,我是刘卓。欢迎来到我的公号,excel函数解析。今天来分享一个多维引用的案例,多维引用的好处就是可以“降维打击”,用高维对低维,就好比游戏中的黄金对白银。

不过你也不用觉得多维引用多么神秘,无非就是增加了容器。比如,平时引用一个区域,相当于把这个区域的数据存放在一个“抽屉”中。

而多维引用,相当于把这些数据分别存放在多个“抽屉”中,多个“抽屉”又存放在一个“柜子”中。简单来说就是容器套容器。当然,这只是我个人的理解,每个人的理解方式不同。


对所有饮料最后一次的采购数量求和

下表展示的是各饮料的进货记录。求所有饮料最后一次进货数量的总和,也就是对B,C,D,E各列的最后一个数字求总和,已经用颜色标记出,最后的结果为276。

如果让你做,你会怎么做?先自己想一想。有些小伙伴可能会想到用lookup来做。求最后一个数字嘛,这是lookup的强项。公式如下:

=LOOKUP(9^9,B3:B10)+LOOKUP(9^9,C3:C10)+LOOKUP(9^9,D3:D10)+LOOKUP(9^9,E3:E10)

如果是完成工作,这样也可以,甚至加个辅助列更好,而且效率更高。但是如果是为了深入地学习函数,最好要想想其他方法了。
可以利用多维引用来完成,在G2单元格输入下面的公式:

=SUM(N(OFFSET(A2,SUBTOTAL(2,OFFSET(A3:A10,,{1,2,3,4})),{1,2,3,4})))

OFFSET(A3:A10,,{1,2,3,4})这部分用offset把A3:A10分别偏移1,2,3,4列,得到了由B3:B10、C3:C10、D3:D10、E3:E10形成的多维引用,就相当于把这4个区域分别放入4个“抽屉”中,它们相对独立。

SUBTOTAL(2,OFFSET(A3:A10,,{1,2,3,4}))这部分用subtotal分别对多维引用的各个区域计数,也就是对4个“抽屉”存放的数据分别计数,得到的结果为{5,3,6,5}。也就是分别统计B3:B10、C3:C10、D3:D10、E3:E10这4个区域中数字的个数。

subtotal第1参数的2,相当于count,对于这个,相信各位小伙伴都清楚。

OFFSET(A2,SUBTOTAL(2,OFFSET(A3:A10,,{1,2,3,4})),{1,2,3,4})这部分就是OFFSET(A2,{5,3,6,5},{1,2,3,4}),还是用offset偏移,以A2单元格为基点,分别偏移5行1列、3行2列、6行3列、5行4列,得到了由B7、C5、D8、E7这4个单元格形成的多维引用。这4个单元格分别存放在4个“抽屉”中。
接下来通过n函数降维,得到了{92,76,90,18}。最后用sum求和。
还可以用下面的公式来完成,用mmult统计出各列的数字个数,余下的部分和上面的方法是一样的。

=SUM(N(OFFSET(A2,MMULT(COLUMN(A:H)^0,N(B3:E10>0)),{1,2,3,4})))

除了offset可以形成多维引用,indirect也可以形成多维引用。你也可以试着用indirect来完成一下。
最后留个思考题,对下面各列的最后一个数字求和,还是标颜色的单元格。注意各列可能不是连续的区域,会有空白单元格。
链接:

https://pan.baidu.com/s/1RPdzwbhirzhvebe1nfpVaQ

提取码:u8iu
(0)

相关推荐