【问题标题】:How to copy/paste rows based on matching criterias in 2 columns?如何根据 2 列中的匹配条件复制/粘贴行?
【发布时间】:2017-07-27 19:32:48
【问题描述】:

我正在使用 Scott Craner 的代码更改(效果很好)。但是,现在我希望 VBA 不仅可以匹配一列的条件,还可以匹配 2 列的条件,然后将其作为公式复制/粘贴到下一张表中。

Sub TransferRows()
Dim lLRow As Long

    With Sheets("Sheet1")
        lLRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range("B:B").AutoFilter Field:=1, Criteria1:="Cat"
        .Range("B2:B" & lLRow).SpecialCells(xlCellTypeVisible).EntireRow.Copy
        Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlFormulas
        .AutoFilterMode = False
    End With
 End Sub

“B”列中的 Criteria1 是“Cat”,我需要从“C”列添加另一个 Criteria2(“dog”)。因此,每当我在“B”中有“Cat”,在“C”中有“Dog”时,整个行都会复制到 Sheet2。 PS。请记住,我在“B”和“C”列中有各种类型的数据,因此过滤器是必不可少的(另外,由于有成千上万的行,我不能使用循环,因为它需要太长时间)。因此,我欢迎有关如何向上述代码添加另一个标准的建议。

谢谢 西

【问题讨论】:

  • 基本上,只有在同一行的单元格中有“狗”时才需要复制“猫”。此外,我不希望代码集中在“相邻单元格”cos 上,因为我在工作表的其他列中有“狗”(即不是“C”列)。

标签: excel vba


【解决方案1】:

试试下面的代码(见代码里面的cmets):

Option Explicit

Sub TransferRows()

Dim lLRow As Long

With Sheets("Sheet1")
    lLRow = .Cells(.Rows.Count, 1).End(xlUp).Row

    With .Range("B1:C" & lLRow)
        .AutoFilter Field:=1, Criteria1:="Cat"
        .AutoFilter Field:=2, Criteria1:="dog"
    End With    
    .Range("B2:C" & lLRow).SpecialCells(xlCellTypeVisible).EntireRow.Copy   

    ' rest of your code goes here
End With

End Sub

【讨论】:

  • 谢谢!我必须将 .EntireRow 添加到您代码中的一个实例中,但除此之外它可以完美运行!谢谢
猜你喜欢
  • 2020-11-24
  • 1970-01-01
  • 1970-01-01
  • 2019-12-06
  • 1970-01-01
  • 1970-01-01
  • 2019-01-01
  • 1970-01-01
  • 2016-06-28
相关资源
最近更新 更多