Countif与时间间隔

Jos*_*ose 9 google-sheets

我的Google表格:

name   paid   time
john    y     2015/08/02 14:14
john    n     2015/08/02 14:13
john    n     2015/08/02 14:12
pat     n     2015/08/02 14:11
peter   n     2015/08/02 14:10
greg    n     2015/08/02 14:09
ricardo n     2015/08/02 14:05
barack  y     2015/08/02 14:02
john    n     2015/08/02 20:14
Run Code Online (Sandbox Code Playgroud)

我需要计算在10分钟内没有付款或不付款的人(如果这个人在10分钟内没有付款,那么他还没有付款).我尝试过:

=SUMPRODUCT(--(A2:A9<>"")/COUNTIF(A2:A9,A2:A9&""))-COUNTIF(B2:B9,"y")
Run Code Online (Sandbox Code Playgroud)

这是一个好的开始,但我没有时间间隔作为参数.

在这种情况下,它返回4但不是5我想要的,因为John在10分钟(14:12到14:14之间)但不是在20:14支付.

例如,它开始于2015/08/02 14:12为John(第一个NO - > n)然后让我们看看接下来的10分钟会发生什么.

如果没有,所以我们认为他没有付钱.否则"y",所以他支付了

然后我们继续看看john n 2015/08/02 20:14会发生什么(因为在20:14之后什么也没付款)

所以总共5个人而不是4个人.

Rub*_*bén 1

简短回答

首先获取每个 n 和 y 类别的最近日期,然后计算最近的 n 日期比 y 日期新的名称。

评论

关于“10 分钟内不付款(如果该人在 10 分钟内没有付款,那么他还没有付款)”的部分被故意忽略,因为 OP 没有包含有关如何收集数据的详细信息,也没有包含有关如何收集数据的详细信息。何时以及如何使用计算结果。

解释

源数据

考虑以下作为源数据

+----+---------+------+-------------------+
|    |    A    |  B   |         C         |
+----+---------+------+-------------------+
|  1 | name    | paid | time              |
|  2 | john    | y    | 8/2/2015 14:14:00 |
|  3 | john    | n    | 8/2/2015 14:13:00 |
|  4 | john    | n    | 8/2/2015 14:12:00 |
|  5 | pat     | n    | 8/2/2015 14:11:00 |
|  6 | peter   | n    | 8/2/2015 14:10:00 |
|  7 | greg    | n    | 8/2/2015 14:09:00 |
|  8 | ricardo | n    | 8/2/2015 14:05:00 |
|  9 | barack  | y    | 8/2/2015 14:02:00 |
| 10 | john    | n    | 8/2/2015 20:14:00 |
+----+---------+------+-------------------+
Run Code Online (Sandbox Code Playgroud)

步骤1

将以下公式添加到单元格 E1

=QUERY(A:C,"select A,max(C) where A <>'' group by A pivot B",1)
Run Code Online (Sandbox Code Playgroud)

结果

+---+---------+-------------------+-------------------+
|   |    E    |         F         |         G         |
+---+---------+-------------------+-------------------+
| 1 | name    | n                 | y                 |
| 2 | barack  |                   | 8/2/2015 14:02:00 |
| 3 | greg    | 8/2/2015 14:09:00 |                   |
| 4 | john    | 8/2/2015 20:14:00 | 8/2/2015 14:14:00 |
| 5 | pat     | 8/2/2015 14:11:00 |                   |
| 6 | peter   | 8/2/2015 14:10:00 |                   |
| 7 | ricardo | 8/2/2015 14:05:00 |                   |
+---+---------+-------------------+-------------------+
Run Code Online (Sandbox Code Playgroud)

步骤 1 的说明

结果是一个显示 y 和 n 类别的最新日期的表格。

第2步

将以下公式添加到单元格 I2

=ArrayFormula(SUM(IF(F2:F>G2:G,1,0)))
Run Code Online (Sandbox Code Playgroud)

步骤 2 的说明

计算第 n 日期比 y 日期新的每个名称。

结果

+---+---+
|   | I |
+---+---+
| 1 |   |
+---+---+
| 2 | 5 |
+---+---+
Run Code Online (Sandbox Code Playgroud)

单一配方替代品

=transpose(
    QUERY(
       QUERY(
          A:C,
          "select A,max(C) where A <>'' group by A pivot B",1),
       "select count(Col1) where Col2 > Col3",1)
  )
Run Code Online (Sandbox Code Playgroud)

结果

+------------+---+
| count name | 5 |
+------------+---+
Run Code Online (Sandbox Code Playgroud)