【问题标题】:Excel: Count values based on Condition but omit the repetitive valuesExcel:根据条件计算值但省略重复值
【发布时间】:2015-04-06 08:57:47
【问题描述】:

我有一个包含日期时间、dayofweak、开始时间和结束时间的 excel 表,例如,我需要找到 dayofweak 的计数为“星期日”,并在所有日期的给定开始时间和结束时间将其计为1 表示同一天的任意重复次数。我使用了以下公式来计算同一日期重复的值。

=========================示例数据==================== ================

Open Time   DATES   day month   year    days    time
1/5/2014 1:24   1/5/2014    5   1   2014    Sunday  1:24
1/5/2014 3:05   1/5/2014    5   1   2014    Sunday  3:05
1/5/2014 2:13   1/5/2014    5   1   2014    Sunday  2:13
1/5/2014 3:10   1/5/2014    5   1   2014    Sunday  3:10
1/5/2014 8:41   1/5/2014    5   1   2014    Sunday  8:41
1/5/2014 16:27  1/5/2014    5   1   2014    Sunday  16:27
1/5/2014 11:30  1/5/2014    5   1   2014    Sunday  11:30
1/5/2014 12:35  1/5/2014    5   1   2014    Sunday  12:35
1/5/2014 9:34   1/5/2014    5   1   2014    Sunday  9:34
1/5/2014 11:21  1/5/2014    5   1   2014    Sunday  11:21
1/5/2014 10:02  1/5/2014    5   1   2014    Sunday  10:02
1/5/2014 10:11  1/5/2014    5   1   2014    Sunday  10:11
1/5/2014 11:01  1/5/2014    5   1   2014    Sunday  11:01
1/5/2014 11:28  1/5/2014    5   1   2014    Sunday  11:28
1/5/2014 12:53  1/5/2014    5   1   2014    Sunday  12:53
1/5/2014 11:58  1/5/2014    5   1   2014    Sunday  11:58
1/5/2014 12:19  1/5/2014    5   1   2014    Sunday  12:19
1/5/2014 12:53  1/5/2014    5   1   2014    Sunday  12:53
1/5/2014 17:44  1/5/2014    5   1   2014    Sunday  17:44
1/5/2014 15:02  1/5/2014    5   1   2014    Sunday  15:02
1/5/2014 13:01  1/5/2014    5   1   2014    Sunday  13:01
1/5/2014 15:03  1/5/2014    5   1   2014    Sunday  15:03
1/5/2014 15:08  1/5/2014    5   1   2014    Sunday  15:08
1/5/2014 16:01  1/5/2014    5   1   2014    Sunday  16:01
1/5/2014 17:00  1/5/2014    5   1   2014    Sunday  17:00
1/5/2014 20:18  1/5/2014    5   1   2014    Sunday  20:18
1/5/2014 16:45  1/5/2014    5   1   2014    Sunday  16:45
1/5/2014 17:53  1/5/2014    5   1   2014    Sunday  17:53
1/5/2014 19:55  1/5/2014    5   1   2014    Sunday  19:55
1/5/2014 18:03  1/5/2014    5   1   2014    Sunday  18:03
1/5/2014 19:28  1/5/2014    5   1   2014    Sunday  19:28
1/5/2014 18:47  1/5/2014    5   1   2014    Sunday  18:47
1/5/2014 18:54  1/5/2014    5   1   2014    Sunday  18:54
1/5/2014 19:01  1/5/2014    5   1   2014    Sunday  19:01
1/5/2014 19:09  1/5/2014    5   1   2014    Sunday  19:09
1/5/2014 19:17  1/5/2014    5   1   2014    Sunday  19:17
1/5/2014 19:32  1/5/2014    5   1   2014    Sunday  19:32
1/5/2014 19:45  1/5/2014    5   1   2014    Sunday  19:45
1/5/2014 19:40  1/5/2014    5   1   2014    Sunday  19:40
1/5/2014 19:49  1/5/2014    5   1   2014    Sunday  19:49
1/5/2014 19:59  1/5/2014    5   1   2014    Sunday  19:59
1/5/2014 19:46  1/5/2014    5   1   2014    Sunday  19:46
1/5/2014 19:55  1/5/2014    5   1   2014    Sunday  19:55
1/5/2014 20:05  1/5/2014    5   1   2014    Sunday  20:05
1/5/2014 20:46  1/5/2014    5   1   2014    Sunday  20:46
1/5/2014 20:20  1/5/2014    5   1   2014    Sunday  20:20
1/5/2014 20:41  1/5/2014    5   1   2014    Sunday  20:41
1/5/2014 22:23  1/5/2014    5   1   2014    Sunday  22:23
1/5/2014 22:13  1/5/2014    5   1   2014    Sunday  22:13
1/5/2014 22:45  1/5/2014    5   1   2014    Sunday  22:45
1/5/2014 22:47  1/5/2014    5   1   2014    Sunday  22:47
1/5/2014 22:18  1/5/2014    5   1   2014    Sunday  22:18
1/5/2014 22:28  1/5/2014    5   1   2014    Sunday  22:28
1/5/2014 22:44  1/5/2014    5   1   2014    Sunday  22:44
1/5/2014 22:40  1/5/2014    5   1   2014    Sunday  22:40
1/5/2014 22:47  1/5/2014    5   1   2014    Sunday  22:47
1/5/2014 22:55  1/5/2014    5   1   2014    Sunday  22:55
1/5/2014 22:54  1/5/2014    5   1   2014    Sunday  22:54
1/5/2014 22:52  1/5/2014    5   1   2014    Sunday  22:52
1/5/2014 23:04  1/5/2014    5   1   2014    Sunday  23:04
1/5/2014 23:05  1/5/2014    5   1   2014    Sunday  23:05
1/5/2014 23:06  1/5/2014    5   1   2014    Sunday  23:06
1/12/2014 1:03  1/12/2014   12  1   2014    Sunday  1:03
1/12/2014 3:50  1/12/2014   12  1   2014    Sunday  3:50
1/12/2014 7:50  1/12/2014   12  1   2014    Sunday  7:50
1/12/2014 8:23  1/12/2014   12  1   2014    Sunday  8:23
1/12/2014 10:18 1/12/2014   12  1   2014    Sunday  10:18
1/12/2014 10:30 1/12/2014   12  1   2014    Sunday  10:30
1/12/2014 12:08 1/12/2014   12  1   2014    Sunday  12:08
1/12/2014 8:19  1/12/2014   12  1   2014    Sunday  8:19
1/12/2014 8:33  1/12/2014   12  1   2014    Sunday  8:33
1/12/2014 10:09 1/12/2014   12  1   2014    Sunday  10:09
1/12/2014 9:14  1/12/2014   12  1   2014    Sunday  9:14
1/12/2014 9:57  1/12/2014   12  1   2014    Sunday  9:57
1/12/2014 10:10 1/12/2014   12  1   2014    Sunday  10:10
1/12/2014 10:12 1/12/2014   12  1   2014    Sunday  10:12
1/12/2014 10:14 1/12/2014   12  1   2014    Sunday  10:14
1/12/2014 10:15 1/12/2014   12  1   2014    Sunday  10:15
1/12/2014 10:25 1/12/2014   12  1   2014    Sunday  10:25
1/12/2014 10:17 1/12/2014   12  1   2014    Sunday  10:17
1/12/2014 10:20 1/12/2014   12  1   2014    Sunday  10:20
1/12/2014 11:08 1/12/2014   12  1   2014    Sunday  11:08
1/12/2014 10:21 1/12/2014   12  1   2014    Sunday  10:21
1/12/2014 10:23 1/12/2014   12  1   2014    Sunday  10:23
1/12/2014 10:29 1/12/2014   12  1   2014    Sunday  10:29
1/12/2014 10:29 1/12/2014   12  1   2014    Sunday  10:29
1/12/2014 13:50 1/12/2014   12  1   2014    Sunday  13:50
1/12/2014 15:59 1/12/2014   12  1   2014    Sunday  15:59
1/12/2014 15:17 1/12/2014   12  1   2014    Sunday  15:17
1/12/2014 10:44 1/12/2014   12  1   2014    Sunday  10:44
1/12/2014 10:32 1/12/2014   12  1   2014    Sunday  10:32
1/12/2014 10:36 1/12/2014   12  1   2014    Sunday  10:36
1/12/2014 10:38 1/12/2014   12  1   2014    Sunday  10:38
1/12/2014 10:41 1/12/2014   12  1   2014    Sunday  10:41
1/12/2014 10:48 1/12/2014   12  1   2014    Sunday  10:48
1/12/2014 10:55 1/12/2014   12  1   2014    Sunday  10:55
1/12/2014 11:00 1/12/2014   12  1   2014    Sunday  11:00
1/12/2014 11:38 1/12/2014   12  1   2014    Sunday  11:38
1/12/2014 11:53 1/12/2014   12  1   2014    Sunday  11:53
1/12/2014 11:47 1/12/2014   12  1   2014    Sunday  11:47
1/12/2014 12:03 1/12/2014   12  1   2014    Sunday  12:03
1/12/2014 12:23 1/12/2014   12  1   2014    Sunday  12:23
1/12/2014 12:39 1/12/2014   12  1   2014    Sunday  12:39
1/12/2014 12:38 1/12/2014   12  1   2014    Sunday  12:38
1/12/2014 12:52 1/12/2014   12  1   2014    Sunday  12:52
1/12/2014 13:11 1/12/2014   12  1   2014    Sunday  13:11
1/12/2014 13:31 1/12/2014   12  1   2014    Sunday  13:31
1/12/2014 13:20 1/12/2014   12  1   2014    Sunday  13:20
1/12/2014 14:02 1/12/2014   12  1   2014    Sunday  14:02
1/12/2014 14:00 1/12/2014   12  1   2014    Sunday  14:00
1/12/2014 16:40 1/12/2014   12  1   2014    Sunday  16:40
1/12/2014 16:56 1/12/2014   12  1   2014    Sunday  16:56
1/12/2014 15:29 1/12/2014   12  1   2014    Sunday  15:29
1/12/2014 16:11 1/12/2014   12  1   2014    Sunday  16:11
1/12/2014 16:22 1/12/2014   12  1   2014    Sunday  16:22
1/12/2014 17:00 1/12/2014   12  1   2014    Sunday  17:00
1/12/2014 17:42 1/12/2014   12  1   2014    Sunday  17:42
1/12/2014 17:19 1/12/2014   12  1   2014    Sunday  17:19
1/12/2014 20:50 1/12/2014   12  1   2014    Sunday  20:50
1/12/2014 18:44 1/12/2014   12  1   2014    Sunday  18:44
1/12/2014 18:34 1/12/2014   12  1   2014    Sunday  18:34
1/12/2014 18:25 1/12/2014   12  1   2014    Sunday  18:25
1/12/2014 18:45 1/12/2014   12  1   2014    Sunday  18:45
1/12/2014 18:44 1/12/2014   12  1   2014    Sunday  18:44
1/12/2014 20:10 1/12/2014   12  1   2014    Sunday  20:10
1/12/2014 18:58 1/12/2014   12  1   2014    Sunday  18:58
1/12/2014 19:44 1/12/2014   12  1   2014    Sunday  19:44
1/12/2014 21:25 1/12/2014   12  1   2014    Sunday  21:25
1/12/2014 20:12 1/12/2014   12  1   2014    Sunday  20:12
1/12/2014 21:27 1/12/2014   12  1   2014    Sunday  21:27
1/12/2014 21:52 1/12/2014   12  1   2014    Sunday  21:52
1/12/2014 22:40 1/12/2014   12  1   2014    Sunday  22:40
1/12/2014 23:19 1/12/2014   12  1   2014    Sunday  23:19
1/12/2014 22:20 1/12/2014   12  1   2014    Sunday  22:20
1/12/2014 22:38 1/12/2014   12  1   2014    Sunday  22:38
1/12/2014 23:29 1/12/2014   12  1   2014    Sunday  23:29

