EXCEL中如果一列包含某个字母,相对应的一列求和

我做了一个表,要求多条件求和,其中一个公式是=SUMPRODUCT(($A$3:$A$60000=D$53)*($B$3:$B$60000=$B54)*($C$3:$C$60000="*L*")*($D$3:$D$60000)),就是在C列里,包含L的字母(L可能在中间,也可能结尾,不一定的)的相对应的D列求和,现在结果出不来,我把包含L的公式换成"*"&"L"&"*"也出不来,把符号=换成>=结果倒是能出来,可是不准确,到底是什么原因呢?求高手帮帮我吧。
请不要给我说用筛选--自动筛选--自定义来查找,我会呢,因为要的结果太多了,我实在扛不住啊。
因为是多条件筛选求和,所以不适用SUMIF函数,真的很让人郁闷啊!

SUMPRODUCT函数中间数据应该用逗号分割,而不是*号呀! 

把你的图表发到网上,或者弄个图片上来吧! 

不太懂你的意思,尤其是$B$3:$B$60000=$B54这个, 

条件求和应该用sumif函数,看下边的图片!

温馨提示:内容为网友见解,仅供参考
第1个回答  2009-02-28
你在编辑栏拖黑你公式中的 ($C$3:$C$60000="*L*") 然后按F9键看看生成了什么:是不是生成的内存数组中全是FALSE

同样的方式分别验证一下二、三楼公式
ISNUMBER(find("L",$C$3:$C$60000)) 生成了一个正确的数组
countif($C$3:$C$60000,"*L*")>0 仅仅生存了一个逻辑值TRUE

也就是说思三楼的公式中 countif($C$3:$C$60000,"*L*")>0 这一段,根本未起任何作用,整个公式能生成结果,但是结果是错误的。

SUMPRODUCT()支持数组间运算,你可以将二楼公式中如 $A$3:$A$60000=D$53;$B$3:$B$60000=$B54;$D$3:$D$60000 分别用上述方法试一试,看看是不是均生成的数组。
当然二楼的公式还可以等效于下面的数组公式
={SUM(($A$3:$A$60000=D$53)*($B$3:$B$60000=$B54)*(ISNUMBER(find("L",$C$3:$C$60000)))*($D$3:$D$60000))}

二楼正解,三楼错误
第2个回答  2013-02-22
我的办法是:
一。插入一列辅助项假设为F列,F3公式为=IF(FIND("L",C33),1,0)然后复制F3到F3:F60000。此时IF只有两个结果1或#VALUE。0是不会显示的,FIND检测不到就显示#VALUE

二。您的($C$3:$C$60000="*L*")改成(SUMIFS($C$3:$C$60000,$F$3:$F$60000,1))

注:在很多数据情况下,没找到合适公式时,可以暂时用辅助的方法。辅助数据可以隐藏,美观影响应该不大。
第3个回答  推荐于2016-10-13
sumproduct不支持通配符*L*查找,公式改为
=SUMPRODUCT(($A$3:$A$60000=D$53)*($B$3:$B$60000=$B54)*(ISNUMBER(find("L",$C$3:$C$60000)))*($D$3:$D$60000))
就行了本回答被提问者采纳
第4个回答  2009-02-28
将公式改为
=SUMPRODUCT(($A$3:$A$60000=D$53)*($B$3:$B$60000=$B54)*(countif($C$3:$C$60000,"*L*")>0)*($D$3:$D$60000))
就ok,一定正确,此公式在2003中也可用.
相似回答