【问题标题】:VBA: filter multiple columns, then copy+pasteVBA:过滤多列,然后复制+粘贴
【发布时间】:2021-07-02 08:05:32
【问题描述】:

我尝试过滤多列(工作表数据)但未成功,然后将过滤后的列复制到另一个工作表(工作表 2)。 初始情况: 标题在第 4:4 行

  1. 按字符串“SENR”过滤列 A
  2. 将 B 列的唯一条目复制到另一个工作表中。

到目前为止,我取得了什么成就? 我能够使用以下代码实现第 2 点):

Sub CreateUniqueList()
Dim LastRow As Long

Sheets("data").Select

LastRow = Cells(Rows.Count, "B").End(xlUp).Row

    ActiveSheet.Range("B5:B" & LastRow).AdvancedFilter _
    Action:=xlFilterCopy, _
    CopyToRange:=Sheets("sheet2").Range("A1"), _
    Unique:=True

End Sub

但是,我没有根据第 1 点首先管理过滤器列 A)。 这里有人有想法吗?

【问题讨论】:

    标签: excel vba filtering


    【解决方案1】:
    Sub CreateUniqueList()
    
        Dim LastRow As Long
    
        Sheets("data").Select
    
        LastRow = Cells(Rows.Count, "B").End(xlUp).Row
    
        ActiveSheet.Range("A:B").AutoFilter Field:=1, Criteria1:="SENR"
    
        Range("B5:B" & LastRow).Copy (Sheets("Sheet2").Range("A1"))
    
    End Sub
    

    【讨论】:

    • 谢谢,在发布之前我尝试了``` Worksheets("data").Range("A4").AutoFilter Field:=1, Criteria1:="SENR" ``` 由于错字它没有工作。您的解决方案可以:) 非常感谢
    • 没错,我只是在上面的代码中添加了符合“SENR”条件的行。
    • 请注意,VBA 标记空间中的好的答案通常在avoid using Select 可能的情况下。
    • @BigBen 是正确的,像往常一样。我将 Select 保留在此处,仅关注 Alexsom23814 丢失的部分,但为了将来参考,这绝对是最佳实践。
    【解决方案2】:

    它不知道您要按“SENR”过滤。您需要将该值添加到 Criteria 范围,然后在代码中调用它。

    【讨论】:

    • 我添加了以下行 ``` Worksheets("data").Range("A4").AutoFilter Field:=1, Criteria1:="SENR" ``` 但是,它设置了过滤范围在 1:1 行中,而不是标题所在的 4:4。
    • 好吧 NVM,我打错了,这就是为什么它不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 2014-12-27
    相关资源
    最近更新 更多