取两个excel之间的差异并复制回第一个优秀的差异

时间:2016-03-27 12:21:38

标签: excel vbscript macros

我能够创建一个从一个excel复制到另一个excel的VBscript但我在另一个问题上需要帮助。

我有两个excel工作表。 excel之间几乎没有行(唯一行由列&#34标识; id")。 我需要将工作表2中的行复制到工作表1中不存在的工作表。

Worksheet1

id  Product_code Product_Name  City     Country    Price
1    x1           Xbox         Sydney   Australia  100
2    X2           P3           London   UK         100
3    x3           Iphone       Sydney   Australia  100
4    X4           Ipad         London   UK         100

Worksheet2

 id  Product_code  Quantity  Product_Name  City     Country    Price
    1    x1         10      Xbox         Sydney   Australia  100
    2    X2         30      P3           London   UK         100
    3    x3         20      Iphone       Sydney   Australia  100
    4    X4         10      Ipad         London   UK         100
    5    x5         15      Dell         Sydney   Australia  100
    6    X6         20      HP           London   UK         100

几点需要注意。

  1. "标识"列唯一标识工作表中的每条记录。
  2. 工作表中的列数可以不同。我们只需要复制粘贴常用记录。
  3. 运行我的VB脚本后,我的工作表1应该看起来像

    worksheet1。

    id  Product_code Product_Name  City     Country    Price
    1    x1           Xbox         Sydney   Australia  100
    2    X2           P3           London   UK         100
    3    x3           Iphone       Sydney   Australia  100
    4    X4           Ipad         London   UK         100
    5    x5           Dell         Sydney   Australia  100
    6    X6           HP           London   UK         100
    

    这是我从一个excel复制到另一个excel的代码。 1.无论如何我可以删除重复的身份

    Set objExcel = CreateObject("Excel.Application")
    objExcel.Visible = True
    Set Excel1= objExcel.Workbooks.Open("D:\x.xlsm")
    Set Excel2= objExcel.Workbooks.Open("D:\y.xlsm")
    Excel1.Worksheets("X").UsedRange.Copy
    Excel2.Worksheets("Y").Range("A1").PasteSpecial -4163
    Excel1.save
    Excel2.save
    Excel1.close
    Excel2.close
    objExcel.quit
    set objExcel=nothing
    

1 个答案:

答案 0 :(得分:0)

最快的方法是从两张纸上复制数据并粘贴到输出表中,然后从输出表中删除重复的行

    '---1 first copy the data from sheet1
    Sheets("Sheet1").Usedrange.Copy
    '---2 paste in output sheet
    Sheets("output").Activate
    'Select the target range
    Range("A1").Select
    'Paste in the target destination
    ActiveSheet.Paste
    '---3 select second sheet and delete the 1st row header
    Sheets("Sheet2").Rows(1).EntireRow.Delete
    ' delete qunatity column
    Sheets("Sheet2").Columns(3).EntireColumn.Delete
    '---4  copy the data from sheet2
    Sheets("Sheet2").usedrange.Copy
    'Activate the destination worksheet
    '---5 paste in output sheet
    Sheets("output").Activate
    ourputrowscount=Sheets("output").usedrange.rows.count
    'Select the target range
    Range("A"& ourputrowscount+1).Select
    'Paste in the target destination
    ActiveSheet.Paste
    '---6 remove duplicate rows in column 1
    Set Rng = Sheets("output").usedrange
    Rng.RemoveDuplicates Columns:=Array(1), Header:=xlYes