将QQ记录从QQ中导出为Txt文件,再导入的Excel表格中,会发现消息记录格式:
2012-06-23 10:58:34 小明
你好!
2012-06-23 10:58:34 小红
你好!
消息记录在Excel表的A列中显示,
然后,分别列出在B列中列出所有统计的日期,在C列中标明要统计的人名,例如 C列统计小明 每天所发消息的条数,D列统计 小红每天所发的条数
C列中使用公式
例如: C2 = COUNTIF(A:A,"2012-06-23*小明") C3 = COUNTIF(A:A,TEXT(B3,"yyyy-mm-dd")&"*小明“)
其中B3的内容就是2012-6-24的格式的时间类变量,” * “ 的作用是”2012-06-23“与”小明“之间可是添加任意个字符,COUNTIF就是统计满足IF条件的记录总和。
D2 = COUNTIF(A:A,"2012-06-23*小红") C3 = COUNTIF(A:A,TEXT(B3,"yyyy-mm-dd")&"*小红“)
设计该统计算法思路如下,先确定A列中每天所发消息在A列中的起始行号,以及该天所发消息占用的总行数,其中包括空白的单元行,这样做就是便于确定后面要查找的范围;然后,根据每天消息在A列中的范围,在该范围中进行逐行遍历,找到一个用户的发言时间段,统计该段下面所包含的字符个数,再加所有找到的发言段的个数相加,得到该用户该天发言的总字符个数(当然图片语音,都只是作为字符记录)。
Public Function CalculateWords(ByVal ss As String, ByVal start As Long, ByVal j As Long) As Long Dim i, k, result As Long k = 0 result = 0 For i = start To j If Cells(i, 1) Like ss Then k = i + 1 While Len(Cells(k, 1)) <> 0 result = result + Len(Cells(k, 1)) k = k + 1 Wend End If Next Quit: CalculateWords = result End Function Public Function TotalRows(ByVal start As Long, ByVal t As Date) As Long Dim i, j, k, result As Long k = 0 result = 0 j = Sheet1.UsedRange.Rows.Count For i = start To j If Cells(i, 1) Like "20??-??-?? ??:??:??*" Then Dim t1 As Date t1 = Left(Cells(i, 1), 10) If t1 > t Then GoTo Quit End If End If Next Quit: TotalRows = i End Function
函数使用说明,例如,
先确定2012-06-23 这天的消息记录,在表格A列中占有哪几行,将索引结果存在E列表
E2 = TotalRows(1, B2) E3 = TotalRows(E2, B3)
我们用F列存小明的消息字符数
F2 = CalculateWords(TEXT(B2,"yyyy-mm-dd")&"*小明“ , 1, E2 -1) 即2012-06-23 ,小明 所发消息的总字数
F3 = CalculateWords(TEXT(B3,"yyyy-mm-dd")&"*小明“ , E2, E3 -1) 即2012-06-24 ,小明 所发消息的总字数
最后,可以用图表的形式将统计的结果,绘制出来
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/gdp12315_gu/article/details/47045451