首页 > 解决方案 > 如果满足条件,将行从一个工作簿复制到另一个工作簿的最有效方法是什么?

问题描述

如果 workbook1 中的 G 列不为空,则将该整行复制到 workbook2。

现在,我这样做的方式只是“做直到”,里面有一个 If 语句。

我知道这可能远不是破解这个最有效的方法,所以我正在寻求帮助。

标签: excelvba

解决方案


我们不是为每个单元格查找、复制和粘贴,而是首先取所有符合给定条件的行的并集,然后只复制和粘贴一次。要使用下面的解决方案,请确保两个工作簿都已打开,并将它们的名称放在下面的字符串中,视情况而定:

Sub Macro1()
Dim wb1s as Worksheet, wb2s as Worksheet, rngG As Range, MySel As Range

'Change String as required based on your Workbook Name
'Change Worksheet number as required.
Set wb1s = Workbooks("workbook1.xlsx").Worksheets(1)
Set wb2s = Workbooks("workbook2.xlsx").Worksheets(1)

With wb1s
    Set rngG = .Range("G1", .Range("G" & .Rows.Count).End(xlUp))
End With

For Each cell In rngG
    If cell.Value <> "" Then
        If MySel Is Nothing Then
            Set MySel = cell.EntireRow
        Else
            Set MySel = Union(MySel, cell.EntireRow)
        End If
    End If
Next cell

If Not MySel Is Nothing Then MySel.Copy Destination:= wb2s.Range("A1")
End Sub

推荐阅读