【发布时间】:2018-08-31 08:31:12
【问题描述】:
场景
我有一个包含很多值的 Excel 表。我正在使用一些宏来过滤这些值。
我需要什么
我只需要将过滤后的值从当前工作表复制到另一个工作表。我正在做以下方式
Sub filterCopy()
Selection.SpecialCells(xlCellTypeVisible).Copy
Sheets("Sheet2").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
问题
上面的代码通过只复制可见单元格来完成应该做的事情。但问题是,它正在复制整个工作表,包括所有空白单元格,直到行号 1048480 甚至更多。但是我的数据只到第 12 行。我应该如何只复制包含数据的可见单元格而不是所有那些空白单元格?
图片
【问题讨论】:
-
Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy Sheets(2).Range("A1")适合你吗?它至少会摆脱.Select,您应该始终使用avoid -
当使用
A2:A时,它只是复制A列,因此我需要复制所有过滤的非空单元格。我使用Activesheet.UsedRange.Copy,它似乎工作。但我不确定这是否会导致任何其他问题 -
是的,我忽略了这一点,请参阅提供的答案来解决该问题。
-
@JvdV 谢谢。正如我在下面的评论中所述,能够解决问题