Office---Excel操作技巧使用正则表达式

在做数据性能统计的时候需要精确到ms级别,SecureCRT软件可以准确记录到时间戳至ms,方法如下:

Option--Session Options--Log File:

[%Y-%M-%D_%h:%m:%s.%t]

例如在每一行会添加如下时间信息:

2022-01-07_10:57:23.667

但是需要提取出时间信息:10:57:24.667

首先打开Excel的文件--选项--开发工具

Office---Excel操作技巧使用正则表达式_第1张图片

然后打开开发工具VB,在代码区输入Office---Excel操作技巧使用正则表达式_第2张图片
 

Sub testRegexp()
    Dim a, b, c
    Dim regexp As Object
    Dim d As String
    Set regexp = CreateObject("vbscript.regexp")
    With regexp
    .Global = True
    .IgnoreCase = True
    .Pattern = ".* .{2} \d{8} (\d{18}|\d{17}[xX])"
    End With
    For Each a In Range("D2:D4")
        Set b = regexp.Execute(a.Value)
        Rem b.Count
        If b.Count > 0 Then
            For Each c In b
                Rem SubMatches.Count
                If c.SubMatches.Count > 0 Then
                Rem vbCrLf
                   d = d + c.SubMatches(0) + vbCrLf
                End If
            Next c
        End If
        Worksheets("Sheet1").Cells(a.Row, a.Column + 1).Value = d
        d = ""
    Next a
End Sub

 这里需要注意.Pattern和Range,一个是正则表达式,从数据中提取出想要的数据格式

  .Pattern = ".* .{2} \d{8} (\d{18}|\d{17}[xX])"

一个是范围, 待提取数据的范围

For Each a In Range("D2:D4")

 这里的WorkSheet就是应用正则表达式的sheet页面,这里的a比较重要,就是待提取数据所在列,也就是Range的列

Worksheets("Sheet1").Cells(a.Row, a.Column + 1).Value = d

这个正则表达式需要网络上自己学习一下。

首先把数据导入到excel表格中,先把日志文件用Notepad++处理一下,然后如下方式导入数据,这里主语分隔符号和固定宽度,视情况而选择。分隔符都是英文下的分割符号。

Office---Excel操作技巧使用正则表达式_第3张图片

提取出的时间信息的单元格格式需要设置单元格格式为:hh:mm:ss.000,即10:57:24.667以及将其换算成数值的单元格格式为小数(2位)

Office---Excel操作技巧使用正则表达式_第4张图片

 Office---Excel操作技巧使用正则表达式_第5张图片

 然后使用公式如下:

=(MID(TEXT(D5,"hh:mm:ss.000"),1,2))*3600+(MID(TEXT(D5,"hh:mm:ss.000"),4,2))*60+(MID(TEXT(D4,"hh:mm:ss.000"),7,2))+(MID(TEXT(D4,"hh:mm:ss.000"),10,3))/1000

然后按下ctrl+鼠标到单元格右下角变为+号,下托复用格式即可。

你可能感兴趣的:(office,windows)