除非已经复制,否则将行的一部分复制到另一个工作表。源行可以更改行

时间:2015-05-10 15:27:07

标签: excel vba excel-vba

我基本上需要将行从一个工作表复制到另一个工作表。我需要复制的行在表2,列A到N上,我需要复制在N列中具有唯一值的行。

N列只是=M1 or =M2,具体取决于哪一行有数据。

因此我将使用工作表计算事件来尝试捕获它。

棘手的部分是,每次在表2中的最后一行中存在新值,然后N从表M中填充。我不希望复制先前复制的行。也可能是行的整个内容改变位置或其中一行消失而另一行将填充其在第2页上的间隙。所以我需要避免计算事件从{{1}中识别出来行。即如果它已被复制但被重新计算 - 我不需要再次复制它。

我想一种方法是在工作表1中的N列值中存在N列值时查找。因为如果该行消失,那么它将在工作表1上。它将因为我有其他公式把它放在那里。

我的起点是这是下面的代码,我在第1页的工作表代码中设置了这个

=M

我也有这项工作,我需要将其纳入该工作表计算

Private Sub Worksheet_Calculate()
Dim i As Long
Dim lr1 As Long, lr2 As Long
Dim Delta As String
Dim wks1 As Worksheet, wks2 As Worksheet

Set wks1 = ActiveSheet
Set wks2 = Worksheets("Sheet2") 'change to suit
lr1 = wks1.Cells(Rows.Count, "N").End(xlUp).Row

For i = 2 To lr1

        lr2 = wks2.Cells(Rows.Count, "A").End(xlUp).Row + 1
        wks1.Cells(i, "N").EntireRow.Copy Destination:=wks2.Cells(lr2, "A")

Next i
End Sub

1 个答案:

答案 0 :(得分:0)

最快的方法是确保复制所有想要的行然后调用remove dublicates函数,这几乎是即时消息。您只需将您的唯一列设置为指标

即可