【发布时间】:2016-11-19 11:41:33
【问题描述】:
我正在尝试编写一个宏来执行以下操作:
- 从 Sheet1 观察我输入的数据的 A 列;
- 当我在 A 列的单元格中写入内容时,使用该值过滤 Sheet2;
- 过滤完成后,将除列标题之外的所有内容从第二张表复制到第一张表中,即使有多个值。
我试着写这个:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("A:A")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
copy_filter Target
End If
End Sub
Sub copy_filter(Changed)
Set sh = Worksheets("Sheet2")
sh.Select
sh.Range("$A$1:$L$5943") _
.AutoFilter Field:=3, _
Criteria1:="=" & Changed.Value, _
VisibleDropDown:=False
Set rang = sh.Range("$A$1:$L$5943") _
.SpecialCells(xlCellTypeVisible)
rang.Offset(0, 0).Select
Selection.Copy
Worksheets("Sheet1").Select
Worksheets("Sheet1").Range(Changed.Address).Offset(0, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues
sh.Range("$A$1:$L$5943").AutoFilter
Application.CutCopyMode = False
End Sub
但是,当我复制选择时,标题行也会被复制,但是使用 .Offset(1, 0) 会剪切标题和 1 个额外的行,并且不考虑过滤器没有返回结果的情况。
如何选择除标题之外的所有过滤行?
【问题讨论】: