• VBA的几个小Demo


    Merge Daily

    Sub MergeDaily_·ÏÆú()
    
    '¹Ø±ÕÆÁÄ»ÏÔʾÓ뱨¾¯
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    Dim newwork, oldwork As Workbook
    Dim rng As Range
    Dim i, m, n, x, y As Integer
    
    Set oldwork = ThisWorkbook
    
    '´ò¿ªÐÂÎļþ
    Filename = Application.GetOpenFilename("Excel Îļþ ,*.xls;*.xlsx")
    
    If Filename <> False Then
        Set newwork = Workbooks.Open(Filename)
    
        '¸´ÖÆÓÐÓÃÐÅÏ¢ÖÁDaily
        oldwork.Worksheets("raw_data").UsedRange.Clear
        m = newwork.Worksheets("RetestData").Rows(1).Find("ENG ID").Column
        newwork.Worksheets("RetestData").Columns(m).Copy
        '
        oldwork.Worksheets("raw_data").Range("A1").PasteSpecial Paste:=xlPasteValues
        
    
        
        'ɾ³ýÖظ´Ïî
        oldwork.Worksheets("raw_data").Columns(1).RemoveDuplicates Columns:=1, Header:=xlNo
        '
        newwork.Worksheets("StepID_OPID").UsedRange.Copy
        oldwork.Worksheets("raw_data").Range("B1").PasteSpecial Paste:=xlPasteValues
        
        
        '¸´ÖÆÓÐÓÃÐÅÏ¢ÖÁDaily_RetestData
        oldwork.Worksheets("RetestData").UsedRange.ClearContents
        newwork.Worksheets("RetestData").Columns(1).Copy
        oldwork.Worksheets("RetestData").Range("A1").PasteSpecial Paste:=xlPasteValues
        newwork.Worksheets("RetestData").Columns("H:N").Copy
        oldwork.Worksheets("RetestData").Range("B1").PasteSpecial Paste:=xlPasteValues
        i = oldwork.Worksheets("RetestData").Range("A1").CurrentRegion.Rows.Count
        With oldwork.Worksheets("RetestData")
            .Range("I1") = "OPER CODE1"
            .Range("J1") = "ENG CODE1"
            .Range("K1") = "OPER NEED REPAIR"
            .Range("L1") = "ENG NEED REPAIR"
            .Range("M1") = "NEED REPAIR MISS"
            .Range("N1") = "OPER CODE2"
            .Range("O1") = "ENG CODE2"
            .Range("I2").FormulaR1C1 = "=RIGHT(RC[-6],3)"
            .Range("J2").FormulaR1C1 = "=RIGHT(RC[-5],3)"
            .Range("K2").Formula = "=IFERROR(VLOOKUP(LEFT(A2,4)&C2,¸½¼þ!P:Q,2,0),""PASS"")"
            .Range("L2").Formula = "=IFERROR(VLOOKUP(LEFT(A2,4)&E2,¸½¼þ!P:Q,2,0),""PASS"")"
            .Range("M2").Formula = "=IF(K2=L2,0,1)"
            .Range("N2").FormulaR1C1 = "=MID(RC[-11],4,2)"
            .Range("O2").FormulaR1C1 = "=MID(RC[-10],4,2)"
            .Range("I2:O2").AutoFill Destination:=.Range("I2").Resize(i - 1, 7)
        End With
    
        '½«Îı¾±£´æµÄÊý×Öת»»ÎªÊý×Ö
        For n = 1 To 6
            oldwork.Worksheets("raw_data").Columns(n).TextToColumns DataType:=xlDelimited, ConsecutiveDelimiter:=True, Space:=False
        Next
        newwork.Close savechanges:=False
    Else
        MsgBox ("ÄúûÓÐÑ¡ÔñÎļþ")
    End If
    
    'Èç¹û´æÔÚ·ÇÆ·ÖÊ×éÈËÔ±¸´ÅУ¬ÔòÍ˳ö³ÌÐò
    If Worksheets("¸½¼þ").Range("C1") <> Worksheets("¸½¼þ").Range("D1") Then
        MsgBox ("´æÔÚ·ÇÆ·ÖÊ×éÈËÔ±¸´ÅÐ »ò Æ·ÖÊ×éÈËÔ±Ôö¼Óµ«Î´¸üи½¼þ" & vbCrLf & vbCrLf & "                        ÇëÊÖ¶¯Â¼ÈëÊý¾Ý")
        Exit Sub
    End If
    
    '
    For x = 2 To 4
    
        oldwork.Worksheets(x).Activate
        y = oldwork.Worksheets(x).Range("C2").CurrentRegion.Rows.Count
        
        'Òþ²ØûÓÐ׼ȷÂʵİ༶Êý¾Ý
        If Worksheets(x).Cells(y, 3) <> "" Then
            Worksheets(x).Visible = True
        Else
            Worksheets(x).Visible = False
        End If
        
        
        'Òþ²ØûÓÐ׼ȷÂÊÊý¾ÝµÄOP
        For i = 2 To y
            If Cells(i, 3).Value <> "" Then
                Rows(i).Hidden = False
            Else
                Rows(i).Hidden = True
            End If
        Next
        
        '±ê¼ÇĤ²ã
        For i = 2 To y - 2
            Cells(1, 3).ClearContents
            If Cells(i, 5) <> "" Then
                Cells(1, 3) = Cells(i, 5)
                Exit For
            End If
        Next
        
        
        '±ê¼Ç×îºóÒ»¸öÊý¾Ý±êǩΪÂÌÉ«¼Ó´Ö
        oldwork.Worksheets(x).ChartObjects(1).Activate
        ActiveChart.SeriesCollection(1).DataLabels.Delete
        ActiveChart.SeriesCollection(1).ApplyDataLabels
        y = ActiveChart.SeriesCollection(1).Points.Count
        If y <> 0 Then
            For i = 1 To y
                ActiveChart.SeriesCollection(1).Points(i).DataLabel.Select
                With Selection.Format.TextFrame2.TextRange.Font
                    If i <> y Then
                        .Fill.ForeColor.RGB = RGB(0, 0, 0)
                        .Bold = msoFalse
                    Else
                        .Fill.ForeColor.RGB = RGB(0, 176, 80)
                        .Bold = msoTrue
                    End If
                End With
             Next
         End If
        
    Next
    '
    ThisWorkbook.Worksheets(1).Activate
    
    '´ò¿ªÆÁÄ»ÏÔʾ
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    
    End Sub
    Sub End_Daily_New()
    
    '¹Ø±ÕÆÁÄ»ÏÔʾÓ뱨¾¯
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    Dim str, class_name, str1, str2, s1, s2 As String, rng1, rng2, rng As Range
    Dim i, j, m, n, x, y, wid, hig As Integer
    
    str = Left(ThisWorkbook.Name, 2) & "/" & Mid(ThisWorkbook.Name, 4, 2)
    
    'Ô³õÇå³ýÉÏÔÂÊý¾Ý
    If Mid(ThisWorkbook.Name, 4, 2) = "01" Then
    
        n = Worksheets("²é×¼ÂÊBy ¸öÈË").Range("C2").CurrentRegion.Rows.Count - 2
        Worksheets("²é×¼ÂÊBy ¸öÈË").Range("E3").Resize(n, 31).ClearContents
        n = Worksheets("²éÈ«ÂÊBy ¸öÈË").Range("C2").CurrentRegion.Rows.Count - 2
        Worksheets("²éÈ«ÂÊBy ¸öÈË").Range("E3").Resize(n, 31).ClearContents
    End If
    
    
    'ÖÜÒ»Çå³ýTrendÊý¾Ý
    If Application.WorksheetFunction.Text(str, "ddd") = "Mon" Then
       Worksheets("׼ȷÂÊTrend by°à±ð").Rows(2).Find("Mon").Offset(1, 0).Resize(4, 7).ClearContents
       Worksheets("׼ȷÂÊTrend by°à±ð").Rows(9).Find("Mon").Offset(1, 0).Resize(4, 7).ClearContents
    End If
         
    'ɾ³ýÊ×Ò³ËùÓÐͼƬ
    Dim shp As Shape
    For Each shp In ThisWorkbook.Worksheets(1).Shapes
        If shp.Type <> msoFormControl And shp.Type <> msoChart Then shp.Delete
    Next
    
    s1 = Application.WorksheetFunction.Text(str, "ddd")
    Set rng1 = Worksheets("׼ȷÂÊTrend by°à±ð").Rows(2).Find(s1)
    Set rng2 = Worksheets("׼ȷÂÊTrend by°à±ð").Rows(9).Find(s1)
    ThisWorkbook.Worksheets(1).Range("A1").Value = "BP ÖÆÔ첿 ¼ì²â¿Æ ׼ȷÂÊ Daily Report£¨" & str & "£©"
    
    '»ñÈ¡µ±ÌìÆ·ÖÊ×éÈËÔ±Ãûµ¥
    str1 = ""
    For i = 2 To 20
        If Worksheets("¸½¼þ").Cells(i, 2) <> "" Then
            'str1 = Worksheets("¸½¼þ").Cells(i, 2).Value
            str1 = str1 & "&" & Worksheets("¸½¼þ").Cells(i, 2).Value
        End If
    Next
    str1 = Right(str1, Len(str1) - 1)
    
    ''''''''''''''''''''''''''''''''''
    n = 0
    For x = 2 To 4
    
        If ThisWorkbook.Worksheets(x).Visible <> False Then
            
            n = n + 1
            'ÇóÈ¡¸Ã°àÈËÊý
            m = ThisWorkbook.Worksheets(x).Range("A1").CurrentRegion.Rows.Count - 2
            '׼ȷÂÊTrend by °à±ð
            rng1.Offset(x - 1, 0).Value = ThisWorkbook.Worksheets(x).Cells(Worksheets(x).Range("A1").CurrentRegion.Rows.Count, 3)
            rng2.Offset(x - 1, 0).Value = ThisWorkbook.Worksheets(x).Cells(Worksheets(x).Range("A1").CurrentRegion.Rows.Count, 4)
            '׼ȷÂÊTrend by OP
            s2 = Application.WorksheetFunction.Text(str, "d")
            'Set rng1 = ThisWorkbook.Worksheets(x + 4).Rows(1).Find(s2).Offset(2, 0)
            'ThisWorkbook.Worksheets(x).Range("C2").Resize(m, 1).Copy
            'rng2.PasteSpecial Paste:=xlPasteValues
            class_name = Left(Worksheets(x).Name, 2)
            
            i = ThisWorkbook.Worksheets("²é×¼ÂÊBy ¸öÈË").Columns(4).Find(class_name).Row
            j = ThisWorkbook.Worksheets("²é×¼ÂÊBy ¸öÈË").Rows(1).Find(s2).Column
            ThisWorkbook.Worksheets("²é×¼ÂÊBy ¸öÈË").Cells(i, j) = ThisWorkbook.Worksheets(x).Range("F1").Value
            ThisWorkbook.Worksheets(x).Range("C2").Resize(m, 1).Copy
            ThisWorkbook.Worksheets("²é×¼ÂÊBy ¸öÈË").Cells(i + 1, j).PasteSpecial Paste:=xlPasteValues
            
            i = ThisWorkbook.Worksheets("²éÈ«ÂÊBy ¸öÈË").Columns(4).Find(class_name).Row
            j = ThisWorkbook.Worksheets("²éÈ«ÂÊBy ¸öÈË").Rows(1).Find(s2).Column
            ThisWorkbook.Worksheets("²éÈ«ÂÊBy ¸öÈË").Cells(i, j) = ThisWorkbook.Worksheets(x).Range("F1").Value
            ThisWorkbook.Worksheets(x).Range("D2").Resize(m, 1).Copy
            ThisWorkbook.Worksheets("²éÈ«ÂÊBy ¸öÈË").Cells(i + 1, j).PasteSpecial Paste:=xlPasteValues
            
            ThisWorkbook.Worksheets(1).Rows("12:14").EntireRow.Hidden = True
             
            If n <= 3 Then
                If n = 3 Then
                    ThisWorkbook.Worksheets(1).Rows("12:14").EntireRow.Hidden = False
                End If
                
                ThisWorkbook.Worksheets(1).Cells(3 * n + 3, 1).Value = n & "¡¢" & ThisWorkbook.Worksheets(x).Name & "¡¾Êä³öÈËÔ±£º" & str1 & "¡¿"
            
                '¸´ÖÆͼƬÖÁ»ã×Ü
                ThisWorkbook.Worksheets(x).Range("A1").Resize(m + 2, 15).CopyPicture
                ThisWorkbook.Worksheets(1).Activate
                'ThisWorkbook.Worksheets(1).Cells(7 + 3 * (n - 1), 1).RowHeight = ThisWorkbook.Worksheets(x).Range("A1").Height * (ThisWorkbook.Worksheets(x).Range("G2") + 2)
                ThisWorkbook.Worksheets(1).Cells(3 * n + 4, 1).Select
                wid = Selection.Width
                hig = Selection.Height
                ThisWorkbook.Worksheets(1).Paste Destination:=Selection
                With Selection.ShapeRange
                    .LockAspectRatio = msoTrue
                    .Width = wid - 2
                    '.Height = hig - 3
                    .IncrementLeft 1.2
                    .IncrementTop 1.5
                    'MsgBox .Height + 2
                    If .Height + 2 > 400 Then
                        .Height = 400
                        ThisWorkbook.Worksheets(1).Rows(3 * n + 4).RowHeight = 402
                    Else
                        ThisWorkbook.Worksheets(1).Rows(3 * n + 4).RowHeight = .Height + 2
                    End If
                End With
                
                'ÈËÔ±ÄÜÁ¦·ÖÎö
                With ThisWorkbook.Worksheets(x)
                    str2 = "°à×é/ÈËÔ±·ÖÎö£º" & Chr(10) & "¢Ù " & Left(.Name, 2) & "°à×é¡°" & .Range("I1").Value & "¡±£¬²é×¼ÂÊ" & .Range("I7") & "£¬²éÈ«ÂÊ" & .Range("I8") & "£»" & Chr(10) & "¢Ú " & .Range("H3") & "ÒÔÉÏ" & .Range("I3") & "ÈË£¬ÈËÔ±Õ¼±È" & .Range("I9") & "£»" & Chr(10) & "    " & .Range("H4") & "ÒÔÉÏ" & .Range("I4") & "ÈË£¬ÈËÔ±Õ¼±È" & .Range("I10") & "£»" & Chr(10) & "¢Û " & .Range("H5") & .Range("I5") & "Óë" & .Range("H6") & .Range("I6") & "ÈËÔ±£¬Òѽ»½Ó" & Left(.Name, 2) & "°à×鳤½øÐÐÕë¶ÔÐÔÅàѵ£»"
                    Worksheets(1).Cells(3 * n + 5, 1).Value = str2
                    Call Font_Style(Worksheets(1).Cells(3 * n + 5, 1))
                End With
               
    ''''''''''''''''''''''''
                
            End If
            
        End If
        
    Next
    '''''''''''''''''''''''''''''''''''''
    rng1.Offset(4, 0).FormulaR1C1 = "=AVERAGE(R[-3]C:R[-1]C)"
    rng2.Offset(4, 0).FormulaR1C1 = "=AVERAGE(R[-3]C:R[-1]C)"
    
    Set rng = ThisWorkbook.Worksheets(5).Rows(2).Find("Sun").Offset(4, 0)
    ThisWorkbook.Worksheets(5).Range("A1").Resize(rng.Row, rng.Column).CopyPicture
    ThisWorkbook.Worksheets(1).Range("A3").Select
    wid = Selection.Width
    hig = Selection.Height
    ThisWorkbook.Worksheets(1).Paste Destination:=Selection
    With Selection.ShapeRange
        .LockAspectRatio = msoFalse
        .Width = wid - 2
        .Height = hig - 3
        .IncrementLeft 1.2
        .IncrementTop 1.5
    End With
    Set rng = ThisWorkbook.Worksheets(5).Rows(9).Find("Sun").Offset(4, 0)
    ThisWorkbook.Worksheets(5).Range("A8").Resize(6, rng.Column).CopyPicture
    ThisWorkbook.Worksheets(1).Range("A5").Select
    wid = Selection.Width
    hig = Selection.Height
    ThisWorkbook.Worksheets(1).Paste Destination:=Selection
    With Selection.ShapeRange
        .LockAspectRatio = msoFalse
        .Width = wid - 2
        .Height = hig - 3
        .IncrementLeft 1.2
        .IncrementTop 1.5
    End With
            
            
    '´ò¿ªÆÁÄ»ÏÔʾ
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    
    End Sub

    End_Daily

    Sub End_Daily_·ÏÆú()
    
    '¹Ø±ÕÆÁÄ»ÏÔʾÓ뱨¾¯
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    Dim str, str1, str2, s1, s2 As String, rng1, rng2, rng As Range
    Dim i, m, n, x, y, wid, hig As Integer
    
    str = Left(ThisWorkbook.Name, 2) & "/" & Mid(ThisWorkbook.Name, 4, 2)
    
    'Ô³õÇå³ýÉÏÔÂÊý¾Ý
    If Mid(ThisWorkbook.Name, 4, 2) = "01" Then
    For x = 6 To 8
        n = Worksheets(x).Range("C2").CurrentRegion.Rows.Count - 2
        Worksheets(x).Range("D3").Resize(n, 31).ClearContents
    Next
    End If
    
    
    'ÖÜÒ»Çå³ýTrendÊý¾Ý
    If Application.WorksheetFunction.Text(str, "ddd") = "Mon" Then
       Worksheets(5).Rows(2).Find("Mon").Offset(1, 0).Resize(4, 7).ClearContents
    End If
    
    
    'ɾ³ýÊ×Ò³ËùÓÐͼƬ
    Dim shp As Shape
    For Each shp In ThisWorkbook.Worksheets(1).Shapes
        If shp.Type <> msoFormControl And shp.Type <> msoChart Then shp.Delete
    Next
    
    s1 = Application.WorksheetFunction.Text(str, "ddd")
    Set rng1 = Worksheets(5).Rows(2).Find(s1)
    ThisWorkbook.Worksheets(1).Range("A1").Value = "BP ÖÆÔ첿 ¼ì²â¿Æ ׼ȷÂÊ Daily Report£¨" & str & "£©"
    
    '»ñÈ¡µ±ÌìÆ·ÖÊ×éÈËÔ±Ãûµ¥
    str1 = ""
    For i = 1 To 20
        If Worksheets("¸½¼þ").Cells(i, 2) <> "" Then
            'str1 = Worksheets("¸½¼þ").Cells(i, 2).Value
            str1 = str1 & "&" & Worksheets("¸½¼þ").Cells(i, 2).Value
        End If
    Next
    str1 = Right(str1, Len(str1) - 1)
    
    n = 0
    For x = 2 To 4
    
        If ThisWorkbook.Worksheets(x).Visible <> False Then
            
            n = n + 1
            'ÇóÈ¡¸Ã°àÈËÊý
            m = ThisWorkbook.Worksheets(x).Range("A1").CurrentRegion.Rows.Count - 2
            '׼ȷÂÊTrend by °à±ð
            rng1.Offset(x - 1, 0).Value = ThisWorkbook.Worksheets(x).Cells(Worksheets(x).Range("A1").CurrentRegion.Rows.Count, 3)
            '׼ȷÂÊTrend by OP
            s2 = Application.WorksheetFunction.Text(str, "d")
            Set rng2 = ThisWorkbook.Worksheets(x + 4).Rows(1).Find(s2).Offset(2, 0)
            ThisWorkbook.Worksheets(x).Range("C2").Resize(m, 1).Copy
            rng2.PasteSpecial Paste:=xlPasteValues
            
            If n <= 2 Then
            
                ThisWorkbook.Worksheets(1).Cells(7 + 3 * (n - 1) - 1, 1).Value = n & "¡¢" & ThisWorkbook.Worksheets(x).Name & "¡¾Êä³öÈËÔ±£º" & str1 & "¡¿"
            
                '¸´ÖÆͼƬÖÁ»ã×Ü
                ThisWorkbook.Worksheets(x).Range("A1").Resize(m + 2, 15).CopyPicture
                ThisWorkbook.Worksheets(1).Activate
                'ThisWorkbook.Worksheets(1).Cells(7 + 3 * (n - 1), 1).RowHeight = ThisWorkbook.Worksheets(x).Range("A1").Height * (ThisWorkbook.Worksheets(x).Range("G2") + 2)
                ThisWorkbook.Worksheets(1).Cells(7 + 3 * (n - 1), 1).Select
                wid = Selection.Width
                hig = Selection.Height
                ThisWorkbook.Worksheets(1).Paste Destination:=Selection
                With Selection.ShapeRange
                    .LockAspectRatio = msoTrue
                    .Width = wid - 2
                    '.Height = hig - 3
                    .IncrementLeft 1.2
                    .IncrementTop 1.5
                    'MsgBox .Height + 2
                    If .Height + 2 > 400 Then
                        .Height = 400
                        ThisWorkbook.Worksheets(1).Rows(7 + 3 * (n - 1)).RowHeight = 402
                    Else
                        ThisWorkbook.Worksheets(1).Rows(7 + 3 * (n - 1)).RowHeight = .Height + 2
                    End If
                End With
                
                'ÈËÔ±ÄÜÁ¦·ÖÎö
                'm = ThisWorkbook.Worksheets(3).Rows(3).CurrentRegion.Rows.Count
                With ThisWorkbook.Worksheets(x)
                    str2 = "°à×é/ÈËÔ±·ÖÎö£º" & Chr(10) & "¢Ù" & Left(.Name, 2) & "°à×é¡°" & .Range("C1").Value & "¡±Æ½¾ù׼ȷÂÊ" & .Range("I2") & "£»" & Chr(10) & "¢Ú 90%׼ȷÂÊÒÔÉÏ" & .Range("G1").Value & "ÈË,ÈËÔ±Õ¼±È" & .Range("G3").Value & "£»" & Chr(10) & "¢Û ׼ȷÂÊ<" & .Range("I1") & "ÈËÔ±£¬Òѽ»½Ó" & Left(.Name, 2) & "°à×鳤½øÐÐÕë¶ÔÐÔÅàѵ£»"
                    Worksheets(1).Cells(7 + 3 * (n - 1) + 1, 1).Value = str2
                End With
    
    
                Worksheets(1).Cells(7 + 3 * (n - 1) + 1, 1).Activate
                ActiveCell.Characters(Start:=16, Length:=8).Font.Color = -65536
                With ActiveCell.Characters(Start:=30, Length:=6).Font
                     .FontStyle = "¼Ó´Ö"
                     .Color = -11489280
                End With
                ActiveCell.Characters(Start:=39, Length:=7).Font.Color = -65536
                ActiveCell.Characters(Start:=48, Length:=2).Font.Color = -65536
                With ActiveCell.Characters(Start:=56, Length:=6).Font
                    .FontStyle = "¼Ó´Ö"
                    .Color = -11489280
                End With
                ActiveCell.Characters(Start:=65, Length:=11).Font.Color = -16776961
    ''''''''''''''''''''''''
                
            End If
            
        End If
        
    Next
    rng1.Offset(4, 0).FormulaR1C1 = "=AVERAGE(R[-3]C:R[-1]C)"
    Set rng = ThisWorkbook.Worksheets(5).Rows(2).Find("Sun").Offset(4, 0)
    ThisWorkbook.Worksheets(5).Range("A1").Resize(rng.Row, rng.Column).CopyPicture
    ThisWorkbook.Worksheets(1).Range("A5").Select
    wid = Selection.Width
    hig = Selection.Height
    ThisWorkbook.Worksheets(1).Paste Destination:=Selection
    With Selection.ShapeRange
        .LockAspectRatio = msoFalse
        .Width = wid - 2
        .Height = hig - 3
        .IncrementLeft 1.2
        .IncrementTop 1.5
    End With
    
    ThisWorkbook.Worksheets(1).Activate
            
    '´ò¿ªÆÁÄ»ÏÔʾ
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    
    End Sub
    Sub End_Daily_New()
    
    '¹Ø±ÕÆÁÄ»ÏÔʾÓ뱨¾¯
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    Dim str, class_name, str1, str2, s1, s2 As String, rng1, rng2, rng As Range
    Dim i, j, m, n, x, y, wid, hig As Integer
    
    str = Left(ThisWorkbook.Name, 2) & "/" & Mid(ThisWorkbook.Name, 4, 2)
    
    'Ô³õÇå³ýÉÏÔÂÊý¾Ý
    If Mid(ThisWorkbook.Name, 4, 2) = "01" Then
    
        n = Worksheets("²é×¼ÂÊBy ¸öÈË").Range("C2").CurrentRegion.Rows.Count - 2
        Worksheets("²é×¼ÂÊBy ¸öÈË").Range("E3").Resize(n, 31).ClearContents
        n = Worksheets("²éÈ«ÂÊBy ¸öÈË").Range("C2").CurrentRegion.Rows.Count - 2
        Worksheets("²éÈ«ÂÊBy ¸öÈË").Range("E3").Resize(n, 31).ClearContents
    End If
    
    
    'ÖÜÒ»Çå³ýTrendÊý¾Ý
    If Application.WorksheetFunction.Text(str, "ddd") = "Mon" Then
       Worksheets("׼ȷÂÊTrend by°à±ð").Rows(2).Find("Mon").Offset(1, 0).Resize(4, 7).ClearContents
       Worksheets("׼ȷÂÊTrend by°à±ð").Rows(9).Find("Mon").Offset(1, 0).Resize(4, 7).ClearContents
    End If
         
    'ɾ³ýÊ×Ò³ËùÓÐͼƬ
    Dim shp As Shape
    For Each shp In ThisWorkbook.Worksheets(1).Shapes
        If shp.Type <> msoFormControl And shp.Type <> msoChart Then shp.Delete
    Next
    
    s1 = Application.WorksheetFunction.Text(str, "ddd")
    Set rng1 = Worksheets("׼ȷÂÊTrend by°à±ð").Rows(2).Find(s1)
    Set rng2 = Worksheets("׼ȷÂÊTrend by°à±ð").Rows(9).Find(s1)
    ThisWorkbook.Worksheets(1).Range("A1").Value = "BP ÖÆÔ첿 ¼ì²â¿Æ ׼ȷÂÊ Daily Report£¨" & str & "£©"
    
    '»ñÈ¡µ±ÌìÆ·ÖÊ×éÈËÔ±Ãûµ¥
    str1 = ""
    For i = 2 To 20
        If Worksheets("¸½¼þ").Cells(i, 2) <> "" Then
            'str1 = Worksheets("¸½¼þ").Cells(i, 2).Value
            str1 = str1 & "&" & Worksheets("¸½¼þ").Cells(i, 2).Value
        End If
    Next
    str1 = Right(str1, Len(str1) - 1)
    
    ''''''''''''''''''''''''''''''''''
    n = 0
    For x = 2 To 4
    
        If ThisWorkbook.Worksheets(x).Visible <> False Then
            
            n = n + 1
            'ÇóÈ¡¸Ã°àÈËÊý
            m = ThisWorkbook.Worksheets(x).Range("A1").CurrentRegion.Rows.Count - 2
            '׼ȷÂÊTrend by °à±ð
            rng1.Offset(x - 1, 0).Value = ThisWorkbook.Worksheets(x).Cells(Worksheets(x).Range("A1").CurrentRegion.Rows.Count, 3)
            rng2.Offset(x - 1, 0).Value = ThisWorkbook.Worksheets(x).Cells(Worksheets(x).Range("A1").CurrentRegion.Rows.Count, 4)
            '׼ȷÂÊTrend by OP
            s2 = Application.WorksheetFunction.Text(str, "d")
            'Set rng1 = ThisWorkbook.Worksheets(x + 4).Rows(1).Find(s2).Offset(2, 0)
            'ThisWorkbook.Worksheets(x).Range("C2").Resize(m, 1).Copy
            'rng2.PasteSpecial Paste:=xlPasteValues
            class_name = Left(Worksheets(x).Name, 2)
            
            i = ThisWorkbook.Worksheets("²é×¼ÂÊBy ¸öÈË").Columns(4).Find(class_name).Row
            j = ThisWorkbook.Worksheets("²é×¼ÂÊBy ¸öÈË").Rows(1).Find(s2).Column
            ThisWorkbook.Worksheets("²é×¼ÂÊBy ¸öÈË").Cells(i, j) = ThisWorkbook.Worksheets(x).Range("F1").Value
            ThisWorkbook.Worksheets(x).Range("C2").Resize(m, 1).Copy
            ThisWorkbook.Worksheets("²é×¼ÂÊBy ¸öÈË").Cells(i + 1, j).PasteSpecial Paste:=xlPasteValues
            
            i = ThisWorkbook.Worksheets("²éÈ«ÂÊBy ¸öÈË").Columns(4).Find(class_name).Row
            j = ThisWorkbook.Worksheets("²éÈ«ÂÊBy ¸öÈË").Rows(1).Find(s2).Column
            ThisWorkbook.Worksheets("²éÈ«ÂÊBy ¸öÈË").Cells(i, j) = ThisWorkbook.Worksheets(x).Range("F1").Value
            ThisWorkbook.Worksheets(x).Range("D2").Resize(m, 1).Copy
            ThisWorkbook.Worksheets("²éÈ«ÂÊBy ¸öÈË").Cells(i + 1, j).PasteSpecial Paste:=xlPasteValues
            
            ThisWorkbook.Worksheets(1).Rows("12:14").EntireRow.Hidden = True
             
            If n <= 3 Then
                If n = 3 Then
                    ThisWorkbook.Worksheets(1).Rows("12:14").EntireRow.Hidden = False
                End If
                
                ThisWorkbook.Worksheets(1).Cells(3 * n + 3, 1).Value = n & "¡¢" & ThisWorkbook.Worksheets(x).Name & "¡¾Êä³öÈËÔ±£º" & str1 & "¡¿"
            
                '¸´ÖÆͼƬÖÁ»ã×Ü
                ThisWorkbook.Worksheets(x).Range("A1").Resize(m + 2, 15).CopyPicture
                ThisWorkbook.Worksheets(1).Activate
                'ThisWorkbook.Worksheets(1).Cells(7 + 3 * (n - 1), 1).RowHeight = ThisWorkbook.Worksheets(x).Range("A1").Height * (ThisWorkbook.Worksheets(x).Range("G2") + 2)
                ThisWorkbook.Worksheets(1).Cells(3 * n + 4, 1).Select
                wid = Selection.Width
                hig = Selection.Height
                ThisWorkbook.Worksheets(1).Paste Destination:=Selection
                With Selection.ShapeRange
                    .LockAspectRatio = msoTrue
                    .Width = wid - 2
                    '.Height = hig - 3
                    .IncrementLeft 1.2
                    .IncrementTop 1.5
                    'MsgBox .Height + 2
                    If .Height + 2 > 400 Then
                        .Height = 400
                        ThisWorkbook.Worksheets(1).Rows(3 * n + 4).RowHeight = 402
                    Else
                        ThisWorkbook.Worksheets(1).Rows(3 * n + 4).RowHeight = .Height + 2
                    End If
                End With
                
                'ÈËÔ±ÄÜÁ¦·ÖÎö
                With ThisWorkbook.Worksheets(x)
                    str2 = "°à×é/ÈËÔ±·ÖÎö£º" & Chr(10) & "¢Ù " & Left(.Name, 2) & "°à×é¡°" & .Range("I1").Value & "¡±£¬²é×¼ÂÊ" & .Range("I7") & "£¬²éÈ«ÂÊ" & .Range("I8") & "£»" & Chr(10) & "¢Ú " & .Range("H3") & "ÒÔÉÏ" & .Range("I3") & "ÈË£¬ÈËÔ±Õ¼±È" & .Range("I9") & "£»" & Chr(10) & "    " & .Range("H4") & "ÒÔÉÏ" & .Range("I4") & "ÈË£¬ÈËÔ±Õ¼±È" & .Range("I10") & "£»" & Chr(10) & "¢Û " & .Range("H5") & .Range("I5") & "Óë" & .Range("H6") & .Range("I6") & "ÈËÔ±£¬Òѽ»½Ó" & Left(.Name, 2) & "°à×鳤½øÐÐÕë¶ÔÐÔÅàѵ£»"
                    Worksheets(1).Cells(3 * n + 5, 1).Value = str2
                    Call Font_Style(Worksheets(1).Cells(3 * n + 5, 1))
                End With
               
    ''''''''''''''''''''''''
                
            End If
            
        End If
        
    Next
    '''''''''''''''''''''''''''''''''''''
    rng1.Offset(4, 0).FormulaR1C1 = "=AVERAGE(R[-3]C:R[-1]C)"
    rng2.Offset(4, 0).FormulaR1C1 = "=AVERAGE(R[-3]C:R[-1]C)"
    
    Set rng = ThisWorkbook.Worksheets(5).Rows(2).Find("Sun").Offset(4, 0)
    ThisWorkbook.Worksheets(5).Range("A1").Resize(rng.Row, rng.Column).CopyPicture
    ThisWorkbook.Worksheets(1).Range("A3").Select
    wid = Selection.Width
    hig = Selection.Height
    ThisWorkbook.Worksheets(1).Paste Destination:=Selection
    With Selection.ShapeRange
        .LockAspectRatio = msoFalse
        .Width = wid - 2
        .Height = hig - 3
        .IncrementLeft 1.2
        .IncrementTop 1.5
    End With
    Set rng = ThisWorkbook.Worksheets(5).Rows(9).Find("Sun").Offset(4, 0)
    ThisWorkbook.Worksheets(5).Range("A8").Resize(6, rng.Column).CopyPicture
    ThisWorkbook.Worksheets(1).Range("A5").Select
    wid = Selection.Width
    hig = Selection.Height
    ThisWorkbook.Worksheets(1).Paste Destination:=Selection
    With Selection.ShapeRange
        .LockAspectRatio = msoFalse
        .Width = wid - 2
        .Height = hig - 3
        .IncrementLeft 1.2
        .IncrementTop 1.5
    End With
            
            
    '´ò¿ªÆÁÄ»ÏÔʾ
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    
    End Sub
    
    

    KPI_check

    Sub ¼¨Ð§ºË¶Ô()
        
        Dim newwork, oldwork As Workbook
        Dim repair_Count, i, j, x1, x2, y1, y2 As Integer
        Dim x, y As Integer
            
        Set oldwork = ThisWorkbook
        
        Filename = Application.GetOpenFilename("Excel Îļþ ,*.xls;*.xlsx")
        
        If Filename <> False Then
        
            Set newwork = Workbooks.Open(Filename)
            repair_Count = Application.WorksheetFunction.CountIf(newwork.Worksheets("׼ȷÂÊ").Range("E:E"), "Repair")
            flag = newwork.Worksheets("׼ȷÂÊ").Columns("E").Find("Repair").Row
            
            For x = flag To flag + repair_Count - 1
                For y = 1 To 31
                    x1 = x
                    y1 = newwork.Worksheets("׼ȷÂÊ").Rows(2).Find(y).Column
                    
                    
                    x2 = oldwork.Worksheets("ÖÜ׼ȷÂÊ").Columns(2).Find(newwork.Worksheets("׼ȷÂÊ").Cells(x1, 2)).Row
                    y2 = oldwork.Worksheets("ÖÜ׼ȷÂÊ").Rows(1).Find(y).Column
                    
                    If newwork.Worksheets("׼ȷÂÊ").Cells(x1, y1) <> oldwork.Worksheets("ÖÜ׼ȷÂÊ").Cells(x2, y2) Then
                        With oldwork.Worksheets("ÖÜ׼ȷÂÊ").Cells(x2, y2)
                                .FormatConditions.Delete
                                .Font.Color = -16776961
                                .Font.Bold = True
                        End With
                    End If
                Next
            Next
            
            newwork.Close savechanges:=False
        End If
        
    End Sub

    delete&add op

    Sub Delete_OP_ID()
        Dim i As Integer
        Dim str, class As String
        Dim rng1, rng2, rng3 As Range
        Application.ScreenUpdating = False
        i = 3
        Do While ThisWorkbook.Worksheets("¸½¼þ").Cells(i, 21) <> ""
            str = ThisWorkbook.Worksheets("¸½¼þ").Cells(i, 21).Value
            class = ThisWorkbook.Worksheets("¸½¼þ").Cells(i, 20).Value
            Set rng1 = ThisWorkbook.Worksheets(class + "׼ȷÂÊ").Columns(1).Find(str)
            Set rng2 = ThisWorkbook.Worksheets("²é×¼ÂÊBy ¸öÈË").Columns(2).Find(str)
            Set rng3 = ThisWorkbook.Worksheets("²éÈ«ÂÊBy ¸öÈË").Columns(2).Find(str)
            If rng1 Is Nothing Or rng2 Is Nothing Then
                MsgBox (str + " No Found")
                Exit Sub
            Else
                rng1.Resize(1, 6).Delete Shift:=xlUp
                rng2.EntireRow.Delete Shift:=xlUp
                rng3.EntireRow.Delete Shift:=xlUp
            End If
            ThisWorkbook.Worksheets("¸½¼þ").Cells(i, 20).Resize(1, 3).Delete Shift:=xlUp
            'i = i + 1
        Loop
        ThisWorkbook.Worksheets("¸½¼þ").Activate
        Application.ScreenUpdating = True
    End Sub
    Sub Add_OP_ID()
        Dim i As Integer
        Dim str, class As String
        Dim rng1, rng2, rng3 As Range
        Application.ScreenUpdating = False
        i = 3
        Do While ThisWorkbook.Worksheets("¸½¼þ").Cells(i, 25) <> ""
            str = ThisWorkbook.Worksheets("¸½¼þ").Cells(i, 25).Value
            class = ThisWorkbook.Worksheets("¸½¼þ").Cells(i, 24).Value
            Set rng1 = ThisWorkbook.Worksheets(class + "׼ȷÂÊ").Columns(1).Find(str)
            Set rng2 = ThisWorkbook.Worksheets("²é×¼ÂÊBy ¸öÈË").Columns(2).Find(str)
            If rng1 Is Nothing Or rng2 Is Nothing Then
                'Set rng1 = ThisWorkbook.Worksheets(class + "׼ȷÂÊ").Columns(1).End(xlDown)
                Set rng1 = ThisWorkbook.Worksheets(class + "׼ȷÂÊ").Range("A3")
                Set rng2 = ThisWorkbook.Worksheets("²é×¼ÂÊBy ¸öÈË").Columns(4).Find(class).Offset(2, 0)
                Set rng3 = ThisWorkbook.Worksheets("²éÈ«ÂÊBy ¸öÈË").Columns(4).Find(class).Offset(2, 0)
    
                'ThisWorkbook.Worksheets(class + "׼ȷÂÊ").Rows(rng1.Row).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                rng1.Resize(1, 6).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                ThisWorkbook.Worksheets("²é×¼ÂÊBy ¸öÈË").Rows(rng2.Row).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                ThisWorkbook.Worksheets("²éÈ«ÂÊBy ¸öÈË").Rows(rng3.Row).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                
                ThisWorkbook.Worksheets("¸½¼þ").Cells(i, 25).Resize(1, 2).Copy
                rng1.Offset(-1, 0).PasteSpecial Paste:=xlPasteValues
                rng2.Offset(-1, -2).PasteSpecial Paste:=xlPasteValues
                rng2.Offset(-1, 0) = class
                rng3.Offset(-1, -2).PasteSpecial Paste:=xlPasteValues
                rng3.Offset(-1, 0) = class
                'MsgBox (rng2.Offset(-2, 33).Address)
                
                rng1.Offset(-2, 2).Resize(1, 4).AutoFill Destination:=rng1.Offset(-2, 2).Resize(2, 4), Type:=xlFillDefault
                rng2.Offset(-2, 32).AutoFill Destination:=rng2.Offset(-2, 32).Resize(2, 1), Type:=xlFillDefault
                rng3.Offset(-2, 32).AutoFill Destination:=rng3.Offset(-2, 32).Resize(2, 1), Type:=xlFillDefault
            Else
                MsgBox (CStr(str) + " Is Exist")
                Exit Sub
            End If
            ThisWorkbook.Worksheets("¸½¼þ").Cells(i, 24).Resize(1, 3).Delete Shift:=xlUp
            'i = i + 1
        Loop
        ThisWorkbook.Worksheets("¸½¼þ").Activate
        Application.ScreenUpdating = True
    End Sub
    
    Sub picture()
        Selection.ShapeRange.LockAspectRatio = msoFalse
        Selection.ShapeRange.Height = 127.5590551181
        Selection.ShapeRange.Width = 141.7322834646
    End Sub

    label_change

    Sub DataLabels(x)
        
        Dim i, y As Integer
    
        Worksheets(2).ChartObjects(1).Activate
        ActiveChart.SeriesCollection(1).DataLabels.Delete
        ActiveChart.SeriesCollection(1).ApplyDataLabels
        y = ActiveChart.SeriesCollection(1).Points.Count
        If y <> 0 Then
            For i = 1 To y
                ActiveChart.SeriesCollection(1).Points(i).DataLabel.Select
                With Selection.Format.TextFrame2.TextRange.Font
                    'If i <> y Then
                        .Fill.ForeColor.RGB = RGB(0, 0, 0)
                        .Bold = msoFalse
                    'Else
                        '.Fill.ForeColor.RGB = RGB(0, 176, 80)
                        '.Bold = msoTrue
                    'End If
                End With
             Next
         End If
    
        ActiveChart.SeriesCollection(2).DataLabels.Delete
        ActiveChart.SeriesCollection(2).ApplyDataLabels
        ActiveChart.SeriesCollection(2).DataLabels.Select
        ActiveChart.SetElement (msoElementDataLabelInsideBase)
        y = ActiveChart.SeriesCollection(2).Points.Count
        If y <> 0 Then
            For i = 1 To y
                ActiveChart.SeriesCollection(2).Points(i).DataLabel.Select
                With Selection.Format.TextFrame2.TextRange.Font
                    'If i <> y Then
                        .Fill.ForeColor.RGB = RGB(0, 0, 0)
                        .Bold = msoFalse
                    'Else
                        '.Fill.ForeColor.RGB = RGB(0, 176, 80)
                        '.Bold = msoTrue
                    'End If
                End With
             Next
         End If
         
    
    End Sub
  • 相关阅读:
    【JVM】模板解释器--如何根据字节码生成汇编码?
    你会swap吗,按值传递还是按引用?
    你了解实时计算吗?
    Hadoop的Server及其线程模型分析
    机会
    storm如何分配任务和负载均衡?
    storm基础框架分析
    storm如何保证at least once语义?
    学习笔记:The Log(我所读过的最好的一篇分布式技术文章)
    学习笔记:Twitter核心数据类库团队的Hadoop优化经验
  • 原文地址:https://www.cnblogs.com/taoyucheng/p/10558623.html
Copyright © 2020-2023  润新知