2

我正在尝试生成一个表格,显示在任何给定日期处于任何给定状态的项目数量。我的结果表在 A 列下有一组日期,列标题是各种状态。我的带有标题的数据表示例如下所示:

Product | Notice | Assigned | Complete | In Office | In Accounting 
   1    | 5/5/13 |  5/7/13  | 5/9/13   |  5/10/13  |    5/11/13 
   2    | 5/5/13 |  5/6/13  | 5/8/13   |  5/9/13   |    5/10/13
   3    | 5/6/13 |  5/9/13  | 5/10/13  |  5/10/13  |    5/10/13 
   4    | 5/4/13 |  5/5/13  | 5/7/13   |  5/8/13   |    5/9/13 
   5    | 5/7/13 |  5/8/13  | 5/10/13  |  5/11/13  |    5/11/13

如果我的输出表在第一列中包含一组日期,其中状态为标题,我需要计算有多少行处于给定状态并且尚未转换到下一个状态,以便在通知列中,我会计算通知日期 <= X 并且已分配、完成、在办公室、会计中的行数都大于 X。

我使用了一个Sum(if(frequency(if语句让我非常接近,但我觉得我需要在第二个 IF 中有一个 AND 语句,就像这样=SUM(IF(FREQUENCY(IF(AND

这是我所拥有的不起作用的:

=SUM(IF(FREQUENCY(IF(AND(Table1[Assigned]<=A279,Table1[[Complete]:[In Accounting]]<=A279),ROW(Table1[[Complete]:[In Accounting]])),ROW(Table1[[Complete]:[In Accounting]]))>0,1))

如果我去掉“AND”部分,这很好用,除了我需要它只计算给定状态实际上有日期的行,所以如果“分配”日期为空,我不希望该行被计算在内已分配列。

这是我希望在结果中看到的示例。我在每列中列出了计数,并在括号中列出了相应的产品编号。对应的产品编号仅供参考,实际不会出现在结果表中。

Date | Notice  | Assigned | Complete
 5/6 | 2 (1,3) | 2 (2,4)  |  0
 5/7 | 2 (3,5) | 2 (1,2)  |  1 (4)
 5/8 | 1 (3)   | 2 (1,5)  |  1 (2)
4

2 回答 2

3

好的,假设您在 A1:F6 中有原始数据,然后在 B9:D9 中有第二个表头,在 A10:A12 中有行标签,那么您可以在 B10 中使用这个“数组公式”

=SUM((B$2:B$6<=$A10)*(MMULT((C$2:$F$6>$A10)+(C$2:$F$6=""),TRANSPOSE(COLUMN(C$2:$F$6)^0))=COLUMNS(C$2:$F$6)))

CTRL++确认并向下复制(见下面的截图SHIFTENTER

如您所见,结果符合您的要求。如果您用空白替换日期,它仍然可以工作

MMULT是一种从每一行获取单个值的方法,即使您正在查看多个列。

我使用单元格引用是因为我认为这更容易,尤其是在复制公式并缩小范围时......但是如果你愿意,你可以使用结构化引用

在此处输入图像描述

于 2013-10-07T18:59:11.927 回答
2

您是否尝试过使用 COUNTIFS 根据多个条件进行计数。这里有很好的记录:http ://office.microsoft.com/en-us/excel-help/countifs-function-HA010047494.aspx(仅限2007+)

基本上,你使用它就像

=COUNTIFS(first_range_to_check, value_you_want_in_first_range, ...)

其中 ... 表示您想要的任意多对(最多 127 对),请注意条件是 AND 连接,因此如果您有两对,第一对和第二对必须返回 true 才能使该行计数。

于 2013-10-07T17:15:25.880 回答