2013-04-07 1 views
0

나는 특정 사건에 접근하려고 노력해 왔지만 지금까지 내가 어디에서 왔는지를 아직 알지 못했다. 어떤 도움이라도 대단히 감사하겠습니다.Excel 항목 이름 검색 일치 - 2 파일 열기

내가 여기에서 나의 특별한 경우로 만들 수 있는지 알고 싶었던 것을 발견했습니다. 두 개의 개별 파일을 사용하는 대신 file2의 내용을 sheet3으로 복사하여이 파일이 제대로 작동하는지 확인했습니다. 그러나 값을 바꾼 후에도 여전히 오류가 있습니다 (런타임 오류 9. 첨자가 ​​범위를 벗어남)

원래 두 개의 Excel 파일이 있습니다.

File1에는 sheet2의 A5 다음에 시작하는 columnE에 항목 이름이 있습니다. File2는 sheet1의 A3 다음에 시작하는 columnA에 항목 이름을가집니다.

file1의 ColumnE에있는 셀 값과 일치하는 file2의 ColumnA에있는 각 셀 값에 대해 File1의 ColumnD에서 발견되는 file2의 ColumnD에 숫자 (바코드)를 넣을 수있는 매크로를 작성하고 싶습니다.

즉, columnD에 바코드가없는 항목 이름을 가진 File2, File1 ColumnE의 모든 항목 검색 목록, 같은 행의 정확한 이름 일치 찾기 D 열의 복사 값, 바코드 포함, 바코드 붙여 넣기 File2 빈 columnD에 값. 코드 아래

Sub Find_Barcode() 

Dim PartRngSheet1 As Range, PartRngSheet2 As Range 
Dim lastRowSheet1 As Long, lastRowSheet2 As Long 
Dim cl As Range, rng As Range 

lastRowSheet1 = Worksheets("Sheet2").Range("E65536").End(xlUp).Row 
Set PartRngSheet1 = Worksheets("Sheet2").Range("A1:A" & lastRowSheet1) 

lastRowSheet2 = Worksheets("Sheet3").Range("A65536").End(xlUp).Row 
Set PartRngSheet2 = Worksheets("Sheet3").Range("A1:A" & lastRowSheet2) 

For Each cl In PartRngSheet1 
    For Each rng In PartRngSheet2 
     If (cl = rng) Or (cl = rng.Offset(0, 1)) Then 
      rng.Offset(0, 4) = cl.Offset(0, 1) 
     End If 
    Next rng 
Next cl 

End Sub 

답변

0

시도 : 가정을 File1 & 파일 2 두 개의 서로 다른 통합 문서이고 열려 있습니다.

Sub Find_Barcode() 

    Dim lastRow As Long, rngFind As Range, rngFound As Range 
    lastRow = Workbooks("File2").Sheets("sheet1").Range("A65000").End(xlUp).Row 

    Workbooks("File1").Activate 
    Set rngFind = Workbooks("File1").Sheets("sheet2").Range("E5", Range("E65000").End(xlUp).Row) 


    For i = 3 To lastRow 

     Set rngFound = rngFind.Find(what:=Workbooks("File2").Sheets("sheet1").Cells(i, 1)) 
     If Not rngFound Is Nothing Then 
      rngFound.Offset(0, -1).Copy Workbooks("File2").Sheets("sheet1").Cells(i, 4) 
     End If 

    Next 

End Sub 
+0

Santosh, 답변 해 주셔서 감사합니다. 추가하는 것을 잊어 버렸습니다. VBA에 비교적 익숙하지 않습니다. 지금 당장에 배우면서 실제로 배우고 있습니다.이 언어를 사용하여 해결해야 할 첫 번째 문제입니다. 나는 아직도 이유 또는 방법을 이해하려고 노력하고있다 haha. 느린 응답에 대해 사과하지만, 당신이 제안한 것을 시도했습니다. 나는 여전히 오류가 발생하고있다. 그래도 괜찮아. 도와 줘서 고마워! :) –