2013-10-07 137 views
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)) 

如果我走“和”部分了,这工作得很好,除了我需要它只能算中给定的状态实际上有一个日期行所以如果“分配”日期为空,我不希望将该行计入“分配”列。

下面是我期望在结果中看到的一个例子。我列出了每列中的计数以及括号中的相应产品编号。相应的产品编号仅供参考,实际上不在结果表中。

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) 
+1

'我的成绩表中有一组日期落笔列A和列标题的各种statuses.'我可以看到日期,除了列A几乎无处不在,我看到产品在Col A.或者我错过了什么? –

+0

以上表格不是结果表格的例子。这是源数据表。我将编辑以显示结果表的示例 –

+1

为什么'1'代表'5/6'和'(2,4)'? – pnuts

回答

3

行,假设你有A1中的原始数据:在A10 D9和行标签:F6然后在B9第二表头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 + SHIFT + ENTER 证实并复制下来,整个(参见下图)

正如你所看到的结果是按照您的requireme NT。如果用空白替换日期,它仍然可以工作

MMULT是一种即使在查看多列时也可以从每行获取单个值的方法。

我使用了单元格引用,因为我认为这很容易,尤其是在复制公式并减少范围时......但你可以使用结构化引用,如果你想

enter image description here

+0

哇。非常可观的解决方很棒!谢谢@ barry-houdini –

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来计算该行。

+0

当我尝试此操作时,它不起作用,因为countifs像一个巨大的“And”语句一样工作,但我所需要的是“OR”语句,只要第二部分是如果相应的状态是正确的日期,那么它只计算一行,而如果任何后面的状态出现在同一日期或之前,则不是。 –

+0

这仍然是“和”。 Col1 <=日期和Col2>日期和Col3>日期和Col4>日期。各种状态是否按顺序发生?如果是这样的话,仅仅检查下一个状态是否就足够了>日期 –

+0

它们应该,但是偶尔它们是空白的,因此每一列(状态)需要为空白或高于该列当前日期通过。因此,如果通知是5/9并且分配为空白并且完成是5/12 ...则给定的产品将不会在5/12被计为“通知”,而是会在5/11被计为“通知”。 –