• VBA_加班


    Sub 第一步_整理数据删除()
        Excel.Application.DisplayAlerts = False
        ' 自动删除第四行
        Rows(4).Select
        Selection.EntireRow.Delete
        '变量wb代表一个工作表,将这个变量声明;
        Dim wb As Workbook
        '将打开的表赋值给wb这个变量
        Set wb = Workbooks.Open("c:data钉钉-加班.xlsx")
        For L = Sheets(1).Range("a65536").End(xlUp).Row To 1 Step -1
            If Range("C" & L) = "已撤销" Then
                Range("C" & L).Select
                Selection.EntireRow.Delete
            End If
            
            If Range("D" & L) = "拒绝" Then
                Range("D" & L).Select
                Selection.EntireRow.Delete
            End If
        Next
        '将当前活动表格当中不需要的列全部删除;
        Range("A:A,B:B,C:C,D:D,E:E,F:F,G:G,I:I,K:K").Select
        Range("K1").Activate
        ActiveWindow.ScrollColumn = 2
        ActiveWindow.ScrollColumn = 3
        ActiveWindow.ScrollColumn = 4
        ActiveWindow.ScrollColumn = 5
        ActiveWindow.ScrollColumn = 6
        ActiveWindow.ScrollColumn = 7
        ActiveWindow.ScrollColumn = 8
        ActiveWindow.ScrollColumn = 9
        ActiveWindow.ScrollColumn = 10
        Range("A:A,B:B,C:C,D:D,E:E,F:F,G:G,I:I,K:K,L:L,M:M,N:N").Select
        Range("N1").Activate
        ActiveWindow.ScrollColumn = 9
        ActiveWindow.ScrollColumn = 8
        ActiveWindow.ScrollColumn = 7
        ActiveWindow.ScrollColumn = 6
        ActiveWindow.ScrollColumn = 7
        ActiveWindow.ScrollColumn = 8
        ActiveWindow.ScrollColumn = 9
        ActiveWindow.ScrollColumn = 10
        ActiveWindow.ScrollColumn = 11
        ActiveWindow.ScrollColumn = 12
        ActiveWindow.ScrollColumn = 13
        Range("A:A,B:B,C:C,D:D,E:E,F:F,G:G,I:I,K:K,L:L,M:M,N:N,O:O,R:R,S:S,T:T").Select
        Range("T1").Activate
        ActiveWindow.ScrollColumn = 14
        Range("A:A,B:B,C:C,D:D,E:E,F:F,G:G,I:I,K:K,L:L,M:M,N:N,O:O,R:R,S:S,T:T,V:V,W:W" _
                ).Select
        Range("W1").Activate
        Selection.Delete Shift:=xlToLeft
        ActiveWorkbook.Save
        '关闭表格
        wb.Close
        ' 恢复提醒
        Excel.Application.DisplayAlerts = True
        ' 复制表格到当前工作薄
        Set wb = Workbooks.Open("c:data钉钉-加班.xlsx")
        wb.Sheets(1).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
        
        MsgBox "已经将包含撤销和拒绝的行删除,并整理好数据复制到当前表格,请继续执行下一步"
    End Sub
    
    
    
    Sub 第二步_取值()
        Dim a As Integer
        For i = 2 To Range("a65535").End(xlUp).Row
            
            Sheets(1).Range("a" & i + 2) = Sheets(2).Range("a" & i)
            Sheets(1).Range("b" & i + 2) = Sheets(2).Range("b" & i)
            Sheets(1).Range("d" & i + 2) = Sheets(2).Range("c" & i)
            Sheets(1).Range("e" & i + 2) = Sheets(2).Range("d" & i)
            Sheets(1).Range("f" & i + 2) = Sheets(2).Range("e" & i)
            
        Next
        MsgBox "已经到到想要的数据,请继续执行第三步"
    End Sub
    
    Sub 加班_第三步自动展开并删除辅助数据()
        For i = 4 To Range("a65536").End(xlUp).Row
            k = DateValue(Range("e" & i)) - DateValue(Range("d" & i))
            If k > 1 Then
                Rows(i).Select
                With Selection.Interior
                    .PatternColorIndex = xlAutomatic
                    .Color = 65535
                    .TintAndShade = 0
                    .PatternTintAndShade = 0
                End With
            End If
        Next
        
        Sheets(1).Select
    
        Dim strStart, strEnd
        
        k = 2000
        For i = 4 To Range("a65535").End(xlUp).Row
            For j = 1 To DateValue(Range("e" & i)) - DateValue(Range("d" & i)) + 1
                If j = 1 Then
                    strStart = Split(Range("d" & i), " ")(1)
                Else
                    strStart = "08:30"
                End If
                
                If j = DateValue(Range("e" & i)) - DateValue(Range("d" & i)) + 1 Then
                    strEnd = Split(Range("e" & i), " ")(1)
                Else
                    strEnd = "17:30"
                End If
                Range("a" & i & ":c" & i).Copy Range("a" & k)
                Range("f" & i).Copy Range("f" & k)
                Range("d" & k) = Format(DateValue(Range("d" & i)) + j - 1, "yyyy-mm-dd ") & strStart
                Range("e" & k) = Format(DateValue(Range("d" & i)) + j - 1, "yyyy-mm-dd ") & strEnd
                k = k + 1
            Next
        Next
        Excel.Application.DisplayAlerts = False
        Rows("4:1999").Select
        Selection.Delete Shift:=xlUp
        Excel.Application.DisplayAlerts = True
        MsgBox "已经将跨天的数据展开,请重点关注标黄的行的加班小时数!!!"
    End Sub
    
    Sub 第四步_取年月日并删除辅助数据()
        Sheets(1).Select
        On Error Resume Next
        For i = 4 To Sheet1.Range("a65536").End(xlUp).Row
            Sheet1.Range("c" & i) = Split(Sheet1.Range("d" & i), " ")(0)
            Sheet1.Range("I" & i) = "加班费"
        Next
        
        Excel.Application.DisplayAlerts = False
        Sheets(2).Delete
        Excel.Application.DisplayAlerts = True
        
        
        MsgBox "第三列取到第四列的年月日,补偿方式统一为加班费,并删除第了辅助数据,至此,加班单已经处理完毕了,请别忘记处理加班类型!!!!!!"
    End Sub
    
    
    
    
    
  • 相关阅读:
    洛谷 P1525 关押罪犯(并查集|二分图判定&二分答案)
    洛谷 P1948 [USACO08JAN]Telephone Lines S(贪心+最短路)
    洛谷 P1315 观光公交(贪心+模拟)
    洛谷 P3258 [JLOI2014]松鼠的新家(树上差分)
    【NOIP2001】统计单词个数
    【洛谷习题】皇后游戏
    【洛谷习题】木棍加工
    【SDOI2008】仪仗队
    【洛谷习题】末日的传说
    【洛谷习题】又是毕业季I
  • 原文地址:https://www.cnblogs.com/yizhangheka/p/14592454.html
Copyright © 2020-2023  润新知