【问题标题】:Sum minimum of corresponding column values - limited to date range对应列值的最小值总和 - 限于日期范围
【发布时间】:2015-06-19 20:06:46
【问题描述】:

我有一个包含四列的数据集:Start DateEnd DateScheduled QtyActual Quantity

Start Date    End Date    Scheduled Qty    Actual Qty
04/13/15      04/17/15    35               19
04/20/15      04/24/15    35               42
04/27/15      05/01/15    35               41
05/04/15      05/08/15    35               41

我想找到总实际,除非实际超过预定我要使用预定的数量。

在一个已经回答的问题(Sum minimum of corresponding column values) 中,我找到了一个数组公式,可以计算Qty 列的每一行的较小值(用于显示小于符号的引号):

=SUM(IF(C1:C4"<"D1:D4, C1:C4, D1:D4))

这为我提供了整个范围的总数,但现在我想将其限制在一个日期范围内,例如给定月份内的结束日期。我在其他情况下使用SUMIFS 来查看我的结束日期,并且只对给定月份内的数据求和,但我不知道如何将该想法与数组公式中的想法结合起来。

任何想法如何做到这一点?我正在使用 Excel 2013。

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    以下是对 Chanea 方法的扩展: Excel 的 SUM 函数(以及 AVERAGE、STDEV 等)具有“跳过”文本值的有用行为。例如 AVERAGE(3, 4, "dog", 5) 返回 4。您可以利用此行为将 IF 嵌套在 sum 中。例如,

    =SUM(IF(MONTH(B1:B4)=4,IF(C1:C4<D1:D4,C1:C4,D1:D4),"NO"))
    

    将求和 (a) 预定和实际中的较小者 (b) 当月份为 4 时

    这是通过嵌套的 IF 实现的。外部 IF 是 IF(MONTH(B1:B4)=4,...,"NO") [如果月份 4,IF 返回 text ("NO"),SUM 跳过]

    内部 IF 与 Chanca 显示的相同。 您可以根据需要为数据嵌套尽可能多的测试/过滤器

    【讨论】:

      【解决方案2】:

      要将条件添加到数组函数大部分时间,您只需将额外条件乘以您已有的任何条件集。

      之所以可行,仅仅是因为我们从想要求和的数字列表开始:

      IF(C1:C4<D1:D4, C1:C4, D1:D4) => { 19, 35, 35, 35 }
      

      然后我们将每个满足额外条件的值乘以 1 或 0。

      例如,假设我们只想检查结束日期4 月份的值的数量。我们可以这样做:

      MONTH(B1:B4)=4
      

      只需在 SUM 函数中乘以该条件,即可为该条件创建一个布尔 and 条件:

      =SUM(IF(C1:C4<D1:D4, C1:C4, D1:D4)*(MONTH(B1:B4)=4))
      = SUM({ 19, 35, 35, 35 } * { 1, 1, 0, 0}) => SUM( {19, 35, 0, 0} ) = 54
      

      如果我们要添加n个条件也是一样的:

      =SUM(IF(C1:C4<D1:D4, C1:C4, D1:D4)*(MONTH(B1:B4)=4)*(`Condition2`)*(`Condition3`)...)
      

      您可以使用在您的条件内返回真/假值的任何公式或运算符。
      如:=&gt;&lt;&gt;=&lt;=&lt;&gt;IF(...,TRUE)

      要将OR 逻辑添加为条件,您需要使用加法而不是乘法,然后将它们分组到(..)&gt;0 中,如下所示:

      (((Or_Condition1)+(Or_condition2)+...+(Or_conditionN))>0)
      

      因此,如果我们想将 4 或 5 个月相加,我们可以这样写:

      =SUM(IF(C1:C4<D1:D4, C1:C4, D1:D4)*(((MONTH(B1:B4)=4)+(MONTH(B1:B4)=5))>0))
      

      【讨论】:

      • 所以如果我想总结多个月,我可以简单地添加相同条件的进一步迭代和随后的月份数? ...*(MONTH(B:B)=5)*(MONTH(B:B)=6)...)
      • @triebark Ah 使用OR 逻辑稍微复杂一些,但我可以解释一下
      • @triebark 我将其添加到我的答案中
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-13
      • 1970-01-01
      • 2023-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多