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、至此,就利用数据透视表轻松求得了各个小时段中数据的和
用程序解决你的问题应该能够符合要求
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不太熟悉,这个在这里一下子说不清楚,我编写了二个程序,一个是按正点时间来判断,一个是按单元格数据的时间判断,愿以的话请联系 扣二二五二八零九二三八,我可以把工作簿发给你,这样你就明白了。
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列数据之和
右键组合怎么做?点右键没反应(Ctrl+右键),双击左键出来的选项里面没有设置2小时的选项。
在透视表第一列右键点击点创建组
统计次数:
=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根据实际范围调整