记得有位大神说过,表格的混乱程度越高,对函数水平要求越高。不论多高的高手,最终只需要一个结果而已,为什么不从根本点去处理问题呢?让表格简单化!

图中的表是二维表,不易维护、不易查询、不易计算。列方向的月完全可以用一列月份来表达,如果将标题行改为地区、月份、数量,一个简单的sumifs就可以达到高高高高手的水平。

当然,为了让表格简单化,excel的开发人员也是熬费苦心,专门开发了逆透视的功能


SUM数组公式就可以。。。

=SUM(TRANSPOSE(B3:B8=B11)*TRANSPOSE(C3:J11))

完事了Ctrl+Shift+Enter。。。

( ??? ? ??? )不行的话说一声,没电脑手机打的


事实证明不需要转置, 是我多此一举啦~

原理是数组公式

兔子不怕鱼:Excel逻辑运算和数组公式?

zhuanlan.zhihu.com图标

首先赞同@兔子不怕鱼的答案,其次说一下自己的观点能写出这三个公式的人,尤其是最后一个的水平肯定不低,但是这几种写法纯粹是为了秀技术,菜鸟的写法没问题,很多初学者可能都会这样写,但是如果水平可以写出第三个公式,我相信他日常写公式肯定不会这样写,公式难理解不说,写起来也不短啊。

sum(),sum(if()),sumproduct(),都可以得到正确的结果,所以那几种基本上刻意为之。


如不明白公式含义,可以用f1键打开帮助文件,了解函数的基本功能,使用方法,再结合 公式求值功能(见下图),查看公式每步的计算结果,多看几遍,想一想基本就能明白这个公式的含义和设计思路了。

结合高高高手的公式:

sumprouct(mmult(c3:j8,row(1:8)^0)*(b3:b8=b11))

这个公式有三个函数,sumporuct,mmult,row

sumproduct 返回数组对应元素的乘积之和

mmult。返回两个矩阵的乘积

row函数(它最简单) 返回引用区域的行号。

现在大概有了个印像,要再深入了解各个函数怎么用的,需要仔细琢磨一下帮助文件,动手把帮助里的例子复制到工作表内,结合公式求值,查看每步的计算步骤,基本就能拿下这个函数了。

现在进行第二步,公式求值

把高高高手的公式输入到c11单元格。回车,再选择c11单元格;选择 公式菜单,点击公式求值按钮,此时显示以下界面

点击求值按钮,查看每步的计算内容,与上一步进行比对,查看有什么变化,多看两遍就懂了

另外公式可以按一楼的思路进行简化为;

=SUMPRODUCT((C2:I7)*(B2:B7=B11))

公式求值界面里有三个常识需要了解下:

1: 数组元素里的逗号(,) ,表示符号前后的两个元素属于同一行,但不是同一列; 与工作表单元格的对应关系

上图可表示为 1,2

2:数组元素中的分号(;) 表示符号前后的两个元素不属于同一行,

上图可表示为 1,2;3,4

3: True,False是布尔类型,在本例中,可简单的将其等值为 1,0 (true=1,false=0)


根据自己的需要来,那么复杂的公式,用简单的合成就好,说实在的,一般情况没有必要


推荐阅读:
相关文章