2016-03-27 7 views
0

Excelから別のExcelにコピーするVBscriptを作成できましたが、別の問題で助けが必要です。2つの違いをとってExcelをコピーして最初にコピーを差し替えます

私は2つのExcelワークシートを持っています。 エクセル間に共通する行はほとんどありません(ユニークな行は列 "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. "Id"ワークシートの各レコードを一意に識別します。
  2. ワークシートの列の数は異なる場合があります。私たちは貼り付け共通レコードをコピーする必要があります。

私は私のVBスクリプトを実行した後、私のworksheet1は

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 

ここからは、1つのエクセルから別のエクセルにコピーするコードがあります。 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 
+0

を重複行を削除することですとにかくありスクリプト、あなたはVBA、つまりVBSを意味しますか?同じではありません。あなたがわからない場合、私はそれがVBAだと思います。また、何を試しましたか?いくつかのコードを投稿すると、私たちは喜んで助けてくれるでしょうが、私たちは無料であなたの仕事をしません。 – vacip

+0

私はVBSを意味します。私はただ一つのシートから別のシートにコピーするコードを持っています。私は2つのワークシート@vacipの違いを見つけることができませんでした。質問に自分のコードを追加しました。 – nnnnmmm

+0

ああ、よくやった。実際には、Excelには重複削除機能が組み込まれています。あなたはそれをVBSから呼び出すことができます。私は、マクロを記録し、そのコードを使用することをお勧めします。少し変更するだけで、あなたのVBSスクリプトに適合します。 – vacip

答えて

0
重複したIDを削除することができ

最速の方法は、両シートからデータをコピーして、出力用紙に貼り付け、その後、あなたはVBを言うとき、出力用紙から

'---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 
+0

コピーペーストは決して最速ではありません。それはVBAでできる最も遅いものの1つです...直接2つの範囲を等しくするか、パラメータを使ってコピーするか、何もしないでクリップボードを避けてください... – vacip

+0

列数は両方のシートで同じではありません。列が同じでない場合は、シート2からシート1にコピーする必要があります。 – nnnnmmm

+0

、次に異なる列を削除します。私はqunatity列を削除するようにコードを更新しました –

関連する問題