2013-06-07 2 views
0

필자는 Excel과 관련된 문제를 쉽게 (논리 적으로) 쉽게 이해할 수 있지만 Visual Basic에 대한 지식은 매우 제한적입니다. 나는 약 30 개의 .xlsm 파일이 담긴 폴더 몇 개를 가지고있다. 각 파일은 하루를 나타낸다. 각 파일의 시트 13과 14에는 필자가 필요로하는 두 가지 정보가 포함 된 시간표가 있습니다 (시트 13은 낮으로, 시트 14는 밤하늘입니다). A 열에는 직원 이름이 있고 I 열에는 차량 번호가 있습니다. 내가해야할 일은 차량 번호 MT332를 사용하는 직원의 이름을 추출하는 것입니다. 예를 들어Visual Basic을 사용하여 Excel에서 여러 파일의 데이터를 가져올 수 있습니까?

,의는이 파일 중 하나에서 시트 중 하나입니다 가정 해 봅시다 :

Row A:       Row I: 
Doe, John       MT426 
Smith, Jim       MT856 
Richard, Greg      MT332 
Parson, Fred      MT265 

I가 목록에 파일의 시트에서 이름이 '리차드, 그렉을'추출해야 별도의 스프레드 시트. 목록의 뜻은 다음과 같이 보입니다 :

 Drivers for MT332 
    Days    Nights 
Richard, Greg  Hamill, Susan 
Lunz, Trent   Forter, Heath 
    ...     ... 

데이즈 열 시트 (13)에서오고, 밤 열은 각 파일에 시트 (14)에서 온다.

나를 안내 해주시기 바랍니다. 나는 VB 구문의 아주 조금을 알고있다!

감사합니다.

(참고 :이 이름은 진짜입니다)

답변

0

이를보십시오. 드라이버 데이터를 포함

  1. 열기 모든 통합 문서는
  2. 이제 새 통합 문서를 엽니 다 붙여이 코드 및 코드는 모든 통합 문서를 순환

공격 실행, 데이터를 잡고, 및 활성 통합 문서의 관련 열에 추가합니다.

Sub GetMT332Drivers() 
    Dim wbk As Workbook, cl As Range 

    Range("A1") = "Drivers for MT332" 
    Range("A2") = "Days" 
    Range("B2") = "Nights" 

    For Each wbk In Workbooks 
     If wbk.Name <> ThisWorkbook.Name Then 
      For Each cl In wbk.Worksheets("Sheet13").Range("I2:I" & wbk.Worksheets("Sheet13").Range("I1").End(xlDown).Row) 
       If cl = "MT332" Then 
        Worksheets("Sheet1").Range("A" & Worksheets("Sheet1").Range("A1048576").End(xlUp).Row + 1) = cl.Offset(0, -8) 
       End If 
      Next cl 

      For Each cl In wbk.Worksheets("Sheet14").Range("I2:I" & wbk.Worksheets("Sheet14").Range("I1").End(xlDown).Row) 
       If cl = "MT332" Then 
        Worksheets("Sheet1").Range("B" & Worksheets("Sheet1").Range("B1048576").End(xlUp).Row + 1) = cl.Offset(0, -8) 
       End If 
      Next cl 
     End If 
    Next 
End Sub 
관련 문제