2016-10-20 3 views
0

나는 원하는 것을 거의 가지고 있지만 거기에있는 것처럼 보일 수는 없습니다. 수백 개의 워크 시트에서 데이터를 가져 오려고합니다. A5에서 시작하여 AG (행이 다양 함)로가는 모든 시트의 값을 복사/붙여 넣기하고 싶습니다. 내가 가지고 있었던 한 가지 문제는 A 열이 나머지 행에도 영향을 미치지 않는다는 것입니다. 열 A는 데이터 수집에 중요하지 않으므로 B5에서 복사/붙여 넣기를 시작했습니다.VBA 붙여 넣기 루프 중에 값을 지정하고 워크 시트를 건너 뜁니다.

복사 한 모든 것을 복사했지만 각 시트의 몇 행은 수식이며 붙여 넣기 값이 필요합니다. 이것은 내가 정말로 잃어버린 곳입니다.

마지막으로 "전체"시트에 원하지 않는 "고급"및 "피벗"두 개의 시트가 있습니다.

Sub CombineData() 
    Dim Sht As Worksheet 
    For Each Sht In ActiveWorkbook.Worksheets 
    If Sht.Name <> "Total" And Sht.Range("B5").Value <> "" Then 
    Sht.Activate 
    LastRow = Range("B65536").End(xlUp).Row 
    Range("B5", Cells(LastRow, "AG")).Copy 
    Sheets("Total").Select 
    Range("B65536").End(xlUp).Offset(1, 0).Select 
    ActiveSheet.Paste 
    Else 
    End If 
    Next Sht 


    End Sub 

어떤 도움이 좋을 것 : 여기

내가 사용했던 것입니다. 고맙습니다! 이 같은

답변

0

무언가가 당신을 위해 작동합니다 :

Sub CombineData() 

    Dim wb As Workbook 
    Dim ws As Worksheet 
    Dim wsTot As Worksheet 
    Dim aData As Variant 

    Set wb = ActiveWorkbook 
    Set wsTot = wb.Sheets("Total") 

    For Each ws In ActiveWorkbook.Sheets 
     If InStr(1, " " & wsTot.Name & " Advanced Pivot ", " " & ws.Name & " ", vbTextCompare) = 0 _ 
     And Len(Trim(ws.Range("B5").Value)) > 0 Then 
      aData = ws.Range("B5:AG" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row).Value 
      wsTot.Cells(wsTot.Rows.Count, "B").End(xlUp).Offset(1).Resize(UBound(aData, 1), UBound(aData, 2)).Value = aData 
      Erase aData 
     End If 
    Next ws 

End Sub 
+0

감사합니다! 내 머리가 벽에 부딪쳐 폭발 할 것이라고 생각했습니다. – Trevor