sumproduct函数
说明
在给定的几组数组中,将数组间对应的元素相乘,并返回乘积之和。
语法
sumproduct(array1, [array2], [array3], ...)
SUMPRODUCT 函数语法具有下列参数 (参数:为操作、事件、方法、属性、函数或过程提供信息的值。):
- Array1 必需。 其相应元素需要进行相乘并求和的第一个数组参数。
- Array2, array3,... 可选。 2 到 255 个数组参数,其相应元素需要进行相乘并求和。
说明
- 数组参数必须具有相同的维数。 否则,函数 SUMPRODUCT 将返回 #VALUE! 错误值 #REF!。
- 函数 SUMPRODUCT 将非数值型的数组元素作为 0 处理。
实际应用:求月度销售总额。
以前的方法是单个相乘,然后SUM函数一拉得到结果。
现在我们用SUMPRODUCT函数来计算的话,只需要分别选中单价列数值以及数量列数值两个序列即可。
=SUMPRODUCT(D3:D11,E3:E11) -- 注意序列与序列之间用逗号分隔,序列的维数必须相同。
其实SUMPRODUCT函数最大的用处并非在于此,下面我们用一个更为实用的例子来说明。
比如有一批数据,我们要找出其中的重复项目,直白理解就是根据多个条件列找到相同的记录。
这个时候用别的函数的话稍微有点绕,但是用SUMPRODUCT函数一个就可搞定。
班级列:选中A2:A12序列,按下F4区域锁定,然后让其等于A2;
姓名列:选中B2:B12序列,按下F4区域锁定,然后让其等于B2;
学号列:选中C2:C12序列,按下F4区域锁定,然后让其等于C2;
然后我们用乘号连接,可以得到如下结果:
我们可以发现重复的记录显示2,不重复的均显示1,可以用IF函数改造一下进行显示。
那么问题来了,这个2和1是怎么算出来的呢?
我们不妨选中公式第一个括号的内容,键盘按下F9,如下图所示:
以此类推:它是以True和False的方式来显示的。
以第一行为例:
班级:{TRUE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE}
姓名:{TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}
学号:{TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}
其中TRUE = 1,FALSE = 0,TRUE*TRUE*TRUE = 1,TRUE*FALSE*FALSE= 0.
然后第一行的最后结果是1+0+0+0+0+0+0+0+0+0+0 = 1。
再看第二行:
班级:{TRUE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE}
姓名:{FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE}
学号:{FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE}
第二行的结果为:0+1+0+0+0+1+0+0+0+0+0 = 2。
明白之后就请记住这个可怜的函数吧!
相关阅读
一、unix_timestamp函数用法 1、unix_timestamp() 得到当前时间戳 2、如果参数date满足yyyy-MM-dd HH:mm:ss形式,则可以直接unix
CEILING(X) 或 CEIL(X) 该函数返回的最小整数值,但不能小于X。 SELECT CEILING(3.46);#4 SELECT CEIL(-6.43);#-6
js 四舍五入函数 toFixed(),里面的参数 就是保留小数的位数。 <script language="javascript"> document.write("<h1>
strtok()函数详解!1.定义分解字符串为一组字符串。s为要分解的字符,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为
VC声明DWORD WaitForSingleObject(HANDLE hHandle,DWORD dwMilliseconds);参数hHandle是一个事件的句柄,第二个参数dwMilliseconds