vba - Excel - 根据单元格值删除当前行和上面的行

标签 vba excel cell rows

我每周都会收到一个最多可包含 4,000 行的电子表格。如果 C 列中有任何日期,我需要删除该行及其上方的行。有人可以帮助我编写一些 VBA 代码吗?我可以在每周收到的每个新文件上运行这些代码。每周手动查看 4,000 多行数据是一件痛苦的事情。

在屏幕截图中,我将删除第 157、158、159 和 160 行。
Screenshot showing rows to be deleted

非常感谢您的帮助。

最佳答案

尝试一下这个简短的宏:

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:

如果您有两个或多个连续单元格,其日期如下:

enter image description here

那么应该使用这段代码:

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

(这将确保所有“x”行也被删除。)

关于vba - Excel - 根据单元格值删除当前行和上面的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38589166/

相关文章:

python - 如何用 pandas 找到一列的最大值?

ios - 能否在 detailTextLabel 单元格中显示小图像?

Swift - 未在表格 View 单元格中触发按钮操作

c++ - 邮件程序是如何在启动时如此快速地显示消息列表的?

python - 聚合 pandas 列中连续非 NaN 单元格的字符串,但不聚合整个列

excel - 如何修复 VBA 中的 "Execution Error 429 : ActiveX can' t 创建对象”错误

excel - 验证完成后自动关闭用户表单

c# - 在 C# 中为 dataGridView 单元格提供背景图像

vba - 重新打开最近关闭的 Excel 实例

Excel VBA 检查 InStr 函数中的值