Excel中的条件统计如何实现按时间段统计?

示例:
列A(时间格式) 列B
00:00:00 1
01:00:00 5
15:17:40 9
要求:
1、统计列B中每个时段(24小时按每2小时一个时段,即00:00:00至01:59:59为一个时段)列B的出现次数(即00:00:00至01:59:59中列B共出现2次)。
2、同上,列B的数字总和(即00:00:00至01:59:59中列B的总值为6)

1、选择时间所在的列,点击”数据“选项卡中的”分列“

2、经过分列之后,时间由右对齐变成了左对齐,也就是系统认可的时间格式了,这样才能够正常进行下面的操作。选择数据区域中的任意一个单元(系统会自动将相邻区域选中,如果仅对部分区域数据进行透视,则务必选择这部分区域),点击”插入“,“数据透视表

3、确认下数据区域选择是否正确,然后点选数据透视表放置于本工作表中,选择一个单元格用于放置数据透视表

4、然后在右侧新出的界面中,将时间拖动到“行标签”中,将数量拖动到“数值”中

5、此时,选择数据透视表已经出现的行标签下的任意一个单元格,点击“选项”中的“将所选内容分组”

6、在弹出的“分组”对话框中,取消选择默认的“月”,选择“小时”,其中的起始时间和结束时间系统会自动填充,也可以根据需要自行设置

7、至此,就利用数据透视表轻松求得了各个小时段中数据的和

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-02-27

用程序解决你的问题应该能够符合要求

Sub abcd()
For i = 1 To [A65536].End(xlUp).Row
a = Cells(i, 1)
If i = 1 Then b = a
   If a - b > 8.33333333333334E-02 Then
      Cells(i - 1, 3) = b: Cells(i - 1, 4) = Cells(i - 1, 1)
      Cells(i - 1, 5) = t: Cells(i - 1, 6) = c
      Range(Cells(i - 1, 3), Cells(i - 1, 4)).NumberFormatLocal = "h:mm:ss;@"
      b = Cells(i, 1): i = i - 1: t = 0: c = 0
   Else
      t = t + 1
      c = c + Cells(i, 2)
      d = a - b
  End If
Next
         Cells(i - 1, 3) = b: Cells(i - 1, 4) = Cells(i - 1, 1)
         Cells(i - 1, 5) = t: Cells(i - 1, 6) = c
         Range(Cells(i - 1, 3), Cells(i - 1, 4)).NumberFormatLocal = "h:mm:ss;@"
         b = Cells(i, 1)
End Sub

追问

怎么才能做出这个按钮?把你的代码贴到单元格里?

追答

看来你对VBA不太熟悉,这个在这里一下子说不清楚,我编写了二个程序,一个是按正点时间来判断,一个是按单元格数据的时间判断,愿以的话请联系 扣二二五二八零九二三八,我可以把工作簿发给你,这样你就明白了。

第2个回答  2013-02-27
假设数据在A1至B100单元格区域

1、统计列B中每个时段(24小时按每2小时一个时段,即00:00:00至01:59:59为一个时段)列B的出现次数(即00:00:00至01:59:59中列B共出现2次)。

C1单元格输入公式
=SUMPRODUCT((A$1:A$100<>"")*(A$1:A$100>=(ROW(A1)-1)/12)*(A$1:A$100<ROW(A1)*1/12)*(B$1:B$100<>""))
下拉至C12单元格即可求出一天12个时段每个时段的B列数据个数

2、同上,列B的数字总和(即00:00:00至01:59:59中列B的总值为6)

D1单元格输入公式
=SUMPRODUCT((A$1:A$100<>"")*(A$1:A$100>=(ROW(A1)-1)/12)*(A$1:A$100<ROW(A1)/12)*B$1:B$100)
下拉至D12单元格即可求出一天12个时段每个时段的B列数据之和
第3个回答  推荐于2017-12-16
使用数据透视表,把列A放行标签,右键组合按2小时,列B放到数值,右键设置值字段属性,改成计数追问

右键组合怎么做?点右键没反应(Ctrl+右键),双击左键出来的选项里面没有设置2小时的选项。

追答

在透视表第一列右键点击点创建组

追问

不好意思,还要麻烦你。只找到“小时”,找不到“2小时”,如下图:

本回答被提问者采纳
第4个回答  2013-02-27
假如C列为时间段,即C1:00:00:00,C2:02:00:00.....
统计次数:
=SUMPRODUCT((A$1:A$100<>"")*((A$1:A$100-C$1)*24>=0)*((A$1:A$100-C$1)*24<2))

统计总和:
=SUMPRODUCT((A$1:A$100<>"")*((A$1:A$100-C$1)*24>=0)*((A$1:A$100-C$1)*24<2)*B$1:B$100)

公式下拉复制

A$100根据实际范围调整
相似回答