Vba 宏将数据从一张图纸复制到另一张图纸(仅当尚未存在时)

Vba 宏将数据从一张图纸复制到另一张图纸(仅当尚未存在时),vba,excel,Vba,Excel,我正在与这个宏作斗争。我有两张床单;一个包含大量数据集的数据集,该数据集由宏针对多个日期进行更新 我希望将数据从该工作表(“rawdata1”)复制到另一个工作表(“sheet1”),但前提是数据尚未存在(不希望“sheet1”上有相同数据的多个条目)。我可以将数据复制到另一个工作表,但是当宏多次运行时,如何避免重复条目 到目前为止,我掌握的代码是: Sub CopyData() 'Copy data if not present in other sheet '??? Sheets("raw

我正在与这个宏作斗争。我有两张床单;一个包含大量数据集的数据集,该数据集由宏针对多个日期进行更新

我希望将数据从该工作表(“rawdata1”)复制到另一个工作表(“sheet1”),但前提是数据尚未存在(不希望“sheet1”上有相同数据的多个条目)。我可以将数据复制到另一个工作表,但是当宏多次运行时,如何避免重复条目

到目前为止,我掌握的代码是:

Sub CopyData()
'Copy data if not present in other sheet
'???

Sheets("rawdata1").Select
Range("A4:AC10000").Select
Range("A4:AC10000").Copy

Sheets("Sheet1").Select
  ' Find the last row of data
  FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
  ActiveSheet.Paste
  Sheets("Sheet1").Select

谢谢你的帮助

您的代码可以简化为:

Sheets("rawdata1").Range("A4:AC10000").Copy _
      Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Offset(1,0)    
Sheets("Sheet1").Select
至于防止同一行的多个副本,如果您在Excel 2007+中,那么您可以在运行副本后使用RemovedUpplicates:这将减少范围,仅限于唯一行。注意:您需要调整
Columns
参数以包括所有相关的列号

ActiveSheet.UsedRange("$A$1:$E$8").RemoveDuplicates _
    Columns:=Array(1, 2, 3, 4, 5), Header:=xlYes 'or xlNo, depending on your data

您的代码可以简化为:

Sheets("rawdata1").Range("A4:AC10000").Copy _
      Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Offset(1,0)    
Sheets("Sheet1").Select
至于防止同一行的多个副本,如果您在Excel 2007+中,那么您可以在运行副本后使用RemovedUpplicates:这将减少范围,仅限于唯一行。注意:您需要调整
Columns
参数以包括所有相关的列号

ActiveSheet.UsedRange("$A$1:$E$8").RemoveDuplicates _
    Columns:=Array(1, 2, 3, 4, 5), Header:=xlYes 'or xlNo, depending on your data

注意:如果在不同的数据导入中有多行是相同的,您将删除其中一行。@enderland:这一点很好,如果是这样,OP将需要添加一些额外的“键”为了防止这种情况发生,请输入数据+1很好的一个:)@User1639703:您使用的是哪个Excel版本?作为一个非常新手的程序员,它非常简单,但非常复杂!:)非常感谢你的帮助,这很有意义。我会玩一会儿,看看能得到什么。使用Excel2007A对此进行说明-如果在不同的数据导入中有多行相同,则将删除其中一行。@enderland:这一点很好,如果是这样,OP将需要添加一些额外的“键”为了防止这种情况发生,请输入数据+1很好的一个:)@User1639703:您使用的是哪个Excel版本?作为一个非常新手的程序员,它非常简单,但非常复杂!:)非常感谢你的帮助,这很有意义。我会玩一会儿,看看能得到什么。使用Excel2007