Вместо того, чтобы искать, копировать и вставлять для каждой ячейки, мы сначала берем объединение всех строк, которые соответствуют данному критерию, а затем копируем и вставляем только один раз.Чтобы использовать приведенное ниже решение, убедитесь, что обе рабочие книги открыты, и укажите их имена в соответствующих строках ниже:
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