【问题标题】:Macro to copy data from one sheet to another, only if not already present宏将数据从一张纸复制到另一张纸,仅当尚未存在时
【发布时间】:2012-08-31 22:12:06
【问题描述】:

我正在为这个宏而苦苦挣扎。我有两张床单;一个具有大量数据的数据集,这些数据由宏针对多个日期进行更新。

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

感谢您的帮助!

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    您的代码可以简化为:

    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
    

    【讨论】:

    • 关于这一点的说明 - 如果您在不同的数据导入中确实有多行相同,您将删除其中一行。
    • @enderland:好点子,如果是这种情况,那么 OP 将需要在数据中添加一些额外的“密钥”以防止这种情况发生
    • + 1 不错 :) @User1639703:您使用的是哪个 Excel 版本?
    • 作为一个非常新手的程序员,它是如此简单,它是复杂的! :) 非常感谢您的帮助,这是有道理的。我会玩一会儿,看看我得到了什么。使用Excel2007
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多