============================示例数据================= ================

=COUNTIFS(E:E,"Sunday",F:F,">="&H2,F:F,"<="&I2)

这里是星期天,从 00:00:00 到 00:59:59 我发现了这个公式的价值,现在我需要的是日期应该是不同的,例如现在开始时间到结束时间的日期是重复的,但是现在如果我得到一个日期作为时间戳,那么我不应该再次计算该日期以进行重复。

【问题讨论】:

  • 您是否将三个时间列格式化为TIME?
  • @AHC 是的,我已经格式化了。我当时没有问题。我现在需要的是我的公式来计算所有日期下 Day="Sunday" starttime = "0:00" 和 endtime="0:59" 的值,但对于特定日期应该只计算一次。现在它计算一个日期不止一次,因为公式就是这样。
  • 上面给出的示例数据是不够的,它只显示了一个日期。尝试 steven 的回答,看看是否有效,否则,提供有代表性的数据和预期结果列。
  • 我添加了一些示例数据@AHC。请看一看。 Steven's Answer 将所有日期的整个值计为 1。
  • 所以基本上,对于每一天(每个唯一数据),您想要每个星期日的时间戳数(每小时)?对吗?

标签: excel date datetime excel-formula


【解决方案1】:

以下是回答您问题的方法:

这里是sample sheet with the answer
您可以按照上述可下载表格中的步骤进行操作。
这是一个屏幕

