首页 > 解决方案 > 如果其中的列包含指定值(新工作表中的另一列),如何将行复制到另一个 Excel 工作表?

问题描述

我有一个来自数据集的随机数字子集,我在新数据表中创建了一个新列。但是,我需要使用一个简单的命令将与第一个数据表中的列中的数字关联的行复制到第二个数据表中。我从未使用过 VBA 宏(如果它被称为),但我正在寻找任何能够做到这一点的代码?

这是我发现的一个例子,作为对另一个问题的答案,我试图用我对 excel 宏的有限理解来修改它:

Private Sub CommandButton1_Click()
Copy_Cells()
    botRow = 100
    For i = botRow To 1 Step -1
      If Cells(i, 10).Value = B3:B186 Then
        Rows(i).EntireRow.Copy
        Rows(i + 1).Insert Shift:=xlDown
      End If
   Next i
End Sub

我得到的错误是关于语法的。我的问题是我不明白任何代码的含义。原始数据是这样的: 原始数据

这就是我想要输入的内容: 想要的输出

标签: excelvbaexcel-formula

解决方案


我找到了一个完全符合我需要的代码。我从 stackexchange 上的另一个问题中得到它,但我想我会发布以防其他人需要它。

Sub CopyYes()
    Dim c As Range
    Dim j As Integer
    Dim Source As Worksheet
    Dim Target As Worksheet
    Dim Condition As Worksheet


    Set Source = ActiveWorkbook.Worksheets("source")
    Set Target = ActiveWorkbook.Worksheets("target")
    Set Condition = ActiveWorkbook.Worksheets("condition")

    j = 1    'This will start copying data to Target sheet at row 1
      For Each d In Condition.Range("A1:A86")
        For Each c In Source.Range("B2:B1893")
            If d = c Then
                Source.Rows(c.Row).Copy Target.Rows(j)
                j = j + 1
            End If
        Next c
    Next d
End Sub

推荐阅读