Countif与时间间隔

时间:2015-11-09 21:01:05

标签: 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

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

=SUMPRODUCT(--(A2:A9<>"")/COUNTIF(A2:A9,A2:A9&""))-COUNTIF(B2:B9,"y")

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

在这种情况下它返回4但不是5,因为我希望,因为John在10分钟(14:12到14之间)的间隔内付款: 14)但不是在20:14。

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

如果没有,所以我们认为他没有付钱。 否则“y”,所以他支付了

我们后来继续看看john n 2015/08/02 20:14会发生什么事(他在20:14之后没有付款)

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

1 个答案:

答案 0 :(得分: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 |
+----+---------+------+-------------------+

第1步

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

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

结果

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

步骤1的说明

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

第2步

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

=ArrayFormula(SUM(IF(F2:F>G2:G,1,0)))

第2步的说明

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

结果

+---+---+
|   | I |
+---+---+
| 1 |   |
+---+---+
| 2 | 5 |
+---+---+

单一配方替代

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

结果

+------------+---+
| count name | 5 |
+------------+---+