• vba处理excel


    #--------------------------------V1-------------------------------------#
    Sub test()
    With Sheets("Change Notice")
    totalRow = Application.CountA(.Range("A:A"))
    'MsgBox TotalRow
    startRow = 2
    For i = startRow To totalRow
    arr = Split(.Cells(i, "d").Text, Chr(10))
    
    arrTimeStart = Split(Format(.Cells(i, "b"), "yyyymmdd hhmmss"), " ")
    arrTimeEnd = Split(Format(.Cells(i, "c"), "yyyymmdd hhmmss"), " ")
    'MsgBox (Format(.Cells(i, "b"), "yyyymmdd hhmmss"))
    For j = 0 To UBound(arr)
        'Sheets("RESULT").Range("A65536").End(xlUp).Offset(1, 0).Value = .Cells(i, "A").Value
        Sheets("RESULT").Range("B65536").End(xlUp).Offset(1, 0).Value = arrTimeStart(0)
        Sheets("RESULT").Range("C65536").End(xlUp).Offset(1, 0).Value = arrTimeStart(1)
        Sheets("RESULT").Range("D65536").End(xlUp).Offset(1, 0).Value = arrTimeEnd(0)
        Sheets("RESULT").Range("E65536").End(xlUp).Offset(1, 0).Value = arrTimeEnd(1)
        Sheets("RESULT").Range("F65536").End(xlUp).Offset(1, 0).Value = arr(j)
        Sheets("RESULT").Range("G65536").End(xlUp).Offset(1, 0).Value = .Cells(i, "E").Value
        Sheets("RESULT").Range("H65536").End(xlUp).Offset(1, 0).Value = .Cells(i, "F").Value
        Sheets("RESULT").Range("I65536").End(xlUp).Offset(1, 0).Value = .Cells(i, "G").Value
    Next j
    Next i
    End With
    End Sub
    #--------------------------------V2-------------------------------------#
    Sub test()
    With Sheets("Change Notice")
    totalRow = Application.CountA(.Range("A:A"))
    'MsgBox TotalRow
    startRow = 2
    For i = startRow To totalRow
        'd列表示的是CI那一列,将其拆成一个数组
        arr = Split(.Cells(i, "d").Text, Chr(10))
        '初始化时间,变更号等信息
        
        arrTimeStart = Split(Format(.Cells(i, "b"), "yyyymmdd hhmmss"), " ") 'b列----开始时间
        arrTimeEnd = Split(Format(.Cells(i, "c"), "yyyymmdd hhmmss"), " ") 'c列---结束时间
        Sheets("RESULT").Range("A:E").NumberFormatLocal = "@"
        Sheets("RESULT").Range("A65536").End(xlUp).Offset(1, 0).Value = .Cells(i, "A").Value '赋值变更号
        Sheets("RESULT").Range("B65536").End(xlUp).Offset(1, 0).Value = arrTimeStart(0)
        Sheets("RESULT").Range("C65536").End(xlUp).Offset(1, 0).Value = arrTimeStart(1)
        Sheets("RESULT").Range("D65536").End(xlUp).Offset(1, 0).Value = arrTimeEnd(0)
        Sheets("RESULT").Range("E65536").End(xlUp).Offset(1, 0).Value = arrTimeEnd(1)
        'CI 名初始化为空
        host = ""
        For j = 0 To UBound(arr) '开始遍历CI数组
            LTrim (RTrim(arr(j))) '去除开头和末尾的空格
            '新增arr2 数组用处理空格 tab等键
            arr2 = Split(arr(j), " ")
            '如果数组不为空
            If (UBound(arr2) > 0) Then
                For k = 0 To UBound(arr2)
                    LTrim (RTrim(arr2(k)))
                    If (host = "" And arr2(k) <> "") Then '如果host是初值以及arr2第一个值不为空则直接赋值
                        host = arr2(j)
                    ElseIf (arr2(k) <> "") Then '否则拼接
                        host = host & "," & arr2(k)
                    End If
                Next k
            Else
                If (host = "" And arr(j) <> "") Then
                 host = arr(j)
                ElseIf (arr(j) <> "") Then
                    host = host & "," & arr(j)
                End If
            End If
        Next j
        '将处理完毕的host赋值给RESULT表
        Sheets("RESULT").Range("F65536").End(xlUp).Offset(1, 0).Value = host
    Next i
    End With
    End Sub
    
    Sub URL()
    With Sheets("Change Notice")
        totalRow = Application.CountA(.Range("A:A"))
        startRow = 2
        For i = startRow To totalRow
            'd列表示的是CI那一列,将其拆成一个数组
            arr = Split(.Cells(i, "f").Text, Chr(10))
            For j = 0 To UBound(arr)
                If (InStr(LCase(arr(j)), "http")) Then
                    arr(j) = Replace(arr(j), ";", "")
                    arr(j) = Replace(arr(j), "", "")
                    LTrim (RTrim(arr(j)))
                    MsgBox arr(j)
                    a = arr(j)
                End If
            Next j
        Next i
    End With
    End Sub
    
    
    #-------------------------------------V3-----------------------------#
    Sub test()
    With Sheets("Change Notice")
    
    Worksheets.Add().Name = "RESULT"
    totalRow = Application.CountA(.Range("A:A"))
    'MsgBox TotalRow
    startRow = 2
    For i = startRow To totalRow
        arr = Split(.Cells(i, "d").Text, Chr(10))
        arrURL = Split(.Cells(i, "f").Text, Chr(10))
        arrTimeStart = Split(Format(.Cells(i, "b"), "yyyymmdd hhmmss"), " ")
        arrTimeEnd = Split(Format(.Cells(i, "c"), "yyyymmdd hhmmss"), " ")
        Sheets("RESULT").Range("A:G").NumberFormatLocal = "@"
        URL = .Cells(i, "F").Text
        
        For j = 0 To UBound(arr)
            '变更号
            Sheets("RESULT").Range("B65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim((.Cells(i, "A").Value)))
            Sheets("RESULT").Range("B65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim((.Cells(i, "A").Value)))
            '开始日期
            Sheets("RESULT").Range("D65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrTimeStart(0)))
            Sheets("RESULT").Range("D65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrTimeStart(0)))
            '开始时间
            Sheets("RESULT").Range("E65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrTimeStart(1)))
            Sheets("RESULT").Range("E65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrTimeStart(1)))
            '结束日期
            Sheets("RESULT").Range("F65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrTimeEnd(0)))
            Sheets("RESULT").Range("F65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrTimeEnd(0)))
            '结束时间
            Sheets("RESULT").Range("G65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrTimeEnd(1)))
            Sheets("RESULT").Range("G65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrTimeEnd(1)))
            
            'CI
            Sheets("RESULT").Range("A65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arr(j)))
            Sheets("RESULT").Range("A65536").End(xlUp).Offset(1, 0).Value = "*" '用来屏蔽URL(当object字段里包含了)
            'URL
            Sheets("RESULT").Range("C65536").End(xlUp).Offset(1, 0).Value = "*"
            Sheets("RESULT").Range("C65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arr(j)))
    
        Next j
        If (InStr(LCase(URL), "http")) Then
            For k = 0 To UBound(arrURL)
                If (InStr(LCase(arrURL(k)), "http")) Then
                    arrURL(k) = Replace(arrURL(k), "", "")
                    'MsgBox (InStr(arrURL(k)))
                    arrURL(k) = Mid(arrURL(k), InStr(arrURL(k), "http"), Len(arrURL(k))) '去除开头的非法字符
                    
                    '变更号
                    Sheets("RESULT").Range("B65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(.Cells(i, "A").Value))
                    '开始日期
                    Sheets("RESULT").Range("D65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrTimeStart(0)))
                    '开始时间
                    Sheets("RESULT").Range("E65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrTimeStart(1)))
                    '结束日期
                    Sheets("RESULT").Range("F65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrTimeEnd(0)))
                    '结束时间
                    Sheets("RESULT").Range("G65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrTimeEnd(1)))
                    'CI
                    Sheets("RESULT").Range("A65536").End(xlUp).Offset(1, 0).Value = "*"
                    'URL
                    Sheets("RESULT").Range("C65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrURL(k)))
                End If
            Next k
        End If
    Next i
    End With
    End Sub
    #-----------------------------V4----------------------------------------------#
    '#--------------20160304 修复Host字段为空--------------------------------------#
    '#--------------20140304 修复Instr函数 不能判断0-----------------------------------#
    Sub test()
    With Sheets("Change Notice")
    Worksheets.Add().Name = "RESULT"
    totalRow = Application.CountA(.Range("A:A"))
    'MsgBox TotalRow
    startRow = 2
    Dim arrTimeStart() As String
    Dim arrTimeEnd() As String
    Dim arrURL() As String
    Dim temp As String
    Dim TEMPT As String
    For i = startRow To totalRow
        arr = Split(.Cells(i, "d").Text, Chr(10))
        arrURL = Split(.Cells(i, "f").Text, Chr(10))
        arrTimeStart = Split(Format(.Cells(i, "b"), "yyyymmdd hhmmss"), " ")
        arrTimeEnd = Split(Format(.Cells(i, "c"), "yyyymmdd hhmmss"), " ")
        Sheets("RESULT").Range("A:G").NumberFormatLocal = "@"
        URL = .Cells(i, "F").Text
        
        For j = 0 To UBound(arr)
    
            temp = arr(j)
            If (Len(temp) > 2) Then '去除为空的
                idnit = Init(.Cells(i, "A").Value, arrTimeStart(0), arrTimeStart(1), arrTimeEnd(0), arrTimeEnd(1), temp, "*") '设置Host 字段
                idnit = Init(.Cells(i, "A").Value, arrTimeStart(0), arrTimeStart(1), arrTimeEnd(0), arrTimeEnd(1), "*", temp) '设置URL(Object)字段
            End If
        Next j
        If (InStr(LCase(URL), "http")) Then
            For k = 0 To UBound(arrURL)
                If (InStr(LCase(arrURL(k)), "http")) Then
                    arrURL(k) = Replace(arrURL(k), "", "")
                    'MsgBox (InStr(arrURL(k)))
                    TEMPT = Mid(arrURL(k), (InStr(LCase(arrURL(k)), "http")), Len(arrURL(k))) '去除开头的非法字符 Mid 函数不能以0开头
                   idnit = Init(.Cells(i, "A").Value, arrTimeStart(0), arrTimeStart(1), arrTimeEnd(0), arrTimeEnd(1), "*", TEMPT) '设置Object 的Host
                End If
            Next k
        End If
    Next i
    End With
    End Sub
    '初始化函数
    Function Init(changeID As String, arrStart_0 As String, arrStart_1 As String, arrEnd_0 As String, arrEnd_1 As String, CI As String, URL As String)
        '变更号
        Sheets("RESULT").Range("B65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(changeID))
        '开始日期
        Sheets("RESULT").Range("D65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrStart_0))
        '开始时间
        Sheets("RESULT").Range("E65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrStart_1))
        '结束日期
        Sheets("RESULT").Range("F65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrEnd_0))
        '结束时间
        Sheets("RESULT").Range("G65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrEnd_1))
        'CI
        Sheets("RESULT").Range("A65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(CI))
        'URL
        Sheets("RESULT").Range("C65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(URL))
        Init = 0
    End Function
    ----------------------------------------------------------------V6---------------------------------------
    '#--------------20160304 修复Host字段为空--------------------------------------#
    '#--------------20140304 修复Instr函数 不能判断0-----------------------------------#
    '#--------------20160318 增加只对包含URL的变更做object处理----------------------#
    '#--------------20160318 修改为只对非网络类变更做object处理----------------------#
    Sub test()
    With Sheets("Change Notice")
    Worksheets.Add().Name = "RESULT"
    totalRow = Application.CountA(.Range("A:A"))
    'MsgBox TotalRow
    startRow = 2
    Dim arrTimeStart() As String
    Dim arrTimeEnd() As String
    Dim arrURL() As String
    Dim temp As String
    Dim TEMPT As String
    Dim containNetwork As String
    For i = startRow To totalRow
        arr = Split(.Cells(i, "d").Text, Chr(10))
        arrURL = Split(.Cells(i, "f").Text, Chr(10))
        arrTimeStart = Split(Format(.Cells(i, "b"), "yyyymmdd hhmmss"), " ")
        arrTimeEnd = Split(Format(.Cells(i, "c"), "yyyymmdd hhmmss"), " ")
        Sheets("RESULT").Range("A:G").NumberFormatLocal = "@"
        URL = .Cells(i, "F").Text
        containNetwork = .Cells(i, "G")
        For j = 0 To UBound(arr)
    
            temp = arr(j)
            If (Len(temp) > 2) Then '去除为空的
                idnit = Init(.Cells(i, "A").Value, arrTimeStart(0), arrTimeStart(1), arrTimeEnd(0), arrTimeEnd(1), temp, "*") '设置Host 字段
                '只有非网络的才设置Object
                If (containNetwork <> "网络") Then
                    idnit = Init(.Cells(i, "A").Value, arrTimeStart(0), arrTimeStart(1), arrTimeEnd(0), arrTimeEnd(1), "*", temp) '设置URL(Object)字段
                End If
            End If
        Next j
        If (InStr(LCase(URL), "http") > 0) Then
            For k = 0 To UBound(arrURL)
                If (InStr(LCase(arrURL(k)), "http") > 0) Then
                    arrURL(k) = Replace(arrURL(k), "", "")
                    TEMPT = Mid(arrURL(k), (InStr(LCase(arrURL(k)), "http")), Len(arrURL(k))) '去除开头的非法字符 Mid 函数 起始位置不能是0
                    idnit = Init(.Cells(i, "A").Value, arrTimeStart(0), arrTimeStart(1), arrTimeEnd(0), arrTimeEnd(1), "*", TEMPT) '设置Object 的Host
                End If
            Next k
        End If
    Next i
    End With
    End Sub
    '初始化函数
    Function Init(changeID As String, arrStart_0 As String, arrStart_1 As String, arrEnd_0 As String, arrEnd_1 As String, CI As String, URL As String)
        '变更号
        Sheets("RESULT").Range("B65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(changeID))
        '开始日期
        Sheets("RESULT").Range("D65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrStart_0))
        '开始时间
        Sheets("RESULT").Range("E65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrStart_1))
        '结束日期
        Sheets("RESULT").Range("F65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrEnd_0))
        '结束时间
        Sheets("RESULT").Range("G65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrEnd_1))
        'CI
        Sheets("RESULT").Range("A65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(CI))
        'URL
        Sheets("RESULT").Range("C65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(URL))
        Init = 0
    End Function
    
    #----------------------EOPS-------------------------------------------#
    Sub test()
    With Sheets("SQL Results")
    Worksheets.Add().Name = "RESULT"
    totalRow = Application.CountA(.Range("B:B"))
    startRow = 2
    Dim arrTimeStart() As String
    Dim arrTimeEnd() As String
    Dim arrURL() As String
    Dim temp As String
    Dim TEMPT As String
    Dim containNetwork As String
    For i = startRow To totalRow
        arr = Split(.Cells(i, "j").Text, ";")
        'arrURL = Split(.Cells(i, "f").Text, Chr(10))
        arrTimeStart = Split(Format(.Cells(i, "f"), "yyyymmdd hhmmss"), " ")
        arrTimeEnd = Split(Format(.Cells(i, "g"), "yyyymmdd hhmmss"), " ")
        Sheets("RESULT").Range("A:G").NumberFormatLocal = "@"
        For j = 0 To UBound(arr)
            temp = arr(j)
            If (Len(temp) > 2) Then '去除为空的
                idnit = Init(.Cells(i, "b").Value, arrTimeStart(0), arrTimeStart(1), arrTimeEnd(0), arrTimeEnd(1), temp, "*") '设置Host 字段
            End If
        Next j
        
    Next i
    End With
    End Sub
    '初始化函数
    Function Init(changeID As String, arrStart_0 As String, arrStart_1 As String, arrEnd_0 As String, arrEnd_1 As String, CI As String, URL As String)
        '变更号
        Sheets("RESULT").Range("B65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(changeID))
        '开始日期
        Sheets("RESULT").Range("D65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrStart_0))
        '开始时间
        Sheets("RESULT").Range("E65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrStart_1))
        '结束日期
        Sheets("RESULT").Range("F65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrEnd_0))
        '结束时间
        Sheets("RESULT").Range("G65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(arrEnd_1))
        'CI
        Sheets("RESULT").Range("A65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(CI))
        'URL
        Sheets("RESULT").Range("C65536").End(xlUp).Offset(1, 0).Value = LTrim(RTrim(URL))
        Init = 0
    End Function
  • 相关阅读:
    java 自定义线程池
    java 锁
    volatile相关内容
    消息驱动式微服务:Spring Cloud Stream & RabbitMQ
    JVM中的本机内存跟踪
    性能监控: SPF4J介绍
    Spring Batch 入门级示例教程
    使用 Spring Boot Actuator 构建 RESTful Web 应用
    回调“地狱”和反应模式
    Java动态规划
  • 原文地址:https://www.cnblogs.com/runningzz/p/6782845.html
Copyright © 2020-2023  润新知