如何实现 VBA 模块来复制过滤后的数据

如何实现 VBA 模块来复制过滤后的数据

我需要实现一个 VBA 宏,从一个 Excel 工作表复制数据并将某一列放入另一个工作表中。

Sub sbCopyRangeToAnotherSheet()

'Method 1
Sheets("Sheet1").Range("A1:B10").Copy Destination:=Sheets("Sheet2").Range("E1")

'Method 2
'Copy the data
Sheets("Sheet1").Range("A1:B10").Copy
'Activate the destination worksheet
Sheets("Sheet2").Activate
'Select the target range
Range("E1").Select
'Paste in the target destination
ActiveSheet.Paste

Application.CutCopyMode = False

End Sub

这不适用于名为 Sheet 3 的新工作表,也不会有效运行已筛选数据。我需要一个可以复制已筛选数据并将特定列粘贴到另一个工作表中的代码。

答案1

为了仅复制筛选范围内的可见单元格,您需要指定您要执行的操作。例如:

Sheets("Sheet1").Range("A1:B10").SpecialCells(xlCellTypeVisible).Copy _
                                 Destination:=Sheets("Sheet2").Range("E1")

一些如何在 VBA 代码中使用自动过滤器的很好的例子可以在这里找到

我看不出在您引用其他工作表时此方法不起作用的原因,除非您使用复制操作,Activate并且Select可能在某个时候取消复制操作。您这样做的原因是什么,而不是像我上面概述的那样,在复制时指定指定的目标范围?我看到这是您在第一个示例中所做的,我认为这样做有效。

相关内容