sumproduct函数?

今天我们来解决一个困扰很多Excel新手的问题,它就双向求和,所谓的双向,就是两个方向,如下图所示,我们想要根据【项目】与【费用类别】来实现动态求和效果。

【项目】与【费用类别】在数据源中,一个是纵横的,一个是横向的,对于这样存在2个方向的判断条件,我们常用的sumifs函数,就无法解决了,因为sumifs函数它仅仅只能对一个方向的数据进行多条件求和。那么这种情况应该如何解决呢?今天我们就来详细的讲解下

在Excel中解决这样的问题,最简函数,先跟大家分享下计算的方法,之后跟大家介绍下计算的原理。

这个公式是本质上就是SUMPRODUCT函数的多条件求和,简单列举下每个式子的作用

A6:A17=A2,【项目类别】等于需要统计的项目B6:F17,需要统计的费用区域B5:F5=B2,【费用类别】等于需要统计的费用最后将这三个式子相乘,就会得到需要的结果,效果如下动图所示

这个式子它的本质就是数组的计算,理解起来可能还是比较复杂的,我们先来看一下前两个式子的结果

A6:A17=A2,这个式子是对项目进行判断,结果是一列逻辑值只有true与false,我们可以将true看作是1,false看做是0,他的本质其实就是1维的列数组

B6:F17,它其实就是需要统计的金额区域,在这里是是有多行多列的,所以是一个二维数组

当1维列数组与2维数组相乘的时候,是1维列数组与2维数组中的所有列相乘,然后得到一个对应的2维数组,计算过程如下图所示,结果就是最右侧的数据,之后得到的结果会继续与B7:F7=B4相乘

B7:F7=B4,它是对【费用类别】进行判断,结果是一行逻辑值,本质就是1维的行数组,之后这个1维的行数组会继续与上一步得到的结果相乘

1维的行数组与2维数组相乘,就是1维行数组与2维数组的所有行相乘,然后得到一个新的二维数组,计算过程如下图,仅剩【251】与【163】2个值,最后sumproduct会对结果进行求和,这个就是【项目D,人工费】的总计

以上就是函数的运算过程,是一个数组的计算,理解起来可能还是比较难的,如果你实在理解不了,只需要记得这个格式,直接套用即可。

我是Excel从零到一,关注我,持续分享更多Excel技巧

如果你想要从零学习Excel,这里↓↓↓

}

在之前的文章《》中,我们了解了一种强大的统计函数。而今天我们来聊聊SUMPRODUCT函数,sumproduct函数可以得到两列数据的乘积之和,但是在运用函数的过程中有非常多需要注意的地方,特别是运用上逻辑值和数组之后,下面我们一起来看看讲解!

要说SUMPRODUCT函数的话,真的非常简单,就是得到两列数据的乘积之和,我们用一个简单的例子来说明函数的基本功能:

上图是一个非常简单的表格,要算出总价一般都是将单价*数量算出来再求和,结果如D8所示。如果使用了SUMPRODUCT函数的话,就可以直接利用单价和数量计算出总价,公式1为:=SUMPRODUCT(B2:B7,C2:C7),结果如D9所示。

在这个公式里,使用了两个参数,分别是单价区域(B2:B7)和数量区域(C2:C7),函数的作用就是将第一参数(单价)与第二参数(数量)中的数据对应相乘后再求和。

很多朋友在使用这个函数的时候,经常会得到错误值,大多数是因为区域大小选择不一致,例如下面这种情况,第一个参数有7个单元格而第二个参数只有6个单元格:

使用SUMPRODUCT函数必须要确保每个参数的区域大小相同,但很多朋友没有注意到这一点。

3、另一种常见写法,逗号变乘号(*)

就这个例子来说,还有一种写法更为常见,公式是这样的:=SUMPRODUCT(B2:B7*C2:C7)

一致的结果导致了很多朋友都百思不得其解的一个问题:二者有何差别?

4、逗号和乘号(*)的差别

