今天作者特来讲解一个实例中的汇总求和,介绍两个方法,都是excel中比较实用的应用。

原题来源于一位童鞋的提问,它的要求如下:

如下数据表,A列是线材规格,B列是线材长度,C列是线材根数。现在需要对相同的线材规格及线材长度进行总根数的汇总。

excel相同列数据不重复求和(Excel如何提取出两个条件列中的不重复数据列表)(1)

按照常规思路,我们需要提取出A列线材规格的不重复数据列表,然后再提取出该规格下的不同线材长,最后进行总根数的汇总。

这个思路步骤很细,从上图来看,列表也显得比较整洁。

关于如何提取列表中的不重复数据,方法很多,而且不算复杂, 但稍有难度的是如何再提取出它们不同的线材长,如图中E、F两列所示。

由于作者不像多费脑筋,因此直接使用一个公式,将AB两列合并起来,并提取出不重复的合并列表,效果如下图所示:

excel相同列数据不重复求和(Excel如何提取出两个条件列中的不重复数据列表)(2)

这里使用到的引用公式为:

=iferror(INDEX($A$2:$A$51&$B$2:$B$51,MATCH(0,COUNTIF($D$1:D1,$A$2:$A$51&$B$2:$B$51),0)),"")

这个公式嵌套了多个函数,有引用函数index和match,计数函数countif,容错函数iferror,而其中match countif函数的组合表达式,是不常见但非常有意思的一个表达。

关于这个公式的详解,作者以后有机会再介绍,先继续操作。

得到了不重复的数据列表,就可以进行汇总求和。

我们将使用sum函数的条件写法,其公式为:

=SUM(($A$2:$A$23&$B$2:$B$23=D2)*$C$2:$C$23)

excel相同列数据不重复求和(Excel如何提取出两个条件列中的不重复数据列表)(3)

这个公式,是典型的sum函数条件求和写法,通过设置判断条件与求和列相乘,再利用sum函数的汇总规则,是excel表格中最为常用和强大的求和汇总方法之一。

虽然通过公式得到了最后的结果,但从表面上来看,合并规格列的数据明显是"不够规整"的,两列数据汇总到一起没有任何分隔,很容易让人看花眼。因此如果在两个数据之间设置一个分隔符号,也可以使数据看起来更加整洁美观。

但其实我们还有一个方法,并不需要去想方设法用公式提取数据列表,也无需书写求和公式来汇总。

说到这里,应该有童鞋知道下面要讲的方法,就是——数据透视表!

数据透视表是excel最强悍的功能之一,尤其在汇总统计场景中,具有独一无二的高效优势。

那直入主题,首先全选数据源区域,插入一个数据透视表,并在新工作表中显示。

excel相同列数据不重复求和(Excel如何提取出两个条件列中的不重复数据列表)(4)

随后在字段设置框中,将线材规格列拉动到行字段,线材长拉动到列字段,而总根数则作为求和的值字段。

设置完毕,立刻可以看到左侧的透视表结果区域,如红框内箭头所示。

excel相同列数据不重复求和(Excel如何提取出两个条件列中的不重复数据列表)(5)

在透视表的下方和右侧皆包含了总计列,也就是汇总列,这里默认为求和汇总,我们对照一下前面公式求出的结果,是完全一致的。

虽然结果一致,但方法不同,使用公式还是有一定难度,而插入透视表,速度则非常之快。

但有一点,公式填充的单元格,会根据源数据的变化而更新结果,也就是能够即时更新汇总结果。

那在数据透视表中,该如何设置,以使得数据也能进行更新。

其实不复杂, 只要对数据源进行更新即可。

如下面动图所示,点击数据透视表分析--更改数据源,将表区域的最后一个单元格地址进行修改,如这里作者将C23手动修改为C99,那么透视表将直接统计到第99行的数据。

excel相同列数据不重复求和(Excel如何提取出两个条件列中的不重复数据列表)(6)

这时我们在数据表中添加任意数据,比如增加一行数据,之后我们返回透视表界面,右击鼠标,点击刷新,即可见表数据区域发生了变化,新增了刚才录入的数据信息。

但有一点,透视表的数据更新通常需要手动进行刷新!

excel相同列数据不重复求和(Excel如何提取出两个条件列中的不重复数据列表)(7)

综上所述,两个解题方法的结果虽然相同,但过程大相径庭,两者的各自长处和优势,也各有千秋。我们可以根据需求进行选择,如果是公式,也可以进一步处理,将列表数据进行调整显示更为规范,但相应地,也要付出更多时间成本等等。

,