宏将数据从一个工作表复制到另一个工作表,仅在尚未存在的情况下

时间:2012-08-31 22:12:07

标签: excel vba excel-vba

我正在努力解决这个问题。我有两张纸;一个包含大量数据的数据,这些数据由宏针对多个日期进行更新。

我想将该工作表中的数据(“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

感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

您的代码可以简化为:

Sheets("rawdata1").Range("A4:AC10000").Copy _
      Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Offset(1,0)    
Sheets("Sheet1").Select

至于防止同一行的多个副本,如果您使用的是Excel 2007+,则可以在运行副本后使用RemoveDuplicates:这会将范围缩小到仅限于唯一行。注意:您需要调整Columns参数以包含所有相关的列号。

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