2016-06-21 67 views
1

我有一個精簡版工作簿,其中包含可變數量的工作表,其中名稱爲table1,然後表格的其餘部分稱爲數據,數據(1),數據(2)等。我想要複製所有名稱以「data」開頭的表格的&行並將其粘貼到名爲「Table1」的工作表中。將工作表合併爲一個

有人可以幫助我嗎?

+0

你可以分享你已經嘗試過的嗎? –

+0

我只能通過選擇行數來記錄這個宏,但這必須可變地完成。我不能不記錄一個宏 –

+0

是否在同一列中的每個工作表上的數據? –

回答

1

根據這些信息,你可以嘗試這樣的事:

Sub getDataFromSheets() 

'loop throug all sheets in workbook 
For Each sh In ThisWorkbook.Worksheets 

'check sheet name 
If Left(sh.Name, 4) = "data" Then 

    With sh 
     'get last row on data sheet 
     '***** CHANGE THE COLUMN LETTER IF REQUIRED 
     lRow = .Cells(.Rows.Count, "A").End(xlUp).Row 
     'get last row on table sheet 
     lRowTB = Sheets("Table1").Cells(Sheets("Table1").Rows.Count, "A").End(xlUp).Row + 1 
     'copy the data from data to table sheet 
     '***** ADJUST THE COLUMN LETTERS TO YOUR NEED ******* 
     .Range("A1:E" & lRow).Copy Destination:=Sheets("Table1").Range("A" & lRowTB) 

    End With 

End If 

Next sh 

End Sub 
+0

很好!我怎樣才能提取數據表的第一行btw?每個數據表的第一行包含列名,我不想複製。調整大小應該是答案,但我如何在這裏使用它? –

+0

在複製行中將'A1'更改爲'A2':.Range(「A2:E」&lRow).Copy Destination:= Sheets(「Table1」)。Range(「A」&lRowTB)' –

+0

您!有用!;當你有時間的時候你能看看這個嗎? http://stackoverflow.com/questions/37946185/updating-value-pair-with-a-key –

0

我做了一些增加的代碼,並添加到取所需列的小計的能力:

Application.DisplayAlerts = False 
    ActiveWorkbook.Worksheets("Grand_Table").Delete 
    Application.DisplayAlerts = True 

Sheets(1).Select 
Worksheets.Add 
Sheets(1).Name = "Grand_Table" 
Sheets(2).Activate 
Range("A1").EntireRow.Select 
Selection.Copy Destination:=Sheets(1).Range("A1") 
For J = 2 To Sheets.Count 
Sheets(J).Activate 
Range("A1").Select 
Selection.CurrentRegion.Select 
Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select 
Last = FindLastRow(Sheets(1)) 
Selection.Copy 
With Sheets(1).Cells(Last + 1, "A") 
.PasteSpecial xlPasteValues 
    .PasteSpecial xlPasteValues 
    .PasteSpecial xlPasteFormats 
    End With 
    Next 
    'Application.CutCopyMode = False 
Sheets("Grand_Table").Activate 

Sheets("Grand_Table").UsedRange.Select 

Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes, _ 
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 

Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(6), _ 
Replace:=True, PageBreaks:=True, SummaryBelowData:=True 
相關問題