我试图在过滤数据集后复制一个特定的列(不包括标题)。如果过滤后有多行,我选择的范围可以正常工作,并且我可以将该列复制到另一张纸上。但是,如果过滤后只有一行,则当我指定范围时,它将选择所有空单元格以及非空单元格,并且我的代码有故障。如何解决此问题?
我尝试使用不同的范围属性,但无法获得理想的结果
'''Finding the Pack Test Category from the filtered 1st column'''
Set RngA = ActiveSheet.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Areas(2)(1, 1)
''Here the selection of range includes all the empty cells as well!
Set RngA = Range(RngA, RngA.End(xlDown))
'''Copy & Pasting in the Forecast Sheet for temporary use'''
RngA.SpecialCells(xlCellTypeVisible).Copy Destination:=wbA.ActiveSheet.Range("L1")
我希望仅使用具有数据的可见单元格而不是空单元格来选择范围。
答案 0 :(得分:0)
如果标题下的第一行是已过滤(可见)单元格的一部分,则无法依靠Areas(2)
来工作。
'at this point, AutoFilter has been applied
'I have no idea what the range is
'or what column you are interested in
with ActiveSheet.AutoFilter.Range
with .cells.resize(.rows.count-1, 1).offset(1, 0)
set RngA = .SpecialCells(xlCellTypeVisible)
end with
end with
RngA.copy Destination:=wbA.ActiveSheet.Range("L1")
我不同意您将ActiveSheet用作父工作表引用。源工作表和目标工作表应明确引用。
答案 1 :(得分:0)
假设我们从以下内容开始:
并过滤年龄在45岁以上的人:
我们要将已过滤的列 A 复制到另一张工作表:
Sub KopyOneKolumn()
Dim r1 As Range
Dim r2 As Range
Dim r3 As Range
Set r1 = ActiveSheet.AutoFilter.Range ' the total visible range
Set r2 = Intersect(r1.Offset(1, 0), r1) ' clip off the header
Set r3 = Intersect(r2, Columns(1)) ' pick only column A
r3.Copy
Sheets("Sheet2").Paste
End Sub
Sheet2中的结果:
注意:
关键是r1
代表自动过滤器表中可见单元的“可复制”块。