2012-09-04 6 views
0

Excel-Tables를 여러 파일에서 하나의 단일 파일로 복사하고 붙여 넣는 가장 영리한 방법은 무엇입니까? 그래서 espacially makro 내에서 복사 및 붙여 넣기에 사용 된 행의 범위를 어떻게 결정합니까?유니온 엑셀 시트. (서로 붙여 넣기)

+1

가장 간단한 방법은 워크 시트를 통해 루프하고 마지막 행을 찾을 것이다 (http://stackoverflow.com/questions/11169445/error-finding-last-used-cell-in-vba) 및 마지막 열 (http://stackoverflow.com/questions/11883256/copy-last-column-with-data-on-specified-row-to-next-blank-column)을 사용하여 범위를 식별하고 단순히 복사합니다. 위에. –

답변

1

테이블의 경우 ListObjects 컬렉션을 사용하여 참조 할 수 있습니다.

시도해보십시오 (대상 통합 문서에있는 코드)
이 코드는 모든 원본 테이블을 빈 테이블이있는 별도의 테이블로 복사합니다. 데이터를 단일 테이블에 병합하려면 lo.Range 대신 lo.DataBodyRange을 복사하고 헤더 행과 변환을 separetly 테이블에 처리해야합니다.

Sub CopyTables() 
    Dim wbFrom As Workbook 
    Dim shFrom As Worksheet 
    Dim shTo As Worksheet 
    Dim lo As ListObject 
    Dim clTo As Range 

    ' Setup Destination for copied tables 
    Set shTo = ThisWorkbook.Worksheets("DestinationSheet") ' <-- change name to your destination sheet name 
    ' remove any existing data 
    shTo.UsedRange.EntireRow.Delete 
    Set clTo = shTo.Cells(1, 1) 
    ' Loop through open workbooks 
    For Each wbFrom In Application.Workbooks 
     ' except destination wb 
     If wbFrom.Name <> ThisWorkbook.Name Then 
      ' loop through all sheets 
      For Each shFrom In wbFrom.Worksheets 
       ' loop through all tables on sheet 
       For Each lo In shFrom.ListObjects 
        lo.Range.Copy clTo 
        ' offset to next paste location, leave one empty row between tables 
        Set clTo = clTo.Offset(lo.ListRows.Count + 2, 0) 
       Next 
      Next 
     End If 
    Next 
End Sub 

대안이 아마 가장 빠른 방법은 사무실 클립 보드를 활성화하는 것, 한 시간 작업하는 경우 루프가 하나의 범위로

   For Each lo In shFrom.ListObjects 
        lo.DataBodyRange.Copy clTo 
        Set clTo = clTo.Offset(lo.ListRows.Count, 0) 
       Next 
2

를 붙여 넣기를 들어 (에 오른쪽 하단에 화살표 내부 탭). 따라서 최대 24 개의 분리 된 범위를 수집하여 서로 아래에 붙여 넣을 수 있습니다.

가정 데이터가 하나의 통합 문서에 아래의 예와 같이, 한 장에 2 행에서 시작, 당신은 할 수 있습니다

  • 가 첫 번째 시트
  • 에 모든 행을 선택하여 모든 탭을 선택합니다
  • 에서 Ctrl + C, Ctrl 키 + 페이지 아래로 반복적으로 모든
0을 붙여 새 시트를 선택
  • 모든 데이터를 복사 을 클릭합니다

    사용 된 범위 만 복사되므로 각 시트의 마지막 셀을 찾지 않아도 전체 시트 범위를 복사 할 수 있습니다.

    enter image description here