Excel VBA:合并每个循环的2个不同文件的行

我有2个不同的Excel文件。 我创build了第三个.xls文件,我将在此处编写macros。 该macros需要检查所有logging的第一个.xls文件中的数据,并将每个logging与其他.xls文件中的logging进行比较,如果匹配, 我应该将原始.xls文件中的全部logging复制到新的.xls文件中,并将新的单元格添加到具有信息的logging中。

这应该看起来像在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 

如果有人能给我一个提示或者只是一点帮助,我会很感激!

像这样的东西应该工作,改变它到你想要的:

 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 

一个path,你可以做如下:“C:\ ExcelFileName.xls”如果你比较多列,那么你将需要两个循环,我以为你只能做一对一。 所以你需要做这样的事情(我会让你为你的应用程序制定正确的逻辑):

 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