SUMPRODUCT如果两个条件

我需要在Excel中创build一个公式,基于一个大于值的值返回一个范围内两列的乘积之和。 具体而言,如果E列中的任何行是给定的数字,并且列H中的任何行> 0,则将列F和G相乘,然后对这些乘积进行求和。 Excel给了我下面的公式值为0,但我希望它给我225。

=IF(AND(shipping_logs!H2:H999999>0,shipping_logs!E2:E998940="395078"), (SUMPRODUCT(shipping_logs!F2:F999999,shipping_logs!G2:G999999)),0) 

G和H列可以有负值,所以公式也需要最大为0.如果产品的总和是负值,我希望它给我0,但我不知道我在做什么错..

在这里输入图像说明

您只想使用SUMPRODUCT函数尽可能less的行数。 这使公式看起来很复杂,但并不是真的。

select一个重要的专栏,最好用数字。 列F或G都可以。 要查找包含您可以使用的数字的最后一行,

 =MATCH(1e99, F:F) 

即使有最后一个数字以下的东西,这也不重要,因为我们只需要这些数字。

你的SUMPRODUCT公式现在是,

 =SUMPRODUCT((sl!E2:INDEX(sl!E:E, MATCH(1E+99, sl!F:F))=395078)* (sl!G2:INDEX(sl!G:G, MATCH(1E+99, sl!F:F))>0)* (sl!H2:INDEX(sl!H:H, MATCH(1E+99, sl!F:F))>0), sl!F2:INDEX(sl!F:F, MATCH(1E+99, sl!F:F)), sl!G2:INDEX(sl!G:G, MATCH(1E+99, sl!F:F))) 

如果单元格的范围超过2-3万,那么猜测公式会导致明显的计算滞后。

其中一个检查列E中是否有给定数字的公式是错误的。 尝试使用以下任何一个公式代替。

0),((shipping_logs!H2:H999999> 0,(CountIF(shipping_logs!E2:E998940,395078)),(SUMPRODUCT(shipping_logs!F2:F999999,shipping_logs!G2:G999999)

0),(0),(ISNUMBER(MATCH(395078,shipping_logs!E2:E998940)))(SUMPRODUCT(shipping_logs!F2:F999999,shipping_logs!G2:G999999)

这是我正在做的另一种select:

 =SUMPRODUCT(shipping_logs!F2:INDEX(shipping_logs!F:F,COUNTA(shipping_logs!F:F)), shipping_logs!G2:INDEX(shipping_logs!G:G,COUNTA(shipping_logs!G:G)), --(shipping_logs!E2:INDEX(shipping_logs!E:E,COUNTA(shipping_logs!E:E))=395078), --(shipping_logs!H2:INDEX(shipping_logs!H:H,COUNTA(shipping_logs!H:H))>0))