请教excel如何进行日期 时间统计?

如下数据有1万条,我要统计比如1号有多少记录和1号0点到8点共有多少条记录?这要如何做?谢谢!
0000685DFF00 东北 2010-12-1 0:10
00003E68FF00 东南 2010-12-1 0:11
0000DC1A1500 南 2010-12-1 0:11
00007172FF00 西南 2010-12-1 0:13
0000903E0800 西 2010-12-1 0:13
00002D240800 西北 2010-12-1 0:14
000047551500 北 2010-12-1 0:14
0000685DFF00 东北 2010-12-1 0:35
00003E68FF00 东南 2010-12-1 0:36
0000DC1A1500 南 2010-12-1 0:36
00007172FF00 西南 2010-12-1 0:37
0000903E0800 西 2010-12-1 0:38
00002D240800 西北 2010-12-1 0:39
000047551500 北 2010-12-1 0:39
0000685DFF00 东北 2010-12-1 1:14
00003E68FF00 东南 2010-12-1 1:14
0000DC1A1500 南 2010-12-1 1:14
00007172FF00 西南 2010-12-1 1:15
0000903E0800 西 2010-12-1 1:16
再如统计 “东北”在12月1号共有多少条记录
12月1号0点到8点之间“东北”共有多少条记录。

谢谢,我是要在相应单元格里加入公式,自动填写统计数字,这公式要如何写?使用VBA也可。
谢谢三位的回答。VBA有点复杂,搞不懂。我使用了2楼的方法可行,不过在一个表里就有查询三百多条,如:“=SUMPRODUCT((data!B:B="东北")*(INT(data!D:D)=INT(A3))*(data!E:E<=20/24))-SUMPRODUCT((data!B:B="东北")*(INT(data!D:D)=INT(A3))*(data!E:E<=6/24))” (A3,A5 单元格是日期,不明白统计一天6点-20点简化的写法。)
计算一次要花十几分钟,非常慢,不知道有什么办法能加快计算?

Excel 中如何计算两个日期相差多少百度经验:jingyan.baidu.com 计算两个日期的差是非常有用的,例如要计算工龄,计算年龄,都是非常方便的。要实现计算两个日期的差值,需要一个Excel 一个隐藏的函数DATEDIF。

函数公式:=DATEDIF(开始日期,终止日期,返回格式)注意:datedif中是有字母“d”的!

函数返回的是从开始日期到终止日期差值,至于返回的是年、还是月,由返回格式决定

开始日期:计算的起始时间。
终止日期:计算的结束时间。
返回格式
下面就是介绍一个简单的例子:计算入职表中的工龄以及在职的详细时间。
计算工龄:=DATEDIF(C3,TODAY(),"Y")
计算入职详细时间:= "在职时间" & DATEDIF(C3,TODAY(),"Y") & "年" & DATEDIF(C3,TODAY(),"YM") & "月" & DATEDIF(C3,TODAY(),"MD")
提示:& 表示连接符,就是连接内容的意思。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-22
=SUMPRODUCT((data!B1:B100="东北")*(Iday(data!D1:D100)=1)) ,根据实际调整范围 ,还可以把问题作为内容、样表(请注意:要03版的,把现状和目标效果表示出来)作为附件发来看下 [email protected],包你满意
第2个回答  2010-12-22
数据的计算量大了,电脑运行就会慢,我们可以尝试让电脑减少工作量
比如我们在D1输入要查询的日期及开始时间 如 2010-12-1 6:00
E1输入要查询的日期及结束时间 如 2010-12-1 12:00
F1输入要查询的方位 如 东北
然后在D2输入公式
=sumproduct((date!b2:b10000=F1)*(date!d2:d100000)>=d1)*(date!d2:d10000<=d2))
这样就可以了
要查询某天全天时在D1输入比如 2010-12-1 0:00 D2输入 2010-12-2 0:00即可
第3个回答  2010-12-21
Sub Jisuan()

Dim i As Long
Dim j As Integer
Dim m As Long
Dim col As Integer
Dim Checkdaycol As Integer
Dim Checktimecol As Integer
Dim Checkday As Integer
Dim Checktime1 As Integer
Dim Checktime2 As Integer
Dim Cday As Integer
Dim Ctime As Integer
Dim n As Long

With ActiveSheet

m = .UsedRange.Rows.Count
col = 1 '数据所在的列
Checkdaycol = 7 '检索日期所在的列数
Checktimecol = 8 '检索时间所在是列数(格式为0-8表示0点到8点,为空表示所有时间只查日期)

For j = 1 To 31 Step 1
n = 0
If .Cells(j, Checkdaycol).Value <> "" Then
Checkday = CInt(.Cells(j, Checkdaycol).Value)
For i = 1 To m Step 1
If .Cells(i, col).Value <> "" Then
Cday = CInt(Split(Split(.Cells(i, col).Value, " ")(2), "-")(2))
Ctime = CInt(Split(Split(.Cells(i, col).Value, " ")(3), ":")(0))
If .Cells(j, Checktimecol).Value <> "" Then
Checktime1 = CInt(Split(.Cells(j, Checktimecol).Value, "-")(0))
Checktime2 = CInt(Split(.Cells(j, Checktimecol).Value, "-")(1))
If Cday = Checkday And Ctime >= Checktime1 And Ctime <= Checktime2 Then
n = n + 1
End If
Else
If Cday = Checkday Then
n = n + 1
End If
End If
End If
Next i
.Cells(j, Checktimecol + 1).Value = "有" & n & "条"
End If
Next j
End With

End Sub
第4个回答  2010-12-21
很简单。分两步走。
利用“数据”→“分列”,先把所有数据按照分列规则分到单独的列中。
打开“自动筛选”,下边的事我就不多说了。