虽然只是将第一个公式里的逗号变成了乘号(*),但是公式的意义发生了变化。第一个公式(SUMPRODUCT(B2:B7,C2:C7))有两个参数,而第二个公式(B2:B7*C2:C7)是一个参数。(判断有几个参数要看是不是有逗号去分隔开。)第一个公式中,两个区域相乘这一步是由函数来完成的,函数做了两件事,先让两个区域的数据对应相乘,再把乘积相加。在第二个公式中,两个区域相乘是由数组计算来完成的,函数只做了一件事,就是把乘积值相加。

意义的变化有何影响呢?

我们还是通过例子来看:

在上图这个公式中用的是逗号(,),有两个独立的参数。SUMPRODUCT函数首先让两组数据对应相乘,相乘的时候会检查数据并把非数值型数据作为0处理,然后在把乘积相加。因此,B1“单价”和C1“数量”会当成0来处理,公式可以得到正确结果。

当我们把逗号换成*号后,公式结果错误。为什么呢?SUMPRODUCT函数这时只负责把乘积相加。参数B2:B7*C2:C7是数组乘法运算,因为计算的区域中包含了文字(文字是不能进行乘法运算的),所以在这个数组的计算结果里就有错误值了。选中公式中的“B2:B7*C2:C7”按F9可以查看B2:B7*C2:C7的运算结果:

可以看到第一个(单价*数量)运算结果就是错误值。接下来SUMPRODUCT对包含了错误值的数据进行求和,结果肯定就是错误了。

以上内容所要表达的意思有两点:

第一,使用逗号和使用*号有时候结果相同,但是意义完全不一样,希望大家可以理解。

第二,SUMPRODUCT函数使用乘号(*)必须要注意两点:第一,不能存在无法计算的内容,如文字;第二,如果是两组或多组数组相乘的话,数据区域大小一致。用逗号则只需要保证数据区域大小一致即可。

6、其实乘号还带来了更大优势

我们把SUMPRODUCT函数逗号、乘号前后的数据用A、B来代替,表达为SUMPRODUCT(A,B)和SUMPRODUCT(A*B)。当为逗号时,A、B必须同时都是数值或者数组,不能一个是数值,一个是数组;当为乘号时,A、B可以同时都是数值或者数组,也可以一个是数值一个是数组。

因此,用乘号扩大了SUMPRODUCT函数的应用。你即将在下面看到的都是SUMPRODUCT函数用乘号的应用。

如果明白了上面的内容,说明对于这个函数的基本用法是没问题了。可是很可能很多SUMPRODUCT公式你还是看不懂,比如这种:

这实际上是一个条件计数的问题,再看这个:

这是一个多条件求和的问题,还有这个:

在这个表里,几乎各种统计问题都可以用SUMPRODUCT函数去解决,不再一一举例。仅仅是上面列出的三个公式,都能看明白的朋友可能就不多了。

为什么已经理解了SUMPRODUCT函数的用法,却还看不懂这些公式呢,更别说自己去用公式来解决问题了。原因就是你还不了解这两个知识点:逻辑值和数组。

8、了解一点逻辑值和数组

先来说说逻辑值,逻辑值只有两个,就是TRUE和FALSE。当我们在公式里进行某种比较或者判断的时候,就会产生逻辑值,以SUMPRODUCT((I2:I22="张三")*1) 为例,其中的(I2:I22="张三")就是一个判断。通常情况下,我们是以单元格去做判断,I2 ="张三"的意思就是判断I2单元格内容是否为"张三",如果是则得到TRUE,反之得到FALSE。当我们使用了一个区域去判断的时候,就会得到一组数据,这其实就是一个数组了。例如I2:I22="张三"就会得到一组逻辑值,可以用F9来看看计算结果:

如果有兴趣的话可以逐一对比销售员和结果值,会发现张三对应的都是TRUE。

因为逻辑值无法直接进行求和,必须转换为数字才行,转换的方法就是对逻辑值进行加减乘除之一的任何运算即可。在这个公式中,*1就是这个作用,可以看看效果:

通过*1运算之后,TRUE都变成了1,而FALSE都变成了0。不要问我为什么,Excel就是这么规定的,逻辑值与数字的对应关系就是这个。

