mbi*_*gun 17 excel vba excel-2007 excel-vba
我有一个包含一些数据的Excel表.通过使用下一个vba代码,我试图只过滤某些字段中的空白单元格并删除这些行
ActiveSheet.Range("$A$1:$I$" & lines).AutoFilter Field:=7, Criteria1:= _
"="
ActiveSheet.Range("$A$1:$I$" & lines).AutoFilter Field:=8, Criteria1:= _
"="
ActiveSheet.Range("$A$1:$I$" & lines).AutoFilter Field:=9, Criteria1:= _
"="
ActiveSheet.UsedRange.Offset(1, 0).Resize(ActiveSheet.UsedRange.rows.Count - 1).rows.Delete
ActiveSheet.ShowAllData
Run Code Online (Sandbox Code Playgroud)
它只有在此列中有空白单元格时才有效.但是我遇到了一个问题,当我没有空白单元格时,通过使用上面的代码,我的所有范围都从表格中移除.如何避免这个问题?我应该更改过滤条件或其他内容吗?
Jon*_*ell 40
使用SpecialCells仅删除自动过滤后可见的行:
ActiveSheet.Range("$A$1:$I$" & lines).SpecialCells _
(xlCellTypeVisible).EntireRow.Delete
Run Code Online (Sandbox Code Playgroud)
如果您的范围中有一个您不想删除的标题行,请在范围中添加一个偏移量以将其排除:
ActiveSheet.Range("$A$1:$I$" & lines).Offset(1, 0).SpecialCells _
(xlCellTypeVisible).EntireRow.Delete
Run Code Online (Sandbox Code Playgroud)
小智 15
作为使用UsedRange或提供显式范围地址的替代方法,AutoFilter.Range属性还可以指定受影响的范围.
ActiveSheet.AutoFilter.Range.Offset(1,0).Rows.SpecialCells(xlCellTypeVisible).Delete(xlShiftUp)
Run Code Online (Sandbox Code Playgroud)
如此处所使用的,Offset导致AutoFilter范围之后的第一行也被删除.为了避免这种情况,我会尝试在.Offset()之后使用.Resize().
| 归档时间: |
|
| 查看次数: |
144483 次 |
| 最近记录: |