2011-10-18 3 views
1

두 개의 다른 Excel 파일이 있습니다. 세 번째 .xls 파일을 만들었습니다. 여기서 매크로를 작성합니다. 해당 매크로는 모든 레코드에 대해 첫 번째 .xls 파일의 데이터를 검사해야하며 각 레코드는 다른 .xls 파일의 레코드와 비교되어야합니다. 원래 .xls 파일의 전체 레코드를 새로운 .xls 파일로 복사하고 정보가있는 해당 레코드에 새 셀을 추가해야합니다. 누군가가 나에게 힌트 나 도움의 조금을 줄 수 있다면Excel 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 

, 정말 감사하겠습니다 :

이것은 VBA에서처럼 보일 것이다! 이 같은

답변

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 

다음과 같이 할 수있는 경로 "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 
+0

확인을 직접 몇 가지 질문 : 그래서 당신은 같은 것을 할 필요가있을 것이다 (나는 당신이 당신의 응용 프로그램에 대한 올바른 논리를 작업 할 수 있습니다) – user1001679

+0

는 정확히 어떻게 내가하는 형식으로 경로를 어떻게해야합니까? 당신이 전치에서 쓴 것은 정말로 이해하지 못합니다. 그렇다면 A1을 말하면서 문자열을 만들지 만 10 열이라면 1 열의 모든 정보가 끝날 것입니다. 왜냐하면 한 행에서 나는 단지 하나의 셀을 체크하고 그것을 비교할 필요가있다. 그리고 나서 나는 단지 모든 행을 복사 할 필요가있다. 그러나 새로운 xls의 그 행의 끝에서만 아무것도 변경하지 않고 나는 추가 정보를 가진 새로운 셀을 추가 할 필요가있다. . 작동 시키려면 두 개의 중첩 루프가 필요합니다. – user1001679

+0

질문에 대한 답변으로 내 답변을 편집하겠습니다. – Jon49

관련 문제