複数のステーションごとに 31 日間のデータを記録した毎日のデータを使用していますが、うるう年を削除するには VBA コードが必要です。記録されたデータの日付のリストと、削除したい閏年ではない年のリストがあります。余分な 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
非常にシンプルでうまく機能するので、データ内に存在しない日付 (つまり、02/29/non-leapyear) を見つけて行を削除する場合に、同様のことができることを望んでいましたが、非常に困難であることが判明しました範囲内の値を一致させることは困難です。私はこのようなものに沿って考えていました:
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
これを処理するためのヘルプまたは別の方法は大歓迎です!