0

我正在尝试根据给定的日期范围从工作表中删除数据。在“Grower Reporting”表上,我有一个小数据集,L 列中有日期。其余数据在 N、M 和 O 列中。在同一个工作表中,我有两个定义日期范围的单元格,单元格“A2” =开始日期和单元格“B2”=结束日期。我正在尝试从我的数据集中删除任何不属于给定日期范围的日期和相邻数据。

感谢 Arich 和 varocarbas 帮助我走到这一步!

这是我所做的(请耐心等待,我对编码的掌握很薄弱):

Sub delete_data()

Dim startDate As Date
Dim endDate As Date
Dim r_date As Date


startDate = Sheets("Grower Reporting").Range("a2").Value
endDate = Sheets("Grower Reporting").Range("b2").Value

Set r = Sheets("Grower Reporting").Range("L:L").Find(r_date, Range("L2"), _
LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlNext)

If (r_date >= startDate And r_date <= endDate) Then

  r.Offset(0, -1).Value = " "

     End If

End Sub

上面的代码似乎没有做任何事情。我认为我走在正确的轨道上,但急需一些指导。

4

1 回答 1

1

您必须在循环内执行检查(对于每一行)。日期接受与数字相同的运算符。示例代码:

If Not r Is Nothing Then
    Dim curDate As Date
    firstAddress = r.Address
    Do
        curDate = Sheets("Grower Reporting").Cells(i, 9).Value 'Column I
        If (curDate >= d1 And curDate <= d2) Then
           Sheets("Grower Reporting").Cells(i, 13).Value = r.Value
           Sheets("Grower Reporting").Cells(i, 14).Value = r.Offset(0, -3).Value
           Sheets("Grower Reporting").Cells(i, 15).Value = r.Offset(0, 6).Value
           i = i + 1
           Set r = Sheets("Grower Rejection Data").Range("E:E").FindNext(r)
        End If
    Loop While Not r Is Nothing And r.Address <> firstAddress
End If

注意:此代码假定所有输入都具有相同的(日期)格式。如果不是这种情况,您可能不得不依赖Format函数或影响Cell属性。如果处理不同的“区域设置”(例如,英国的英语计算机和美国的数据;日期格式不同),您可能会涉及一些有问题的问题。

于 2013-10-07T19:09:55.387 回答