网友“嘟嘟”有一个提取数据的问题:源数据:
1482140557682182.jpg
(88.55 KB, 下载次数: 0, 售价: 1 金钱)
需要获取的数据:错误报警:从报警提示里“Error #W16 (09:41:17)”提取“W16”停机时间点:就是“Error #W16 (09:41:17)”,“()”里面的时间点“(09:41:17”行动时间点:A列找到错误报警后再到B列向下找第一次出现“Message Box Sucessfully Destroy”找到后将对应D列的时间获取成功解除报警:在向下找第一次出现“Message Box Sucessfully Destroy”,找到后将D列时间获取[/ol]
备注:数据源是从设备上直接导出,需要提取整理出有用的数据,以前都是手动一个一个找,经常出错和找漏。
错误报警提示例子:规律就是都有“#”和“()”里有时间点Error #W16 (09:41:17)Error #B27 (09:43:56) Wire No. 54Error #B27 (09:46:04) Wire No. 66Error #B27 (09:47:30) Wire No. 103
作者:初心-Office中国Excel提取数据结果添加按钮,写入下面的宏代码,点击按钮即可自动获取需要的数据。
1482140771161928.jpg
(122.68 KB, 下载次数: 0, 售价: 4 金钱)
Excel提取报警信息详细VBA代码: Sub test() Dim arr(), brr(1 To 999999, 1 To 7), m As Long, i As Long, crr, j As Long, kg As Boolean, t arr = Sheet2.UsedRange.Value For i = 1 To UBound(arr) If Len(arr(i, 1)) > 0 Then If InStr(arr(i, 1), "Error #") > 0 Then m = m + 1 crr = Split(arr(i, 1), " ") brr(m, 1) = Replace(crr(2), "#", "") brr(m, 2) = TimeValue(Replace(Replace(crr(3), "(", ""), ")", "")) kg = False For j = i + 1 To UBound(arr) If Len(arr(j, 2)) > 0 Then If kg = False Then If InStr(arr(j, 2), "Operation: Message Box") > 0 Then brr(m, 3) = TimeValue(Split(arr(j, 4), " ")(2)) kg = True End If Else If InStr(arr(j, 2), "Operation: Warning Message") > 0 Then brr(m, 4) = TimeValue(Split(arr(j, 4), " ")(2)) Exit For End If End If End If Next If kg = True Then brr(m, 6) = Format(brr(m, 3) - brr(m, 2), "hh:mm:ss") brr(m, 7) = Format(brr(m, 4) - brr(m, 3), "hh:mm:ss") End If i = i + (j - i) End If End If Next Sheet1.Range("A2").Resize(m, 7) = brrEnd Sub
点击加入群:Excel部落结识Excel大神学好Excel,效率成倍提高,薪水稳步增长,职位快速提升
每天一个源创技巧,如觉得有用,请点上面关注。更重要手机转发分享 |