[英]Copy filtered records to a new temporary sheet
我正在尝试将一些过滤的记录复制到同一Excel中的新工作表中。 但是,它只是复制标题而不是记录。 请提出建议。 我已将nc_it_an_sub定义为放置自动过滤器后显示的记录数。
Workbooks("WB1.xlsx").Worksheets("Sheet1").Range("A2:N" & nc_it_an_sub).Select
Selection.Copy
Workbooks("WB1.xlsx").Worksheets("Temp Sheet").Range("A1").PasteSpecial Paste:=xlPasteValues
尝试这样:
nc_it_an_sub = 10
Workbooks("WB1.xlsx").Worksheets("Sheet1").Range("A2:N" & nc_it_an_sub).Select
Selection.Copy
Workbooks("WB1.xlsx").Worksheets("Temp Sheet").Range("A1").PasteSpecial _
Paste:=xlPasteValues
如果nc_it_an_sub
,则您的情况下nc_it_an_sub
的值为1
,应该对此进行修复。
通常,不需要使用“ Select
来Copy
范围:
Workbooks("WB1.xlsx").Worksheets("Sheet1").Range("A2:N" & nc_it_an_sub).Copy
Workbooks("WB1.xlsx").Worksheets("Temp Sheet").Range("A1").PasteSpecial _
Paste:=xlPasteValues
甚至作为1班轮:
Worksheets("Source").Columns("A:D").Copy Destination:=Worksheets("Target").Range("a1")
您可以只复制可见的单元格。
作为示例,将此代码添加到工作表模块。
这段代码不是必需的-双击单元格时会创建一个过滤器。
它将当前区域过滤为您双击的值。
Private rCellClicked As Range
'Code to create a filtered range.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
With ActiveSheet
If .FilterMode Then
.ShowAllData
rCellClicked.Select
Else
With Target
.CurrentRegion.AutoFilter Field:=.Column - .CurrentRegion.Column + 1, Criteria1:=.Value
End With
Set rCellClicked = Target
'This procedure will copy the cells to a new sheet.
CopyFiltered Target.CurrentRegion
End If
End With
End Sub
此过程将筛选后的列表(包括标题)中的可见单元格复制到新工作表中的区域A1中:
Public Sub CopyFiltered(FilteredRange As Range)
Dim wrkSht As Worksheet
Set wrkSht = ThisWorkbook.Worksheets.Add
FilteredRange.SpecialCells(xlCellTypeVisible).Copy Destination:=wrkSht.Range("A1")
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.