【问题标题】:Count number of rows where multiple criteria are met计算满足多个条件的行数
【发布时间】:2013-10-14 08:42:11
【问题描述】:

我正在尝试生成一个表格,显示在任何给定日期处于任何给定状态的项目数量。我的结果表在 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

如果我的输出表在第一列中包含一组日期,其中状态为标题,我需要计算有多少行处于给定状态并且尚未转换到下一个状态,以便在通知列,我会计算通知日期为

我使用了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”部分,这很好用,只是我需要它只计算给定状态实际上有日期的行,所以如果“Assigned”日期为空,我不希望该行计入“已分配”列。

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

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)

【问题讨论】:

  • My result table has a set of Dates down column A and column headers are various statuses. 除了 A 列,我几乎可以在任何地方看到日期。我在 A 列看到 Product。或者我错过了什么?
  • 上表不是结果表的例子。那是源数据表。我将编辑以显示结果表的示例
  • @pnuts:即使我想问这个问题,但后来我在帖子中看到了 OP 的评论;)the corresponding product numbers are for reference only and won't actually be in the result table.
  • 是一个拼写错误。我已更正计数以准确反映计数产品 2 和 4。

标签: excel count excel-formula conditional frequency


【解决方案1】:

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

=SUM((B$2:B$6&lt;=$A10)*(MMULT((C$2:$F$6&gt;$A10)+(C$2:$F$6=""),TRANSPOSE(COLUMN(C$2:$F$6)^0))=COLUMNS(C$2:$F$6)))

CTRL+SHIFT+ENTER 确认并向下复制(见下面的截图)

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

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

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

【讨论】:

  • 哇。非常令人印象深刻的解决方案。效果很好!谢谢@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 连接,因此如果您有两对,第一对 AND 第二对必须为该行返回 true 以数。

【讨论】:

  • 当我尝试这个时,它不起作用,因为 countifs 就像一个巨大的“And”语句,但我需要的是一个“OR”语句,就第二部分而言,它只计算如果相应的状态是正确的日期,则为一行,但如果后面的任何状态发生在同一日期或之前,则不是。
  • 这仍然是“与”。 Col1Date AND Col3>Date AND Col4>Date。各种状态是否按顺序出现?如果是这样,那么只需检查下一个状态是否为 > Date
  • 它们应该,但有时它们是空白的,因此每列(状态)需要为空白或高于该列的当前日期才能通过。因此,如果通知是 5/9,分配是空白,完成是 5/12……给定的产品在 5/12 不会被计为“通知”,但会在 5/11。
  • 好的,那 COUNTIFS 实现起来有点棘手 - 让我想想......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-21
  • 2020-09-08
  • 1970-01-01
  • 2019-04-30
相关资源
最近更新 更多