每周我都会收到一封最多可包含4,000行的电子表格。如果任何日期在C列中,我需要删除该行及其上方的行。有人可以帮助我一些VBA代码,我可以在每周我得到的每个新文件上运行。每周手工浏览4,000多行数据会很痛苦。
非常感谢帮助。
答案 0 :(得分:3)
尝试这个简短的宏:
Sub dural()
Dim N As Long, i As Long, v As Variant
N = Cells(Rows.Count, "C").End(xlUp).Row
For i = N To 2 Step -1
v = Cells(i, "C").Value
If v <> "" Then
If IsDate(v) Then
Range(Cells(i, "C"), Cells(i - 1, "C")).EntireRow.Delete
End If
End If
Next i
End Sub
修改#1:强>
如果您有两个或更多连续单元格,日期如下:
然后应使用此代码:
Sub dural()
Dim N As Long, i As Long, v As Variant
Dim rKill As Range
N = Cells(Rows.Count, "C").End(xlUp).Row
Set rKill = Nothing
For i = N To 2 Step -1
v = Cells(i, "C").Value
If v <> "" Then
If IsDate(v) Then
If rKill Is Nothing Then
Set rKill = Cells(i, "C")
Set rKill = Union(rKill, Cells(i - 1, "C"))
Else
Set rKill = Union(rKill, Cells(i, "C"))
Set rKill = Union(rKill, Cells(i - 1, "C"))
End If
End If
End If
Next i
If rKill Is Nothing Then Exit Sub
rKill.EntireRow.Delete
End Sub
(这将确保所有&#34; x&#34;行也会被删除。)