场景
我有一个具有很多价值的Excel工作表。我正在使用一些宏来过滤这些值。
我需要的
我只需要将过滤后的值从当前工作表复制到另一工作表。我正在通过以下方式
Sub filterCopy()
Selection.SpecialCells(xlCellTypeVisible).Copy
Sheets("Sheet2").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
问题
上面的代码通过仅复制可见单元格来完成应做的事情。但是问题是,它正在复制包括所有空白单元格在内的整个工作表,直到行号1048480甚至更多。但是我的数据最多只能到第12行。我应该如何只复制包含数据的可见单元格而不复制所有空白单元格?
图片
答案 0 :(得分:1)
您的代码没有考虑垂直空间中的最后一个单元,而是实际上复制了A1范围内的所有内容。
解决方案是第一,避免使用Select,因为它会降低性能,然后再使用
Cells(Rows.Count, "A").End(xlUp).Row
获取A列中的最后一行。这给了我们
Sub filterCopy()
Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy Sheets(2).Range("A1")
End Sub
要复制包含已过滤行的完整表,请使用
Sub filterCopy()
Sheets(1).UsedRange.SpecialCells(xlCellTypeVisible).Copy Sheets(2).Range("A1")
End Sub