2011-10-18 8 views
1

2つの異なるExcelファイルがあります。私は3番目の.xlsファイルを作成しました。そこに私はマクロを書きます。そのマクロはすべてのレコードの最初の.xlsファイルのデータをチェックする必要があり、各レコードは他の.xlsファイルのレコードと比較されなければなりません。オリジナルの.xlsファイルから新しいファイル.xlsにレコード全体をコピーし、そのレコードに新しいセルを追加する必要があります。Excel VBA:2つの異なるファイルの行をループごとにマージする

これは、VBAのそれのようになります。誰もが私のヒントやヘルプの少しだけを与えることができれば

SrcFile1 = path 
SrcFile2 = path 

for each record in src file1.sheet1 
    temp valuecell=record.cell(B1) 
    for each recordToCompare in srcfile2.sheet1 
     temp valuecell2=recordToCompare.cell(B1) 
     if(valuecell1==valuecell2) then 
     ThisWorkbook.thisworksheet.activate 
     valuecell2.copy 
     add new cell = value valuecell1.range(A1) 
    end for each 
end for each 

、私は本当にいただければ幸いです!

答えて

0

このような何かが動作するはずです、あなたがそれをしたいどのようにそれを変更します。

SrcFile1 = "path" 
SrcFile2 = "path2" 

dim i as long 
dim wkb1 as workbook, wkb2 as workbook 
dim wks1 as worksheet, wks2 as worksheet 
dim v1 as variant, v2 as variant 

'Get workbooks 
set wkb1=getobject(srcfile1) 
set wkb2=getobject(srcfile2) 
'Get worksheets 
set wks1=wkb1.worksheets("Sheet1") 
set wks2=wkb2.worksheets("Sheet1") 
'Get data - transpose single column data so array will be one dimensional 
v1=application.transpose(wks1.range("A1:A" & wks1.range("A65000").end(xlup).row)) 
v2=application.transpose(wks2.range("A1:A" & ubound(v1))) 

for i=1 to ubound(v1) 
    if v1(i)<> v2(i) then 
    'Copy over different data, don't know how many columns you have, 
    ' you can also do a .end(xlleft) to get the last column 
    wks2.range("A" & i & ":Q" & i)=wks1.range("A" & i & ":Q" & i) 
    wks2.range("R" & i)= "Information here" 
    end if 
next i 

次のように行うことができますパス:あなたはその後、複数の列を比較する場合:「\のExcelFileName.xls C」 あなたは2つのループが必要です、私はあなたが1対1をやっていると思った。それについての

dim j as long 

v1=wks1.range(cells(1,1), cells(wks1.range("A65000").end(xlup).row _ 
    , wks.range("IV1").end(xlLeft)) 
v2=wks2.range(cells(1,1),cells(ubound(v1),ubound(v1,2)) 

for i=1 to ubound(v1) 
    for j=1 to ubound(v1,2) 
    if v1(i,j)<> v2(i,j) then 
     wks2.range(cells(i,1),cells(i,ubound(v1,2))) _ 
      =wks1.range(cells(i,1),cells(i,ubound(v1,2))) 
     wks2.range(cells(i,ubound(v1,2)+1))= "Information here" 
     exit for 
+0

[OK]を直接いくつかの質問:あなたはこのような何かをする必要があります(私はあなたのアプリケーションのための正しいロジックをうまくもらおう) – user1001679

+0

はどのように正確に私はどの形式でパスを作るのですか? 転置で書いたこと私は本当に理解していません、あなたはA1と言って、ちょっと文字列を作っていますが、それが10列の場合は1列のすべての情報の後になるでしょうか?私はちょうど1つのセルをチェックし、それを比較する必要があるので、私はちょうど新しい行の最後に何も変更せずに行全体をコピーする必要があるので、私はいくつかの追加情報で新しいセルを追加する必要があります。 それでも機能させるには、2つのネストループが必要です。 – user1001679

+0

私はあなたの質問に対する答えで自分の答えを編集します。 – Jon49