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
原文地址:https://www.cnblogs.com/runningzz/p/6782845.html