我有一个包含数据的工作表。只要特定列中的某些内容发生更改,我就希望将此工作表中一列的值复制到另一个工作表,但只能复制符合某些条件的行。所以我已经自动过滤了一个范围。这有效。它只返回与过滤器匹配的行。但是从这个过滤范围,我只需要一列。不知怎的,我不能让这个工作。
所以我的问题是,如何才能从过滤范围中复制特定列?
代码(剪掉)我到目前为止:
Me.AutoFilterMode = False
With Me.Range("C4:D103")
.AutoFilter Field:=2, Criteria1:="=Marge Only", Operator:=xlOr, Criteria2:="=Contracting"
.SpecialCells(xlCellTypeVisible).Copy Destination:=ThisWorkbook.Worksheets("Result").Range("B5:B104")
End With
ThisWorkbook.SortResult
On Error Resume Next
Me.AutoFilterMode = False
Me.ShowAllData
On Error GoTo 0
.SpecialCells(xlCellTypeVisible).Copy部分将太多数据复制到目标工作表。我需要这样的东西:
.Range("A:A").SpecialCells(xlCellTypeVisible).Copy
使用.Range(" A:A"),我的想法是只复制已过滤范围中的A列。但这并不奏效。
那么你的建议如何实现呢?
答案 0 :(得分:0)
这是你在说什么?它检查列" I"对于标准,然后它找到过滤器中的第一个和最后一个单元格" A"列并复制两者之间的值并将其粘贴到" O"
列中Sub copyColumn()
Dim StrRow As Long
Dim str As String
Dim str2 As String
Dim str3 As String
With Sheet1
.AutoFilterMode = False
With .Range("A1:M1")
.AutoFilter
.AutoFilter Field:=9, Criteria1:="dog"
StrRow = Sheets("Sheet1").AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).Cells(1, 2).Row
str = .Range("A" & StrRow).Address
str2 = .Range("A1").End(xlDown).Address
.Range("O2:O" & str3).Value = .Range(str, str2).Value
End With
End With
End Sub
答案 1 :(得分:0)
您可以稍微修改代码以仅复制所需的列。此代码假定列A(但您可以调整),并假设第4行是标题数据(您也可以调整。
With Me
.Range("C4:D103").AutoFilter Field:=2, Criteria1:="=Marge Only", Operator:=xlOr, Criteria2:="=Contracting"
.Range("A5:A103").SpecialCells(xlCellTypeVisible).Copy Destination:=ThisWorkbook.Worksheets("Result").Range("B5")
End With