如果另一个相应单元格中的日期在今天之前,我想删除单元格中的数据

时间:2017-05-01 20:06:09

标签: excel vba excel-vba

我有一个电子表格,其中日期按升序排列在" A"列中。专栏" B" &安培; " C"拥有用户输入的数据。如果列中的相应日期为" A"是在今天的日期之前,我希望将数据输入单元格" B" &安培; " C"删除。我真的不知道该怎么做。

数据原样:

enter image description here

期望的结果(假设今天是2017年5月1日):

enter image description here

4 个答案:

答案 0 :(得分:0)

或者您可以尝试这样的事情......

Sub ClearData()
Dim lr As Long
lr = Cells(Rows.Count, 1).End(xlUp).Row
Range("D1:D" & lr).Formula = "=IF(A1<Today(),Na(),"""")"
On Error Resume Next
Range("D1:D" & lr).SpecialCells(xlCellTypeFormulas, 16).Offset(0, -1).ClearContents
Range("D1:D" & lr).SpecialCells(xlCellTypeFormulas, 16).Offset(0, -2).ClearContents
Columns(4).Clear
End Sub

答案 1 :(得分:0)

.then

如果您的日期不连续且日期可能不存在,请改用此代码:

Sub removedate()
Dim rw As Long
With ActiveSheet
    rw = Application.WorksheetFunction.Match(CDbl(Date), .Range("A:A").Value2, 0) - 1
    .Range("B1:C" & rw).ClearContents
End With

End Sub

答案 2 :(得分:0)

Public Sub clearData()
Dim lastRow as Long
Dim varArray() as Variant
Dim rng as Range
Dim i as Long
Dim mySheet as Worksheet

Set mySheet = ThisWorkbook.Worksheets("nameOfYourSheet")
lastRow = mySheet.Cells(mySheet.Rows.Count, "A").End(xlUp).Row
Set rng = mySheet.Range("A1:C" & CStr(lastRow))
varArray = rng


For i = 1 to rng.rows.count

   If varArray(i, 1) <> Date Then
       varArray(i, 2) = vba.vbnullString
       varArray(i, 3) = vba.vbNullString
   End if

Next i

rng = varArray
End Sub

未经测试,但这样的事情可行。

答案 3 :(得分:0)

假设每个日期只有一行,并且日期是连续的,并且第一行不是今天的日期:

Sub test()
    With ActiveSheet
        .Range(.Cells(1, "B"), .Cells((Date - .Cells(1, 1).Value), "C")).ClearContents
    End With
End Sub