|
楼主 |
发表于 2007-8-2 15:53:14
|
显示全部楼层
自己给自己备忘一个:
8.1
半夜有人突然提问想筛选QQ群的聊天记录, 只保留指定号码的..
QQ聊天管理器中拿到聊天文本后,因为本来信息量大, 所以考虑使用UE的正则式替换删除无用及不符合的信息,未果
后发现信息量小,改用EXCEL实现.
初.
EXCEL打开文本后,聊天信息很规律, 唯一1列A列, 去除标题信息后,正文内容
第1行为 信息时间+QQ名称+QQ号码
第2行为 聊天内容
第3行为 空行
以此类推.
细致观察发现,此聊天记录在记事本中,聊天内容无转行,全部内容为1行, 如果聊天中增加有回车符,在记事本中显示为黑色方块■
在EXCEL黑色方块■自动还原成为回车,所以上面规律被这样的聊天记录改变, 也就是说,聊天内容可能不为1行,可能2行或是多行,
后空行,再显示下一条聊天信息
*^&^*
在B列写如下公式:
从B2开始, 如果无第1行,增加1空行.
B2=IF(A2="","", IF(B1="", IF(RIGHT(A2,9)="(8652827)",A2,"" ) ,A2) )
公式为3层IF嵌套..
红色层为判断此行A列内容的最后QQ号码是否为指定QQ号码, YES:就显示A列到B列, NO就B列为空
蓝色层为判断B列上行是否为空, YES:则在此行判断A列内容, NO就显示A列到B列
紫色层为判断A列此行是否为空, YES:B列直接为空, NO才开始进行上面的判断
解释:
1.红色层使用RIGHT语句判断A列最后的数据是否为指定Q号,进行主要筛选工作. 其中的粗大数字串为Q号, 因为规则是Q号前后
有括号,所以前面的粗大数字"9"为实际Q号位数+2
2.蓝色层因为红色判断后,如果显示的话,表示前行为聊天时间+Q名称+Q号码,所以此下行肯定为聊天内容,需显示
3.紫色层剔除空行,只进非空行进行判断
初步解决问题.
又.
摸摸及E仔细观察聊天记录后,发现聊天记录中有些多行聊天记录中间有空行,如果按照上面公式实现,可能这样的聊天记录就只会显
示空行前面部分内容,而造成内容不完整
然.
时间太晚了,洗澡睡觉ing.....
果.
今天无事,继续研究.. 发现规则是聊天记录之间都保留有唯一空行,如果出现2个以上的空行,都可视为是聊天内容中的空行,所以是可
以公式进行判断的..
条件是判断上2行的A列是否为相同内容,比如"空行"就能准确判断此行是聊天内容中的空行,还是聊天记录之间的空行
在增加2个空行后,写出B3单元格的公式如下: (因要判断前2行,所以增加2辅助行,以使行首数据不会判断失败)
B3=IF(A3="","",IF(A1=A2,A3,IF(B2="",IF(RIGHT(A3,9)="(2194202)",A3,""),A3)))
^&^
弱弱滴一想,其实也不完美...具体大家也可仔细想想...反正偶是不玩了..
BTW: 希望大家也能参与讨论, 让自己的思维更加理性..
[ 本帖最后由 妮可宝贝 于 2007-8-2 15:54 编辑 ] |
|