在 Excel 中删除之前删除的行之间的行

Posted

技术标签:

【中文标题】在 Excel 中删除之前删除的行之间的行【英文标题】:Removing rows between earlier removed rows in Excel 【发布时间】:2014-05-22 18:46:20 【问题描述】:

我要编写 VBA 代码来删除某些行(列中包含某些单词)。我有一个在下面。我在删除两个较早删除的行(小计)之间的所有行时遇到问题(*并且作为条件,这只是它们之间的一行,如果更多不删除它们)

请问有没有办法解决这个问题? 请让我知道这个问题是否含糊(因为我是新手)

Sub DeleteRows()
Dim c As Range
Dim SrchRng As Range
Dim SrchStr As String

Set SrchRng = ActiveSheet.Range("F1", ActiveSheet.Range("F10000").End(xlUp))
SrchStr = InputBox("Please Enter A Search String")
Do
    Set c = SrchRng.Find(SrchStr, LookIn:=xlValues)
    If Not c Is Nothing Then c.EntireRow.Delete
Loop While Not c Is Nothing

End Sub

【问题讨论】:

建议在您的问题上添加逗号,因为它很难阅读,更不用说理解问题了。 如果我输入“XYZ”,现有代码将删除 F 列中包含“XYZ”的每一行。但您的问题似乎与此代码无关。早些时候您删除了两行。让我们将这些行称为 N 和 M。N 和 M 以下的行将向上移动以填补空白。您现在要么想要删除 N 和 M 之间的行,要么正在删除它们并且您不希望它们被删除。宏如何知道 N amd M 的值?我假设 N amd M 之间的行会因为新的删除而移动。宏如何知道原始 N 和 M 之间的行的新位置? 谢谢,好点子。我只是想知道是否有一种方法可以在删除行之前检测要删除哪些行,并在其中两个之间直接只有一行时(因为有小计)而不是在删除之后添加删除行 但我现在觉得它很复杂所以我想我只能用自动过滤器来做这个 【参考方案1】:

您已经获得了感兴趣的列(在本例中为 F),并且您还提示用户指定要删除的字符串,这听起来像是巧妙使用 Range.Autofilter 方法的完美秘诀。 (这是一个 MSDN 链接:http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.range.autofilter(VS.80).aspx)

假设你正在操作的数据块来自 A:F,你可以这样写:

Option Explicit
Sub DeleteRowsWithAutoFilter()

Dim DataRng As Range, DeleteMe As Range
Dim SrchStr As String

'set references up-front
Set DataRng = ActiveSheet.Range("A1", ActiveSheet.Range("F10000").End(xlUp))
SrchStr = InputBox("Please Enter A Search String")

'turn off alerts for delete action
Application.DisplayAlerts = False
DataRng.AutoFilter Field:=6, Criteria1:=SrchStr '<~ apply autofilter
With DataRng
    Set DeleteMe = .Offset(1, 0) '<~ set the delete range
    DeleteMe.Delete
End With
ActiveSheet.AutoFilterMode = False
Application.DisplayAlerts = True

End Sub

【讨论】:

嗨,这个删除了所有的行,我不知道为什么:)。谢谢 那是你的目标,对吧?上面代码中的循环遍历 SrchRng,删除在 F 列中匹配的行。我的脚本使用 .AutoFilter 简单地删除与用户输入的字符串匹配的所有行 是的,在我输入任何单词后,宏会删除除第一行和最后一行(有时还有中间的一行)之外的每一行,只有在将 InputBox 重新命名为空时,它才会删除空行。我是一个初学者,我通过使用互联网和 VBA 基础知识反复试验来做到这一点,我还不能理解很多东西 :)。可惜我不能发布一个例子。谢谢

以上是关于在 Excel 中删除之前删除的行之间的行的主要内容,如果未能解决你的问题,请参考以下文章

Pandas DataFrame 删除带有特定值的行

如何删除EXCEL表中的大量数据行,要删除的行数大概8万

如何删除excel中符合特定条件的所有行,以及随后的行

EXCEL函数 如何删除某一列中不含某一元素的行

excel vba自动过滤范围并删除co​​l D中所有带0的行

删除 UITableView 中 UITableViewCells 之间的行