スポンサードリンク | |
列方向へまとめる | 行方向へまとめる |
シート「data1」 | シート「data2」 |
![]() |
![]() |
シート「data3」 | シート「data4」 |
![]() |
![]() |
シート「data5」 | |
![]() |
Sub sh_check5(ByVal newSh As String) Dim Sh As Worksheet, myFlag As Boolean myFlag = False For Each Sh In ThisWorkbook.Worksheets If Sh.Name = newSh Then myFlag = True '----全データシートのデータをクリアし、先頭へ移動します Worksheets(newSh).Cells.Clear Worksheets(newSh).Move before:=Sheets(1) Exit For End If Next Sh '----全データシートを先頭へ追加します If myFlag = False Then ActiveWorkbook.Worksheets.Add(before:=Worksheets(1)).Name = newSh End If End Sub |
Sub matome5() Dim Sh Dim newSh As String Dim i As Integer Dim lRow As Long, lCol As Long, lRow2 As Long Dim lCol2 As Long Application.ScreenUpdating = False '----まとめ用のシートの有無をチェックします newSh = "全データ" sh_check5 (newSh) '----まとめ用のシートへデータをコピーします For i = 2 To Worksheets.Count With Worksheets(i) lRow = .Cells(Rows.Count, 1).End(xlUp).Row lCol = .Cells(10, Columns.Count).End(xlToLeft).Column If lRow >= 2 Then lCol2 = Worksheets(1).Cells(10, Columns.Count).End(xlToLeft).Column + 1 If lCol2 = 2 Then lCol2 = 1 .Activate 'データをコピーして貼り付ける .Range(.Cells(1, 1), .Cells(lRow, lCol)).Copy Worksheets(1).Cells(1, lCol2) End If End With Next i Worksheets(1).Activate Range("A1").Select Application.ScreenUpdating = True End Sub |
For i = 2 To Worksheets.Count With Worksheets(i) 'データシートの最終行 lRow = .Cells(Rows.Count, 1).End(xlUp).Row 'データシートの最終列 lCol = .Cells(10, Columns.Count).End(xlToLeft).Column 'まとめシートの最終列(貼り付け先) If lRow >= 2 Then lCol2 = Worksheets(1).Cells(10, Columns.Count).End(xlToLeft).Column + 1 If lCol2 = 2 Then lCol2 = 1 .Activate 'データをコピーして貼り付ける .Range(.Cells(1, 1), .Cells(lRow, lCol)).Copy Worksheets(1).Cells(1, lCol2) End If End With Next i Worksheets(1).Activate Range("A1").Select Application.ScreenUpdating = True End Sub |
シート「data1」 | シート「data2」 |
![]() |
![]() |
シート「data3」 | シート「data4」 |
![]() |
![]() |
シート「data5」 | |
![]() |
Sub sh_check5(ByVal newSh As String) Dim Sh As Worksheet, myFlag As Boolean myFlag = False For Each Sh In ThisWorkbook.Worksheets If Sh.Name = newSh Then myFlag = True '----全データシートのデータをクリアし、先頭へ移動します Worksheets(newSh).Cells.Clear Worksheets(newSh).Move before:=Sheets(1) Exit For End If Next Sh '----全データシートを先頭へ追加します If myFlag = False Then ActiveWorkbook.Worksheets.Add(before:=Worksheets(1)).Name = newSh End If End Sub |
Sub matome6() Dim Sh Dim newSh As String Dim i As Integer Dim lRow As Long, lCol As Long, lRow2 As Long Dim lCol2 As Long Application.ScreenUpdating = False '----全データシートの有無をチェックします newSh = "全データ" sh_check5 (newSh) '----データをコピーします For i = 2 To Worksheets.Count With Worksheets(i) lRow = .Cells(Rows.Count, 1).End(xlUp).Row lCol = .Cells(10, Columns.Count).End(xlToLeft).Column If lRow >= 2 Then lRow2 = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1 If lRow2 = 2 Then lRow2 = 1 .Activate .Range(.Cells(1, 1), .Cells(lRow, lCol)).Copy Worksheets(1).Cells(lRow2, 1) End If .Range(.Cells(2, 1), .Cells(lRow, lCol)).Copy Worksheets(1).Cells(lRow2, 1) End If End With Next i Worksheets(1).Activate Range("A1").Select Application.ScreenUpdating = True End Sub |
スポンサードリンク
PageViewCounter
Since2006/2/27