【问题标题】:VBA Excel Copy Range from a already autofiltered Range从已经自动过滤的范围中复制 VBA Excel 范围
【发布时间】:2018-02-28 17:59:06
【问题描述】:

我有一个包含数据的工作表。一旦特定列发生变化,我想将此工作表中一列的值复制到另一个工作表,但只复制符合某些条件的行。所以我已经自动过滤了一个范围。这行得通。它只返回匹配过滤器的行。但是从这个过滤范围内,我只需要一列。不知何故,我无法让它发挥作用。

所以我的问题是,我怎样才能只复制过滤范围内的特定列?

到目前为止我的代码(截断):

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 列。但这不起作用。

那么您对如何实现这一点有何建议?

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    这就是你说的吗?它检查“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
    

    【讨论】:

      【解决方案2】:

      您可以稍微修改您的代码以仅复制您需要的列。此代码假设 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
      

      【讨论】:

      • 斯科特,做到了。我觉得很好提。 A 列是指过滤后的范围(Range("C4:D103"),因此 A 列是原始范围内的 C)。这对我来说非常有效。 @DaBeau96。也谢谢你的回答。
      猜你喜欢
      • 1970-01-01
      • 2020-02-29
      • 1970-01-01
      • 1970-01-01
      • 2015-07-18
      • 1970-01-01
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多