好了,我们首先得到一组逻辑值,然后通过*1变成一组数字,再进行求和,就达到了按条件计数的目的。你现在是否已经理解了=SUMPRODUCT((I2:I22="张三")*1)这个公式呢?

现在我们了解到逻辑值,也明白了数组运算的第一个原则:当一组数与一个数进行计算时,是这组数中的每个数据分别与这一个数进行计算。刚才的公式中就是这样计算的。

9、不论SUMPRODUCT公式多复杂,全看懂!

不要看这个公式长,利用我们刚才学到的知识来破解它的话其实很简单。公式还是只有一个参数,只不过这个参数是由四个数组构成的,其中的三组都是逻辑值,分别是(MONTH(F2:F22)=3)、(H2:H22="二分店")和(G2:G22="衬衫")。这三组逻辑值完成三个判断,分别对应了三个条件:月份=3、店面=二分店和名称=衬衫。具体内容如图所示:

看起来密密麻麻的,但是经过了乘法运算以后,就变成了一堆1和0,结果是这样的:

乘积结果只有两个1,其实就对应了三月份二分店衬衫这两条数据。此时的公式变成了一组逻辑值(已经是0和1了)与一组数据(数量)相乘,再由函数完成求和。

在这个例子中,需要注意数组计算的第二个原则:当多个(含两个)数组计算时(本例是四个数组),数组中对应位置的数据进行计算,要求数组中包含的数据个数相同。

到现在我们已经了解到数组计算的两个原则,现举个简单的例子来说明:

一个数组(A1:A9)与一个数据(B1)相乘时,是这组数分别与这个数据相乘;

两个数组(A1:A9和B1:B9)相乘时,是第一组数与第二组数对应位置的数据相乘。

这个公式用到了两个SUMPRODUCT函数,第一个是计算总店毛衣的销售额,第二个是计算总店衬衫的销售额,分别看应该每个都能理解。两个SUMPRODUCT函数除了"毛衣"和"衬衫"这里不同,其他的完全一样,遇到这种情况,就可以用常量数组把两个内容放到一起,使公式变得简洁。

通过今天的讲解,我们读懂了常见的SUMPRODUCT公式,解决了SUMPRODUCT函数运用乘号的困惑,掌握了SUMPRODUCT函数更多的应用。同时,我们也了解到逻辑值和数组的一些基础知识——这对我们理解其他的复杂公式有帮助。

以上就是Excel函数学习之无所不能的SUMPRODUCT!的详细内容,更多请关注php中文网其它相关文章!

声明:本文转载于:部落窝教育,如有侵犯,请联系删除

程序员必备接口测试调试工具:

}

sumproduct:乘积之和,在给定的几组数组中,将数组间对应的元素相乘,并返回乘积之和。

说明:·数组参数必须具有相同的维数,否则,函数 SUMPRODUCT 将返回错误值 #VALUE!。函数 SUMPRODUCT 将非数值型的数组元素作为 0 处理。

1.函数SUMPRODUCT的功能返回相应的区域或数组乘积的和。

2.基本格式SUMPRODUCT(数据1,数据2,……,数据30)

  SUMPRODUCT函数功能:计算工作表内多列中对应值相乘之后的和,即乘积之和。

  其中,Array1, array2, array3, … 为 2 到 30 个数组,其相应元素需要进行相乘并求和。数组参数必须具有相同的维数,否则,函数 SUMPRODUCT 将返回错误值 #VALUE!。 该函数将非数值型的数组元素作为 0 处理。

  二、SUMPRODUCT函数乘积之和举例

  二、多条件求和+求个数

  A、使用SUMPRODUCT进行多条件计数 ,计数就是统计满足条件的个数。

  作用:统计同时满足条件1、条件2到条件n的记录的个数。

  公式解释:统计性别为男性且职称为中级职称的职工的工资总和(假设C列为工资)

  SUMPRODUCT(条件1*条件2*条件3...条件N)利用此函数进行多条件计数时,* :满足所有条件;

  这个公式的意思就是要这样来统计,G1:G3满足条件是男的,同时E1:E3的数值小于等于60,满足这两个条件的总人数。 首先这是一个数组公式,要按Ctrl+Shift+Enter结束。

  例子二:多条件求和

  例子三:多条件求和

Sumproduct函数可以实现求和、计数、排名,这样多功能的函数不多,下面通过应用例子解读该函数的使用技巧。1、基本使用方法函数名词解释:返回相应的数组或区域乘积的和。函数使用格式:SUMPRODUCT(数据1,数据2,……,数据30)比如:=SUMPRODUCT(C2:C8,D2:D8)表示C2*D2+C3*D3+…+C8*D8例子:计算所有销售员的销售额。
Sumproduct函数可以实现求和、计数、排名,这样多功能的函数不多,下面通过应用例子解读该函数的使用技巧。1、基本使用方法函数名词解释:返回相应的数组或区域乘积的和。函数使用格式:SUMPRODUCT(数据1,数据2,……,数据30)比如:=SUMPRODUCT(C2:C8,D2:D8)表示C2*D2+C3*D3+…+C8*D8例子:计算所有销售员的销售额。

方法有多种,第一类:使用基本功能来实现。主要有:筛选、分类汇总、数据透视表、多条件求和向导;第二类:使用公式来实现方法。主要有:使用SUM函数编写的数组公式、联用SUMIF和辅助列(将多条件变为单条件)、使用SUMPRODUCT函数、使用SUMIFS函数(限于Excel2007及以上的版本),方法千差万别、效果各有千秋。本人更喜欢用SUMPRODUCT函数。由于Excel帮助对SUMPRODUCT函数的解释太简短了,与SUMPRODUCT函数的作用相比实在不匹配,为了更好地掌握该函数,特将其整理如下。

龙逸凡注:欢迎转贴,但请注明作者及出处。

在给定的几组数组中,将数组间对应的元素相乘,并返回乘积之和。

统计同时满足条件1、条件2到条件n的记录的个数。

统计性别为男性且职称为中级职称的职工的人数

汇总同时满足条件1、条件2到条件n的记录指定区域的汇总金额。

统计性别为男性且职称为中级职称的职工的工资总和(假设C列为工资)

1、数组参数必须具有相同的维数,否则,函数 SUMPRODUCT 将返回错误值 #VALUE!。

2、SUMPRODUCT函数将非数值型的数组元素作为 0 处理。

3、在SUMPRODUCT中,2003及以下版本不支持整列(行)引用,必须指明范围,不可在SUMPRODUCT函数使用A:A、B:B,Excel2007及以上版本可以整列(列)引用,但并不建议如此使用,公式计算速度慢。

4、SUMPRODUCT函数不支持“*”和“?”通配符

注:以上公式假设D列为职工姓名。ISNUMBER(FIND())、ISNUMBER(SEARCH())作用是实现“*”的通配功能,只是前者区分大小写,后者不区分大小写。

5、SUMPRODUCT函数多条件求和时使用“,”和“*”的区别:当拟求和的区域中无文本时两者无区别,当有文本时,使用“*”时会出错,返回错误值 #VALUE!,而使用“,”时SUMPRODUCT函数会将非数值型的数组元素作为 0 处理,故不会报错。 也就是说:

当C2:C10中全为数值时,两者计算结果一样,当C2:C10中有文本时公式1会返回错误值 #VALUE!,而公式2会返回忽略文本以后的结果。

四、 网友们的精彩实例

1、求指定区域的奇数列的数值之和

2、求指定区域的偶数行的数值之和

3、求指定行中列号能被4整除的列的数值之和

4、.求某数值列前三名分数之和

5、统计指定区域不重复记录的个数


· TA获得超过6.5万个赞

首先 SUMPRODUCT是一个求乘积的函数,就比如我们需要计算 1,2,3 的乘积是多少,首先输入等于 SUMPRODUCT函数,在选中相乘的区域,按回车确定,在向下填充就能批量计算。

下载百度知道APP,抢鲜体验

使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。

}

我要回帖

更多关于 subtotal函数中的9 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信