簡體   English   中英

Excel VBA:合並每個循環中來自2個不同文件的行

[英]Excel VBA: Merging rows from 2 different files with for each loops

我有2個不同的Excel文件。 我創建了第三個.xls文件,我將在其中編寫宏。 該宏需要檢查第一個.xls文件中的所有記錄的數據,並且應將每個記錄與另一個.xls文件中的記錄進行比較,如果它們匹配; 我應該將整個記錄從原始.xls文件復制到新的.xls文件,並向該記錄添加一個新單元格並包含信息。

在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

您可以按照以下方式創建路徑:“ 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM