对于此解决方案,可以避免循环。
只需添加一个额外的列,创建一个可以使用SpecialCells找到的错误,如下所示:
Range("IA1:IA" & Range("A65536").End(xlUp).Row).Formula = "=IF(A:A = """ & SubPop & """,NA(),"""") "
然后你使用 SpecialCells 来识别匹配 SupPop 的行,并删除整行!
Range("IA1:IA" & Range("A65536").end(xlup).row).specialcells(xlCellTypeFormulas, xlErrors).EntireRow.Delete shift:=xlup
最后,清理/删除我们在开头添加的额外公式列:
Range("IA1:IA" & Range("A65536").end(xlup).row).clear
这是对该技术的正确解释:How to delete multiple rows without a loop in Excel VBA
我希望这有助于你开始
这是急切要求的上述代码在一个功能中的全部功能:
Sub deleteRows(ByVal strSubPop As String)
' pass in the string to match (SubPop)
'
Range("IA1:IA" & Range("A65536").End(xlUp).Row).Formula = "=IF(A:A = """ & strSubPop & """,NA(),"""") "
'
' for debugging and testing just select the rows where a match is found
Range("IA1:IA" & Range("A65536").End(xlUp).Row).SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow.Select
'
' when ready, UNCOMMENT the below line
' Selection.Delete shift:=xlUp
'
' after testing just use this line to select the rows and delete in one step:
' Range("IA1:IA" & Range("A65536").End(xlUp).Row).SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow.Delete shift:=xlUp
'
' now clean up Column IA
Range("IA1:IA" & Range("A65536").End(xlUp).Row).Clear
Range("A1").Select
'
End Sub
那么该代码在做什么呢?
首先,您的要求是删除匹配SubPop的行
- 第一行在 IA 列中添加了一个与 A 列中找到的 SubPop 匹配的公式
- 下一行找到所有这些行然后删除它们
- 最后一行清理
菲利普