[英]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.