Excel公式 - Sumif OR

时间:2012-02-03 22:43:09

标签: excel formulas

excel用户面临的挑战: 我有一个包含以下列的表:

Year || Week || Output
2011 ||  50  || 1000
2011 ||  51  || 2000
2011 ||  52  || 1500
2012 ||  01  || 1200
2012 ||  02  || 1700
2012 ||  03  || 1900

我想对列输出中给定年/周与另一年/周之间的值求和。例如:

  • 2011/50至2011/52之间。结果= 1000 + 2000 + 1500 = 4500
  • 2011/51至2012/02。结果= 2000 + 1500 + 1200 + 1700 = 6400

提前谢谢大家。

此致 MH

3 个答案:

答案 0 :(得分:2)

我的步骤:

  1. 年= A,周= B,输出= E
  2. 创建一个临时列(C),其中包含:{Year}*100 + {Week}
  3. 为边界创建两个输入集(也包括{Year}*100 + {Week}) - <LOW>&amp; <HIGH>
  4. 使用以下公式创建临时列(D):
  5. =IF(AND(C2>=<LOW>,C2<=<HIGH>),1,0)*E2

    然后求和单元变为:

    =SUM(D:D)

    编辑:找到另一种方式,上面没有D

    N1 = LOW   (year*100 + week)
    O1 = HIGH  (year*100 + week)
    
    N2 => =TEXT(N1)
    O2 => =TEXT(O1)
    
    

    =SUMIFS(E:E,C:C, CONCATENATE(">=", $N$2),C:C, CONCATENATE("<=", $O$2))

答案 1 :(得分:0)

如果您使用的是Excel 2007或更高版本,则可以使用SUMIFS()

实施例

=SUMIFS(C2:C7, A2:A7, "=2011", B2:B7, ">49", B2:B7, "<53")

否则您仍然可以使用Excel宏。

答案 2 :(得分:0)

假设您的数据在A1:C6中,您可以使用数组公式(使用Shift + Ctrl + Enter输入):

=SUM((A1:A6=2011)*(B1:B6>=50)*(B1:B6<=52)*(C1:C6))

或者,使用SumProduct(正常输入):

=SUMPRODUCT((A1:A6=2011)*(B1:B6>=50)*(B1:B6<=52)*(C1:C6))

显然,您需要输入或参考您的标准。此外,如果年份发生变化,那么您将需要另一个学期来检查最长年份。