我有一个电子表格,其中日期按升序排列在" A"列中。专栏" B" &安培; " C"拥有用户输入的数据。如果列中的相应日期为" A"是在今天的日期之前,我希望将数据输入单元格" B" &安培; " C"删除。我真的不知道该怎么做。
数据原样:
期望的结果(假设今天是2017年5月1日):
答案 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