将工作表合并为一个

时间:2016-06-21 12:32:14

标签: excel vba excel-vba

我有一个masterworkbook,其中包含可变数量的工作表,其名称为table1,然后其余的表格称为数据,数据(1),数据(2)等。我想复制所有列和&表格以&#34开头的表格的行数据"并将其粘贴到名为" Table1"。

的工作表中

有人可以帮我这个吗?

2 个答案:

答案 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

答案 1 :(得分: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