2014-12-03 1 views
0

여러 다른 시트의 텍스트 기반 데이터로 통합 된 통합 문서가 있습니다. 모든 시트는 동일한 제목을 사용하지만 열에 다른 텍스트가 있습니다. 새로운 시트의 단일 열에있는 모든 시트의 C 열에 포함 된 정보를 나열 할 수 있기를 원합니다.여러 시트의 C 열의 텍스트 기반 데이터를 Excel의 마스터 시트에있는 단일 열로 나열

거의 100 개의 서로 다른 시트에서 복사하거나 지나갈 필요없이 모든 데이터를 단일 열로 가져 오는 방법이 있습니까?

+0

당신은 조금 VBA를 사용하는 반대까지 감동 있습니까? 꽤 간단합니다. – peege

답변

1

VBA를 사용하면 다음과 같은 해결책이 있습니다. 모듈을 통합 문서에 삽입하고 실행하면됩니다. F11> 삽입> 모듈. 이 코드를 복사하여 붙여넣고 재생을 누릅니다.

newSheet에서 정의한 이름으로 새 워크 시트가 만들어집니다. 그런 다음 얼마나 많은 사람들이 있거나 이름이 무엇이든 관계없이 모든 워크 시트 행 C (헤더 뒤에)의 내용을 가져 와서 새 이름에 추가하십시오. 1,000,000 개의 행을 초과하면 문제가 발생할 수 있습니다. 그 외에도 시트를 수행하고 싶지 않은 경우 If 문에 예외로 이름을 추가합니다.

테스트 :

Private Sub CopyAllSheetsCol() 

Dim WS As Worksheet 
Dim newSheet As String 
Dim lastRow As Long  'Last Row on source Sheet 
Dim tRow As Long  'target row 

newSheet = "Compiled" 'name can be changed here 

Sheets.Add.Name = newSheet 
tRow = 2    'Set the target Row to 2, Set the Header Row manually 

    For Each WS In ActiveWorkbook.Worksheets 
     If WS.Name <> newSheet Then  'Making sure we are only working with pre-existing sheets 

      lastRow = Sheets(WS.Name).Range("C2").End(xlDown).Row 'get last row of Column C on each Worksheet 

      For r = 2 To lastRow        'Loop through all rows skipping header 
      Sheets(newSheet).Cells(tRow, "C") = Sheets(WS.Name).Cells(r, "C") 'Copy to newSheet 
      tRow = tRow + 1          'Increment target row by 1 
      Next r 

     End If 
    Next 

End Sub 

Sheet1 Sheet2 Sheet3 Result

편집 : 설명

관련 문제