如何复制过滤后的数据而不复制空单元格

问题描述 投票:0回答:1

脚本

我有一张带有很多价值的excel表。我正在使用一些宏来过滤这些值。

我需要的

我只需要将当前工作表中的过滤值复制到另一个工作表。我正在做以下方式

Sub filterCopy()
    Selection.SpecialCells(xlCellTypeVisible).Copy
    Sheets("Sheet2").Select
    Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
End Sub

问题

上面的代码通过仅复制可见单元格来完成应该做的事情。但问题是,它正在复制整张纸,包括所有空白单元格,行号为1048480甚至更多。但我的数据只有第12行。我应该只复制包含数据的可见单元格而不是所有空白单元格?

图片

Filtered Sheet enter image description here将过滤后的数据复制到另一张表enter image description here

excel vba excel-vba
1个回答
1
投票

您的代码没有考虑垂直空间中的最后一个单元格,实际上复制了A1范围内的所有单元格。

解决方案首先是避免选择因为它提供低性能,然后使用

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
© www.soinside.com 2019 - 2024. All rights reserved.