VBA – 如何删除一个单元格中find一个特定值后的所有20行?
我有一个excel文件,在随机的时间间隔里面遍布着20行无用的信息。 这是完全相同的20行反复重复,所以它始终始于相同的单元格值。 像这样: https : //i.gyazo.com/fdec2c2f6c6244d108e6bd07ad6e5181.png
我需要删除它们出现的整个行,所以我一直在使用这个VBA代码:
Sub DeleteRows() 'Updateby20140314 Dim rng As Range Dim InputRng As Range Dim DeleteRng As Range Dim DeleteStr As String xTitleId = "KutoolsforExcel" Set InputRng = Application.Selection Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8) DeleteStr = Application.InputBox("Delete Text", xTitleId, Type:=2) For Each rng In InputRng If rng.Value = DeleteStr Then If DeleteRng Is Nothing Then Set DeleteRng = rng Else Set DeleteRng = Application.Union(DeleteRng, rng) End If End If Next DeleteRng.EntireRow.Delete End Sub
但它不是很有用,因为我必须为每个文件做20次。 所以,我想知道是否有办法删除第一行后面的所有20个无用的信息(图像上的黄色)的行。 我试图通过在上面的代码的“下一个”之后添加这个来做到这一点:
Set DeleteRng = DeleteRng.Resize(DeleteRng.Rows.Count + 20)
但没有工作(运行时错误'1004'应用程序定义或对象定义的错误)。
我有成百上千的其他文件有相同的问题,所以一个代码可以做到这一点真的会节省我一堆时间。
提前致谢
编辑:解决由拱廊下面:
在将其添加到DeleteRng之前(或在此期间)resize。
Application.Union(DeleteRng, rng.Resize(20,1))