- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
sumproduct函数竟然不支持通配符
前言SUMPRODUCT函数全部隐藏
ZECEXCEXCELEXCEL 帮助中是这么解释的:说明在给定
的几组数组中,将数组间对应的元素相乘, 并返回乘积之和。 语法 SUMPRODUCT(array1, [array2],
[array3],...)SUMPRODUCT 函数语法具有下列参数 (参数: 为操作、事件、方法、属性、函数或过程提供信息的值。 ):
Array 1 必需。其相应元素需要进行相乘并求和的第一个数
组参数。 Array2, array3,... 可选。2至(J 255个数组参数,
其相应元素需要进行相乘并求和。说明 数组参数必须具有
相同的维数,否则,函数 SUMPRODUCT 将返回错误值
#VALUE! o 函数SUMPRODUCT将非数值型的数组元素 作为0处理。1 SUMPRODUCT 运行机理
大家是否看懂了呢,特别是说明中的两条:第一:所有数组 参数的维数必须相同,即所有参数的行和列必须具有相同的 个数第二:所有数组中非数值型元素作为 0处理,包括逻辑
值TRUE和FALSE,全部认为是0.下面看一下例子
如果我们用SUMPRODUCT来计算字段什字段2的值,再
相加起来结果如下:二 SUMPRODUCT(B20:B24,C20:C24)的
结果为78,就是把TRUE和FALSE两个逻辑值统统看成 0 的结果。如果我们不用 SUMPRODUCT ,借助辅助列,来计算是多少呢?答案是 82,两个结果迥然不同, 原因是直接相 乘是,TRUE会被强制转换成1, FALSE会被强制转化成0。
那么,如何让 SUMPRODUCT得出正确的值呢:这个需要
转换一下:让 TRUE和FALSE转换成1或0可以这样写: =SUMPRODUCT(-B20:B24,-C20:C24)通过负负得正将
TRUE和FALSE 转换成1,0 也可以这样写:
=SUMPRODUCT(B20:B24*C20:C24) 通过数组相乘将 TRUE
和FALSE转换成1,0 也可以这样:
=SUMPRODUCT(B20:B24*1 ,C20:C24*1)通过分别 *1 ,将
TRUE和FALSE强制转换成1和0
通过上面的论证我们知道,在多条件统计时,将涉及到逻
辑值的问题,不能直接将参数用“
辑值的问题,不能直接将参数用“
,”隔开,需要将逻辑值提
前转换成1和0,才能得出正确的结果,否则结果会为 0,
转换的方式如上面三种方式。
2示例
如:计算2017年开工的计划节点数量,公式为
=SUMPRODUCT(-($B$2:$B$7=$B10),--(YEAR(C$2:C$7)=$
A10))或
=SUMPRODUCT(($B$2:$B$7=$B10)*(YEAR(C$2:C$7)=$A1
0))或
=SUMPRODUCT(($B$2:$B$7=$B10)*1 ,(Y EAR(C$2:C$7)=$
A10)*1)但是直接用
=SUMPRODUCT($B$2:$B$7=$B10,YEAR(C$2:C$7)=$A10)
结果将是0值。
3通配符问题 增加一下难度:把第一个“开工”增加“(仪
式)”,那么如何统计所有含有“开工”的 2017年的计划节 点呢?我试着使用通配符的写法
=SUMPRODUCT(($B$2:$B$7=,*,amp;$B10amp;5YEA
R(C$2:C$7)=$A10))把原来的$B$2:$B$7=$B10变成$B$2:$B$7=*amp;$B1
R(C$2:C$7)=$A10))
把原来的$B$2:$B$7=$B10变成
$B$2:$B$7=*amp;$B10amp;*
相当于把原来的
“开工”
变为吩开工1 但结果为0,显然不对,说明SUMPRODUCT 并不支持通配符, 但COUNTIF和sumif都是支持通配符的,
这点显然不给力,微软的工程师是不是要改善一下用户体验 呢?
如果不支持通配符,还有一种方法就是用查找的方式在 B
列区域中查找包含“开工”的值,如果返回数字,说明包含
“开工”,否则返回错误值,可以用 ISNUMBER来判断是否
是数字。正确结果如下:
=SUMPRODUCT(ISNUMBER(FIND($B10,$B$2:$B$7))*( YE AR(C$2:C$7)=$A10))
总结
SUMPRODUCT函数可以统计多条件计数和求和多条件统
计时,需要将逻辑值转数值用 ISNUMBER(FIND())组合函数
可以代替通配符解决包含问题
END
文档评论(0)