私はmasterworkworkbookを持っています。これには、名前がtable1であり、残りのシートがdata、data(1)、data(2)などと呼ばれるワークシートがあります。すべての列&の名前が「data」で始まるスプレッドシートの行を「Table1」というワークシートに貼り付けます。ワークシートを1つにマージする
誰かがこれを手伝ってくれますか?
私はmasterworkworkbookを持っています。これには、名前がtable1であり、残りのシートがdata、data(1)、data(2)などと呼ばれるワークシートがあります。すべての列&の名前が「data」で始まるスプレッドシートの行を「Table1」というワークシートに貼り付けます。ワークシートを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
great!どのように私はデータシートの最初の行を抽出することができますbtw?各データシートの最初の行には、コピーしたくない列名が含まれています。サイズを変更する必要がありますが、ここでどのように使用できますか? –
コピーラインの '' A1''を '' A2''に変更してください。 '' .Range( "A2:E"&lRow)コピー先:=シート( "Table1")範囲( "A"&lRowTB) ' –
君は!できます!;あなたは時間があるときにもこれを見ることができますか? http://stackoverflow.com/questions/37946185/updating-value-pair-with-a-key –
を私はコードにいくつかの追加を行い、目的の列の小計を取る能力を追加しました:
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
あなたはすでに試したことを分かち合うことができますか? –
私は行の量を選択することによってこれをマクロでしか記録できませんが、これは可変に行わなければなりません。私はマクロを記録せずにそれを行うことはできません –
各シートのデータは同じ列にありますか? –