여러 다른 시트의 텍스트 기반 데이터로 통합 된 통합 문서가 있습니다. 모든 시트는 동일한 제목을 사용하지만 열에 다른 텍스트가 있습니다. 새로운 시트의 단일 열에있는 모든 시트의 C 열에 포함 된 정보를 나열 할 수 있기를 원합니다.여러 시트의 C 열의 텍스트 기반 데이터를 Excel의 마스터 시트에있는 단일 열로 나열
거의 100 개의 서로 다른 시트에서 복사하거나 지나갈 필요없이 모든 데이터를 단일 열로 가져 오는 방법이 있습니까?
여러 다른 시트의 텍스트 기반 데이터로 통합 된 통합 문서가 있습니다. 모든 시트는 동일한 제목을 사용하지만 열에 다른 텍스트가 있습니다. 새로운 시트의 단일 열에있는 모든 시트의 C 열에 포함 된 정보를 나열 할 수 있기를 원합니다.여러 시트의 C 열의 텍스트 기반 데이터를 Excel의 마스터 시트에있는 단일 열로 나열
거의 100 개의 서로 다른 시트에서 복사하거나 지나갈 필요없이 모든 데이터를 단일 열로 가져 오는 방법이 있습니까?
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
편집 : 설명
당신은 조금 VBA를 사용하는 반대까지 감동 있습니까? 꽤 간단합니다. – peege