我正在尝试生成一个表格,显示在任何给定日期任何给定状态中有多少项目的计数。我的结果表有一组Dates向下列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 AND,其中Assigned,Complete,In Office,In Accounting都大于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)
答案 0 :(得分:3)
好的,假设您在A1:F6中有原始数据,然后在B9中使用第二个表头:在A10:A12中使用D9和行标签,那么您可以在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 + SHIFT + ENTER 确认并向下复制(见下面的截图)
正如您所见,结果符合您的要求。如果用空格替换日期,它仍然可以使用
MMULT
是一种从每行获取单个值的方法,即使您在查看多个列时也是如此。
我使用了单元格引用,因为我认为这更容易,特别是在复制公式并具有缩小范围时.......但是如果需要,可以使用结构化引用
答案 1 :(得分: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计数。