您需要确保将 H 列格式化为时间。
那么您需要将开始/结束时间戳水平放置,从 KAH,分成两行(开始行和结束行)。
然后您从列 A 中动态提取唯一日期,并使用以下公式将它们放入列 J

=IFNA(INDEX($A$2:$A$229730,MATCH(0,COUNTIF($J$2:J2,$A$2:$A$229730),0)),"")


您将此公式放入 J3 并确保按 ctrl+shift+enter 来计算公式。
然后向下拖动并填充,直到您在 J 列中拥有所有唯一日期。

然后将以下公式放入K3中,根据范围(开始/结束)计算每个日期的时间戳数。

=COUNTIFS($A:$A,$J3,$G:$G,"Sunday",$H:$H,">="&K$1,$H:$H,"<="&K$2)


然后将此公式向右拖动并填充直到 AH3,然后从 K3AH3 中选择并向下拖动并填充直到最后一个唯一日期J 列。

希望这对你有用。您可以随时查看上面的示例表。 如果您有问题,请告诉我。



【讨论】:

  • 感谢您的回答,但我有 229730 行这个公式不起作用
  • @krishna: 简单:将公式中的 999 替换为 229730,然后向下拖动直到 229730。我在上面的公式中做到了
  • 它给出的值与我使用的 datetime 数据类型相同,该数据类型具有日期和时间,是否正因为如此,我能对此做些什么。
  • @krishna:你是什么意思?你的工作表栏结构不是和我发给你的一样吗?你的A列有什么?您是否使用我的示例表来检查它是否正常工作?
  • 是的,它会在某个日期到来,然后它会再次获得相同的值,您的公式是正确的,但它会再次从头开始获取数据。
【解决方案2】:

我不知道你为什么使用 dayname(E) 而不是 date(A) 来查找它,但这应该对你有用,因为整个事情似乎是星期天

=if(COUNTIFS(E:E,"Sunday",F:F,">="&H2,F:F,"<="&I2)>1,1,0)

否则请提供更多示例数据

【讨论】:

  • 我没有使用日期的原因是我想找到所有日期的开始时间和结束时间的时间范围的计数。我需要帮助的部分是必须对该时间线上的所有日期进行计数,但如果特定日期有重复,则不应再次计数。
  • 您是否希望将公式向下拖动并在每个日期的第一个获得 1 以匹配您在一个单元格中查找所有数据的总计数的标准?
  • 是的,例如日期 2014 年 1 月 5 日是星期天,时间是 1:35 AM,低于 1:00-1:59,所以现在计数为 1,另一个数据为 1 /5/2014 是星期天,时间是凌晨 1:10,它不应该计算在 1:00-1:59 之下,另一个数据与 2014 年 1 月 5 日同一天和时间是凌晨 2:38,即低于 2:00-2:59 现在计数将增加到 2。
【解决方案3】:

我认为到目前为止建议的任何公式都没有解决每个时间段仅计算一次日期的要求。

您可以使用FREQUENCY 函数来做到这一点,但最好限制数据范围而不是使用整列,因此假设第 2 到 1000 行中的数据可以在第 2 行中使用此“数组公式”

