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

2024-11-15 22:59:43
推荐回答(5个)
回答(1):

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

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

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

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

回答(2):

你在编辑栏拖黑你公式中的 ($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))}

二楼正解,三楼错误

回答(3):

我的办法是:
一。插入一列辅助项假设为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))

注:在很多数据情况下,没找到合适公式时,可以暂时用辅助的方法。辅助数据可以隐藏,美观影响应该不大。

回答(4):

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))
就行了

回答(5):

将公式改为
=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中也可用.