如果在一个范围内发现单个单元格值,则删除整行

我正在处理logging每个多站的31天数据的每日数据,我需要一个VBA代码来消除闰年。 我有一份logging数据的date列表,以及我想要删除的不是闰年的年份列表。 要删除多余的30天和31天,我使用了以下基本代码:

Dim lastrow, i As Long

lastrow = ActiveSheet.Cells(65536, 1).End(xlUp).Row

 For i = 1 To lastrow 'delete 31st days for February If ActiveSheet.Range("D" & i) = 2 And ActiveSheet.Range("E" & i) = 31 Then Rows(i).Select Selection.Delete shift:=xlUp End If Next i 

很简单,很好地工作,所以我希望能够做一些类似的东西,我发现数据中不存在的date(即02/29 / non-leapyear),并删除行,但它已经certificate是非常难以匹配范围内的值。 我正在考虑这样的事情:

Dim lastrow, i As Long, leapyear as Workbook

Set leapyear = Workbooks("LeapYears.xlsx")

lastrow = ActiveSheet.Cells(65536, 1).End(xlUp).Row

 For i = 1 To lastrow 'obviously this is where I have the problem trying to match a cell to a range If ActiveSheet.Range("D" & i) = leapyear.Sheets(1)range("C2:C90") Then Rows(i).Select Selection.Delete shift:=xlUp End If Next i 

任何帮助或其他方式来处理这是非常感谢!

我从这个问题的答案的修改版本

 Sub Sample() Dim StartingScreenUpdateValue As Boolean Dim StartingEventsValue As Boolean Dim StartingCalculations As XlCalculation With Application StartingScreenUpdateValue = .ScreenUpdating StartingEventsValue = .EnableEvents StartingCalculations = .Calculation .ScreenUpdating = False .EnableEvents = False .Calculation = xlCalculationManual End With Dim varTestValues As Variant varTestValues = Workbooks("LeapYears.xlsx").Sheets(1).Range("C2:C90") Rows(1).Insert [A1].FormulaR1C1 = "TempHeader1" [A1].AutoFill Destination:=Range("A1:H1"), Type:=xlFillDefault Range("D1").AutoFilter Field:=4, Criteria1:=Application.Transpose(varTestValues), Operator:=xlFilterValues Range("D2", Range("D" & Rows.Count).End(xlUp)) _ .SpecialCells(xlCellTypeVisible).EntireRow.Delete ActiveSheet.AutoFilterMode = False Rows(1).Delete With Application .ScreenUpdating = StartingScreenUpdateValue .EnableEvents = StartingEventsValue .Calculation = StartingCalculations End With End Sub 

注:此代码运行,假设您的数据有标题,如果它不请告知。

请记住,一定要在数据副本上运行任何代码,而不是运行实际数据,直到您确信其运行正常。