=SUM(IF(FREQUENCY(IF(E$2:E$1000="Sunday",IF(F$2:F$1000&gt;=H2,IF(F$2:F$1000&lt;=I2,A$2:A$1000))),INT(A$2:A$1000)),1))

CTRL+SHIFT+ENTER 确认并向下复制列

通过将FREQUENCY "bins" 设置为 A 列中日期的日期元素,那么任何重复的日期(满足条件)都将进入同一个 bin,并且公式只计算每个填充的 bin,因此不计算日期两次

鉴于下面的 cmets,我认为这个公式仅适用于一个月的数据

=SUMPRODUCT(0+(COUNTIFS(E:E,"Sunday",F:F,"&gt;="&amp;H2,F:F,"&lt;="&amp;I2,A:A,"&gt;="&amp;INT(MIN(A:A))+{7,14,21,28,35}-WEEKDAY(MIN(A:A)-1),A:A,"&lt;"&amp;INT(MIN(A:A))+{7,14,21,28,35}-WEEKDAY(MIN(A:A)-1)+1)&gt;0))

这将专门查看当月的Sundays,并确定其中任何Sundays是否有特定时间段的条目,因此该公式的结果将是最多5个

你可以使用这个版本一年:

=SUMPRODUCT(0+(COUNTIFS(F:F,"&gt;="&amp;H2,F:F,"&lt;="&amp;I2,E:E,"Sunday",A:A,"&gt;="&amp;INT(MIN(A:A))+ROW(INDIRECT("1:53"))*7-WEEKDAY(MIN(A:A)-1),A:A,"&lt;"&amp;INT(MIN(A:A))+ROW(INDIRECT("1:53"))*7-WEEKDAY(MIN(A:A)-1)+1)&gt;0))

对于一周中的其他日子,您可以更改 MIN(A:A)-1 的 2 个实例。星期一使用 -2,星期二使用 -3 等等。

【讨论】:

  • 这么多数据可能有点慢!我建议您在复制之前先在一个单元格中尝试该公式,然后看看需要多长时间 - 显然您将不得不增加公式中的范围大小
  • 我试过测试,它似乎很慢,你知道数据中有多少个不同日期吗?是在规定的时期内吗?获得周日数据后,您是否打算计算其他日子的数据?
  • 是 7 天和 1 个月
  • 对不起,您的意思是您有 230,000 行数据但仅涵盖一个月?
  • 好的,所以如果您有一个月的数据,那么在特定小时内将有任何数据的星期日的最大数量将为 5(该月的星期日数量)。是不是很可能,您拥有的每个时间段的记录数将返回 5(如果该月只有 4 个星期日,则返回 4)?不过,我想我可能可以制作一个更简单的公式.......
猜你喜欢
  • 1970-01-01
  • 2019-01-13
  • 2017-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多