VBA的几个小Demo_2
MergeData
Sub MergeData() 'ºÏ²¢A¡¢B¡¢C°àMiss Dim cc As FileDialog '´ò¿ª¶Ô»°´°Ñ¡ÔñÏàÓ¦Îļþ Set cc = Application.FileDialog(msoFileDialogFilePicker) Dim newwork As Workbook Set newwork = ThisWorkbook '¹Ø±ÕÆÁĻˢРApplication.ScreenUpdating = False With cc If .Show = -1 Then Dim vrtSelectedItem As Variant Dim tempwbrow, xrow As Integer, rng As Range For Each vrtSelectedItem In .SelectedItems Dim tempwb As Workbook Set tempwb = Workbooks.Open(vrtSelectedItem) '¹Ø±Õ¸öÈËÒþ˽±£»¤ tempwb.RemovePersonalInformation = False 'ɾ³ýSummaryµÄÄÚÈݲ¢¸´ÖÆ xrow = newwork.Worksheets("Summary").Range("A1").CurrentRegion.Rows.Count newwork.Worksheets("Summary").Range("A1").Resize(xrow, 5).Delete tempwbrow = tempwb.Worksheets("Summary").Range("A1").CurrentRegion.Rows.Count tempwb.Worksheets("Summary").Range("A1").Resize(tempwbrow, 5).Copy newwork.Worksheets("Summary").Range("A1") 'ɾ³ýMissµÄÄÚÈݲ¢¸´ÖÆ If xrow <> 1 Then newwork.Worksheets("Miss").Shapes.SelectAll Selection.Delete newwork.Worksheets("Miss").Range("A1").Resize(xrow, 25).Delete tempwb.Worksheets("Miss").Unprotect tempwbrow = tempwb.Worksheets("Miss").Range("A1").CurrentRegion.Rows.Count tempwb.Worksheets("Miss").Range("A1").Resize(tempwbrow, 25).Copy newwork.Worksheets("Miss").Range("A1") Else tempwb.Worksheets("Miss").Unprotect tempwbrow = tempwb.Worksheets("Miss").Range("A1").CurrentRegion.Rows.Count tempwb.Worksheets("Miss").Range("A1").Resize(tempwbrow, 25).Copy newwork.Worksheets("Miss").Range("A1") End If 'ÐÞ¸ÄMissµÚÒ»ÁÐÓÉÎı¾ÖÁÊý×Ö¸ñʽ newwork.Worksheets("Miss").Columns(1).TextToColumns DataType:=xlDelimited, consecutiveDelimiter:=True, Space:=False 'Ð޸ıí¸ñ¿í¶È newwork.Worksheets("Miss").Rows.RowHeight = 75 newwork.Worksheets("Miss").Rows(1).RowHeight = 20 tempwb.Close savechanges:=False Next vrtSelectedItem End If End With Set cc = Nothing '¼¤»î¡°ÈËÔ±Missͳ¼Æ¡±¹¤×÷±í newwork.Worksheets("ÈËÔ±Missͳ¼Æ").Activate 'Ë¢ÐÂËùÓÐÊý¾Ý 'ActiveWorkbook.RefreshAll '¹â±êÒƶ¯ÖÁA1µ¥Ôª¸ñ 'newwork.Worksheets("ÈËÔ±Missͳ¼Æ").Range("A1").Select 'Òþ²ØÎÞ׼ȷÂÊÈËÔ±£¨ÎÞάÐÞµãÊý£© xrow = newwork.Worksheets("ÈËÔ±Missͳ¼Æ").Range("F1").CurrentRegion.Rows.Count For Each rng In Range("D1").Resize(xrow, 1) If rng.Value < 100 Then 'Òþ²Ø"Total QTY"Ϊ0µÄÐÐ rng.EntireRow.Hidden = True Else 'ÏÔʾ"Total QTY"²»Îª0µÄÐÐ rng.EntireRow.Hidden = False End If Next rng 'Òþ²Ø°à¼¶ÎÞάÐÞµãÊýµÄ±íÍ·£¬Ç°Ò»¸öµ¥Ôª¸ñΪ¸÷°à×ÜάÐÞµãÊýµÄµ¥Ôª¸ñ£¬ºóÒ»µ¥Ôª¸ñΪ¸÷°à¶ÔÓ¦µÄ±íÍ· Dim A_rng, B_rng, C_rng As Range Set A_rng = ThisWorkbook.Worksheets("ÈËÔ±Missͳ¼Æ").Columns(2).Find("A°à") Set B_rng = ThisWorkbook.Worksheets("ÈËÔ±Missͳ¼Æ").Columns(2).Find("B°à") Set C_rng = ThisWorkbook.Worksheets("ÈËÔ±Missͳ¼Æ").Columns(2).Find("C°à") ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' If A_rng.Offset(0, 2).Value < 10 Then Range("D1").EntireRow.Hidden = True If B_rng.Offset(0, 2).Value < 10 Then A_rng.Offset(1, 0).EntireRow.Hidden = True If C_rng.Offset(0, 2).Value < 10 Then B_rng.Offset(1, 0).EntireRow.Hidden = True '´ò¿ªÆÁĻˢРApplication.ScreenUpdating = True End Sub
WeekDaily
Sub WeekDaily(): Dim i As Integer, n As Range, x As Range Dim str, today, day, month, end_month As String Application.ScreenUpdating = flase '''''''''''''''''''''''''±ê¼ÇÐÇÆÚ'''''''''''''''''''''''''' today = Left(ThisWorkbook.Name, 2) & "/" & Mid(ThisWorkbook.Name, 3, 2) str = Application.WorksheetFunction.Text(today, "ddd") day = Application.WorksheetFunction.Text(today, "d") month = Application.WorksheetFunction.Text(today, "mmm") end_month = Application.WorksheetFunction.Text(Application.WorksheetFunction.EoMonth(today, 0), "mm/dd") ''''''''''''''''´¦ÀíÖÜÒ»Êý¾ÝÇ°£¬Çå³ýÉÏÖÜÊý¾Ý''''''''''''''' If str = "Mon" Then ThisWorkbook.Worksheets("Missͳ¼Æ").Rows(2).Find("Mon").Offset(1, 0).Resize(4, 7).ClearContents 'i = ThisWorkbook.Worksheets("ÖÜ׼ȷÂÊ").Columns(1).Find("Week").CurrentRegion.Rows.Count 'ThisWorkbook.Worksheets("ÖÜ׼ȷÂÊ").Columns(1).Find("Week").Offset(2, 3).Resize(i - 2, 14).ClearContents End If ''''''''''''''''´¦Àí1ºÅÊý¾ÝÇ°£¬Çå³ýÉÏÖÜÊý¾Ý''''''''''''''' If day = "1" Then i = ThisWorkbook.Worksheets("ÖÜ׼ȷÂÊ").Rows(1).Find("1").CurrentRegion.Rows.Count ThisWorkbook.Worksheets("ÖÜ׼ȷÂÊ").Rows(1).Find("1").Offset(1, 0).Resize(i - 1, 31).ClearContents 'ThisWorkbook.Worksheets("ÖÜ׼ȷÂÊ").Range("B1") = month End If ''''''''''''''''''''¸´ÖÆ׼ȷÂÊÖÁTrend''''''''''''''''''''''' Dim rng(3) As Range Set rng(1) = ThisWorkbook.Worksheets("ÈËÔ±Missͳ¼Æ").Columns(2).Find("A°à") Set rng(2) = ThisWorkbook.Worksheets("ÈËÔ±Missͳ¼Æ").Columns(2).Find("B°à") Set rng(3) = ThisWorkbook.Worksheets("ÈËÔ±Missͳ¼Æ").Columns(2).Find("C°à") ThisWorkbook.Worksheets("Missͳ¼Æ").Rows(2).Find(str).Offset(1, 0).Resize(4, 1).ClearContents For i = 1 To 3 If rng(i).Offset(0, 2).Value >= 100 Then ThisWorkbook.Worksheets("Missͳ¼Æ").Rows(2).Find(str).Offset(i, 0) = rng(i).Offset(0, 4).Value End If Next ThisWorkbook.Worksheets("Missͳ¼Æ").Rows(2).Find(str).Offset(4, 0).FormulaR1C1 = "=AVERAGE(R[-3]C:R[-1]C)" ''''''''''''''''''''ÈÕ׼ȷÂʸ´ÖÆÖÁÖÜ׼ȷÂÊ'''''''''''''''''' i = ThisWorkbook.Worksheets("ÈËÔ±Missͳ¼Æ").Range("A1").CurrentRegion.Rows.Count ThisWorkbook.Worksheets("ÈËÔ±Missͳ¼Æ").Range("F1").Resize(i, 1).Copy ThisWorkbook.Worksheets("ÖÜ׼ȷÂÊ").Rows(1).Find(day).Offset(1, 0).PasteSpecial Paste:=xlPasteValues '''''''''''''''''''''''ÔÂ׼ȷÂʸ´ÖÆÖÁ¸÷ÔÂ'''''''''''''''''''' If today = end_month Then If month = "Jan" Then i = ThisWorkbook.Worksheets("ÖÜ׼ȷÂÊ").Rows(1).Find("Jan").CurrentRegion.Rows.Count ThisWorkbook.Worksheets("ÖÜ׼ȷÂÊ").Rows(1).Find("Jan").Offset(1, 0).Resize(i - 1, 12).ClearContents End If i = ThisWorkbook.Worksheets("ÖÜ׼ȷÂÊ").Rows(1).Find("AVE").CurrentRegion.Rows.Count - 1 ThisWorkbook.Worksheets("ÖÜ׼ȷÂÊ").Rows(1).Find("AVE").Offset(1, 0).Resize(i, 1).Copy ThisWorkbook.Worksheets("ÖÜ׼ȷÂÊ").Rows(1).Find(month).Offset(1, 0).PasteSpecial Paste:=xlPasteValues End If ''''''''''''''''''''''QTY¸´ÖÆÖÁÖÜ׼ȷÂÊ'''''''''''''''''''''' 'i = ThisWorkbook.Worksheets("ÈËÔ±Missͳ¼Æ").Range("A1").CurrentRegion.Rows.Count 'ThisWorkbook.Worksheets("ÈËÔ±Missͳ¼Æ").Range("D1").Resize(i, 2).Copy 'ThisWorkbook.Worksheets("ÖÜ׼ȷÂÊ").Rows(ThisWorkbook.Worksheets("ÖÜ׼ȷÂÊ").Columns(1).Find("Week").Row).Find(str).Offset(1, 0).PasteSpecial Paste:=xlPasteValues '''''''''''''''ÖÜÈÕ¸´ÖÆÖÜƽ¾ù׼ȷÂÊÖÁ׼ȷÂÊͳ¼Æ±í''''''''''''' 'If str = "Sun" Then 'i = ThisWorkbook.Worksheets("ÖÜ׼ȷÂÊ").Columns(1).Find("Week").CurrentRegion.Rows.Count - 1 'ThisWorkbook.Worksheets("ÖÜ׼ȷÂÊ").Columns(1).Find("Week").Offset(1, 19).Resize(i, 1).Copy 'Set x = ThisWorkbook.Worksheets("ÖÜ׼ȷÂÊ").Range("A2") 'Do While x <> "" 'Set x = x.Offset(0, 1) 'Loop 'x.PasteSpecial Paste:=xlPasteValues 'End If ''''''''''''''''''¸Ä±äÊý¾ÝchartÑÕÉ«''''''''''''''''''''''''''' Dim m, y As Integer For i = 1 To 3 ThisWorkbook.Worksheets("ÈËÔ±Missͳ¼Æ").ChartObjects(i).Activate If ActiveChart.SeriesCollection.Count <> 0 Then ActiveChart.SeriesCollection(1).DataLabels.Delete ActiveChart.SeriesCollection(1).ApplyDataLabels y = ActiveChart.SeriesCollection(1).Points.Count For m = 1 To y ThisWorkbook.Worksheets("ÈËÔ±Missͳ¼Æ").ChartObjects(i).Activate ActiveChart.SeriesCollection(1).Points(m).DataLabel.Select If m <> y Then With Selection.Format.TextFrame2.TextRange.Font .Fill.ForeColor.RGB = RGB(0, 0, 0) .Bold = msoFlase End With Else With Selection.Format.TextFrame2.TextRange.Font .Fill.ForeColor.RGB = RGB(0, 176, 80) .Bold = msoTrue End With End If Next End If Next '''''''''''''''''''''''''''´ò¿ªÆÁÄ»¸üÐÂ'''''''''''''''''''''''''''''''''' Application.ScreenUpdating = flase ''''''''''''''''''''''''''END''''''''''''''''''''''''''''''''''' End Sub
End_Daily
Sub End_Daily() '¸´ÖÆͼ±íÖÁ¡±»ã×Ü¡°²¢ð¤ÌùΪͼƬ Dim r, g As Range, x, y As Integer Dim str, layer, Miss_OP, Miss_Layer As String Dim shp As Shape Dim m, wid, hig As Integer '''''''''''''''''''''''''´ò¿ªÆÁÄ»ÏÔʾ''''''''''''''''''''' Application.ScreenUpdating = False '''''''''''''''''''''''''±ê¼ÇÈÕÆÚ''''''''''''''''''''''''' str = Application.WorksheetFunction.Text(Left(ThisWorkbook.Name, 2) & "/" & Mid(ThisWorkbook.Name, 3, 2), "mm/dd") '''''''''''''''''''''' ±ê¼Ç¸´ÅÐĤ²ã'''''''''''''''''''''' Set r = ThisWorkbook.Worksheets("Missͳ¼Æ").Rows(2).Find("Total QTY") layer = "" r.Offset(1, 2).Resize(5, 1).ClearContents For i = 1 To 5 If r.Offset(i, 0) > 10 Then layer = layer & r.Offset(i, -1) & "¡¢" r.Offset(i, 2).FormulaR1C1 = "= 1- RC[-1]/RC[-2]" End If Next If layer <> "" Then layer = Left(layer, Len(layer) - 1) End If '''''''''''''''''''''''''Ð޸ıíÍ·'''''''''''''''''''''''''' ThisWorkbook.Worksheets("»ã×Ü").Range("A2").Value = "BP ÖÆÔ첿 ¼ì²â¿Æ Repair Miss Daily Report£¨" & str & "£©" ''''''''''''''''''''''' Ð޸ĸ´ÅÐĤ²ã'''''''''''''''''''''''''' ThisWorkbook.Worksheets("»ã×Ü").Range("A9").Value = "Èý¡¢×¼È·ÂÊÊä³ö¡¾¸´ÅÐĤ²ã£º" & layer & "¡¿" ''''''''''''''''''''''¼¤»î»ã×ܹ¤×÷±í''''''''''''''''''''''' ThisWorkbook.Worksheets("»ã×Ü").Activate '''''''''''''''''''''ɾ³ý"»ã×Ü"ÖÐÎÞÓÃͼƬ''''''''''''''''' For Each shp In Worksheets("»ã×Ü").Shapes If shp.Type <> msoChart And shp.Type <> msoFormControl Then shp.Delete Next '''''''''''''''''''¸´ÖÆ "Miss ͳ¼Æ"ÖÁÊ×Ò³"''''''''''''''''' Set r = ThisWorkbook.Worksheets("Missͳ¼Æ").Rows(2).Find("Sun").Offset(4, 0) ThisWorkbook.Worksheets("Missͳ¼Æ").Range("A1").Resize(r.Row, r.Column).CopyPicture ThisWorkbook.Worksheets("»ã×Ü").Range("A5").Select wid = Selection.Width hig = Selection.Height ThisWorkbook.Worksheets("»ã×Ü").Paste Destination:=Worksheets("»ã×Ü").Range("A5") With Selection.ShapeRange .LockAspectRatio = msoFalse .Height = hig - 2 .Width = wid - 2 .IncrementLeft 1.5 .IncrementTop 1.5 End With ''''''''''''''''''¸´ÖÆ "ÈËÔ±Missͳ¼Æ"ÖÁÊ×Ò³"'''''''''''''''' Dim rng(3) As Range Set rng(1) = ThisWorkbook.Worksheets("ÈËÔ±Missͳ¼Æ").Columns(2).Find("A°à") Set rng(2) = ThisWorkbook.Worksheets("ÈËÔ±Missͳ¼Æ").Columns(2).Find("B°à") Set rng(3) = ThisWorkbook.Worksheets("ÈËÔ±Missͳ¼Æ").Columns(2).Find("C°à") x = 0 For i = 1 To 3 If rng(i).EntireRow.Hidden = 0 And rng(i).Offset(0, 2).Value >= 100 Then x = x + 1 m = 0 '''''''''''''''''''''''''''Ð޸ıíÍ·''''''''''''''''''''''''''''''''' ThisWorkbook.Worksheets("»ã×Ü").Cells(10 + 4 * (x - 1), 1).Value = x & "¡¢" & rng(i) & "׼ȷÂÊ" '''''''''''''''''''''''''''ͼƬ¸´ÖÆ''''''''''''''''''''''''''''''''' If i <> 1 Then m = rng(i).Row - rng(i - 1).Row Else m = rng(i).Row End If rng(i).Offset(-1 * (m - 1), -1).Resize(m, 13).CopyPicture ThisWorkbook.Worksheets("»ã×Ü").Cells(11 + 4 * (x - 1), 1).RowHeight = rng(i).Height * rng(i).Offset(0, -1) ThisWorkbook.Worksheets("»ã×Ü").Cells(11 + 4 * (x - 1), 1).Select wid = Selection.Width hig = Selection.Height ThisWorkbook.Worksheets("»ã×Ü").Paste Destination:=Worksheets("»ã×Ü").Cells(11 + 4 * (x - 1), 1) With Selection.ShapeRange .LockAspectRatio = msoFalse .Width = wid - 2 .Height = hig - 2 .IncrementLeft 1.2 .IncrementTop 1.5 End With Application.CutCopyMode = False '''''''''''''''''''''''''°à×é/ÈËÔ±ÄÜÁ¦·ÖÎö'''''''''''''''''''''''''''' Dim row_OPmiss, p_OPmiss, qty_OPmiss As Integer, rng_OPmiss As Range '''''''''''''''''''''''''ˢи½¼þÊý¾Ý͸ÊÓ±í'''''''''''''''''''''''''' Worksheets("¸½¼þ").PivotTables("Êý¾Ý͸ÊÓ±í1").PivotCache.Refresh row_OPmiss = ThisWorkbook.Worksheets("¸½¼þ").Range("A1").CurrentRegion.Rows.Count Miss_OP = "" qty_OPmiss = 0 For Each rng_OPmiss In rng(i).Offset(-1 * (m - 2), 3).Resize(m - 2, 1) If rng_OPmiss.Value > 0 Then qty_OPmiss = qty_OPmiss + 1 'MsgBox rng_OPmiss.Offset(0, -3).Value Miss_OP = Miss_OP & rng_OPmiss.Offset(0, -2) & "MissΪ" For p_OPmiss = 1 To row_OPmiss 'MsgBox ThisWorkbook.Worksheets("¸½¼þ").Cells(p_OPmiss, 1).Value If ThisWorkbook.Worksheets("¸½¼þ").Cells(p_OPmiss, 1).Value = rng_OPmiss.Offset(0, -3).Value Then If ThisWorkbook.Worksheets("¸½¼þ").Cells(p_OPmiss, 2).Value <> "GA2¿×Remainδ°µµã»¯" Then Miss_OP = Miss_OP & Left(ThisWorkbook.Worksheets("¸½¼þ").Cells(p_OPmiss, 3), 3) & " " & ThisWorkbook.Worksheets("¸½¼þ").Cells(p_OPmiss, 2).Value & "£»" Else Miss_OP = Miss_OP & ThisWorkbook.Worksheets("¸½¼þ").Cells(p_OPmiss, 2).Value & "£»" End If End If Next Miss_OP = Miss_OP & Chr(10) End If Next If Miss_OP <> "" Then ThisWorkbook.Worksheets("»ã×Ü").Cells(13 + 4 * (x - 1), 1).Value = Miss_OP ThisWorkbook.Worksheets("»ã×Ü").Cells(13 + 4 * (x - 1), 1).RowHeight = 17 * qty_OPmiss Else ThisWorkbook.Worksheets("»ã×Ü").Cells(13 + 4 * (x - 1), 1).Value = "ÎÞ ;" ThisWorkbook.Worksheets("»ã×Ü").Cells(13 + 4 * (x - 1), 1).RowHeight = 16 End If End If Next '''''''''''''''''''''''¸ß·¢Miss·ÖÎö'''''''''''''''''''''''' ThisWorkbook.Worksheets("»ã×Ü").Range("A19").Resize(1, 8).ClearContents x = ThisWorkbook.Worksheets("Missͳ¼Æ").Rows(2).Find("Rank").CurrentRegion.Rows.Count - 1 For i = 1 To 4 For Each r In ThisWorkbook.Worksheets("Missͳ¼Æ").Rows(2).Find("Rank").Resize(x, 1) If r = i And r.Offset(0, -1).Value > 0 Then ThisWorkbook.Worksheets("»ã×Ü").Cells(19, 2 * (i - 1) + 1) = r.Offset(0, -2) With ThisWorkbook.Worksheets("Miss") m = .Rows(1).Find("Description").Column .Columns(m).Find(r.Offset(0, -2)).Offset(0, -5).Resize(1, 2).Copy ThisWorkbook.Worksheets("»ã×Ü").Cells(20, 2 * (i - 1) + 1) End With Exit For End If Next Next '''''''''''''''''''''''Çå³ýͼƬÇøÓò¸ñʽ''''''''''''''''''''' 'ThisWorkbook.Worksheets("»ã×Ü").Range("A20:H20").Interior.ThemeColor = xlThemeColorDark1 ThisWorkbook.Worksheets("»ã×Ü").Range("A20:H20").Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone Selection.Borders(xlEdgeLeft).LineStyle = xlNone Selection.Borders(xlEdgeTop).LineStyle = xlNone Selection.Borders(xlEdgeBottom).LineStyle = xlNone Selection.Borders(xlEdgeRight).LineStyle = xlNone Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone With Selection.Interior .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorDark1 .TintAndShade = 0 .PatternTintAndShade = 0 End With ''''''''''''''''''''''''´ò¿ªÆÁÄ»ÏÔʾ'''''''''''''''''''''''' Application.ScreenUpdating = True End Sub
J0_Delete
Sub J0_Delete() Dim qty_Miss, i, col As Integer Dim rng As Range Dim str As String qty_Miss = ThisWorkbook.Worksheets("Miss").Range("A1").CurrentRegion.Rows.Count With ThisWorkbook.Worksheets("Miss") col = .Rows(1).Find("Description").Column str = "" For i = 2 To qty_Miss If .Cells(i, col).Value = "½ÌÓý" Then Set rng = ThisWorkbook.Worksheets("ÖÜ׼ȷÂÊ").Columns(2).Find(.Cells(i, 1).Value) If rng Is Nothing Then str = str + " " + CStr(.Cells(i, 1)) .Cells(i, 1).Value = "OP_ID " + CStr(.Cells(i, 1)) Else: .Cells(i, 1).Value = rng.Offset(0, 1) End If .Cells(i, 2).ClearContents .Cells(i, col - 1).ClearContents .Cells(i, col).ClearContents End If Next If str <> "" Then MsgBox (str + "δÕÒµ½") End If End With End Sub
Delete&Add_OP_ID
Sub Delete_OP_ID() Dim i As Integer Dim str As String Dim rng1, rang2 As Range Application.ScreenUpdating = False i = 3 Do While ThisWorkbook.Worksheets("¸½¼þ").Cells(i, 13) <> "" str = ThisWorkbook.Worksheets("¸½¼þ").Cells(i, 13).Value Set rng1 = ThisWorkbook.Worksheets("ÖÜ׼ȷÂÊ").Columns(2).Find(str) Set rng2 = ThisWorkbook.Worksheets("ÈËÔ±Missͳ¼Æ").Columns(2).Find(str) If rng1 Is Nothing Or rng2 Is Nothing Then MsgBox (str + " No Found") Exit Sub Else rng1.EntireRow.Delete shift:=xlUp rng2.EntireRow.Delete shift:=xlUp End If ThisWorkbook.Worksheets("¸½¼þ").Cells(i, 12).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 As String Dim rng1, rang2 As Range Application.ScreenUpdating = False i = 3 Do While ThisWorkbook.Worksheets("¸½¼þ").Cells(i, 17) <> "" str = ThisWorkbook.Worksheets("¸½¼þ").Cells(i, 17).Value Set rng1 = ThisWorkbook.Worksheets("ÖÜ׼ȷÂÊ").Columns(2).Find(str) Set rng2 = ThisWorkbook.Worksheets("ÈËÔ±Missͳ¼Æ").Columns(2).Find(str) If rng1 Is Nothing Or rng2 Is Nothing Then str = ThisWorkbook.Worksheets("¸½¼þ").Cells(i, 16).Value Set rng1 = ThisWorkbook.Worksheets("ÖÜ׼ȷÂÊ").Columns(2).Find(str).Offset(-1, 0) Set rng2 = ThisWorkbook.Worksheets("ÈËÔ±Missͳ¼Æ").Columns(2).Find(str).Offset(-1, 0) ThisWorkbook.Worksheets("ÖÜ׼ȷÂÊ").Rows(rng1.Row).Insert shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove ThisWorkbook.Worksheets("ÈËÔ±Missͳ¼Æ").Rows(rng2.Row).Insert shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove ThisWorkbook.Worksheets("¸½¼þ").Cells(i, 16).Resize(1, 3).Copy rng1.Offset(-1, -1).PasteSpecial Paste:=xlPasteValues rng2.Offset(-1, -1).PasteSpecial Paste:=xlPasteValues rng1.Offset(0, 33).AutoFill Destination:=rng1.Offset(-1, 33).Resize(2, 1), Type:=xlFillDefault rng2.Offset(0, 2).Resize(1, 4).AutoFill Destination:=rng2.Offset(-1, 2).Resize(2, 4), Type:=xlFillDefault Else MsgBox (str + " Is Exist") Exit Sub End If ThisWorkbook.Worksheets("¸½¼þ").Cells(i, 16).Resize(1, 3).Delete shift:=xlUp 'i = i + 1 Loop ThisWorkbook.Worksheets("¸½¼þ").Activate Application.ScreenUpdating = True End Sub
绩效和对
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 Sub Email() Application.ScreenUpdating = False Dim shp As Shape For Each shp In Sheets("Miss").Shapes shp.Delete Next Sheets("»ã×Ü").Range("A2:H22").Copy Sheets("»ã×Ü").Range("K1").Select Sheets("»ã×Ü").Pictures.Paste.Select Selection.Cut ThisWorkbook.Close savechanges:=True Application.ScreenUpdating = False End Sub