MENU

複数シートのデータを、縦にコピーし、1枚にまとめる(シート名の見出し)

無料アプリで、すぐに、エクセルVBAマクロを作成できます。

例として、「複数シートのデータを、縦方向にコピーし、1枚にまとめる」VBAマクロを作成します。

(ページの末尾に、VBAコード掲載)

事例

各シートのデータを、1枚のシートにまとめます

1枚のシートに、データをまとめました。

また、一覧データの左横に、シート名の表示もできます。

できました(^^)/

アプリの設定

アプリの設定です。

アプリのトップページ 

⇒▼シート 

⇒【ツール】複数シートのデータを1枚のシートにまとめる

 

表示されるVBAコード 

アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。

Sub デモ_51() '複数シートを1枚
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
'◆"全社計"シートがあるか調べる
Dim 貼付シート As Worksheet, あり As Boolean, 右下セル As String
For Each 貼付シート In Worksheets
    If 貼付シート.Name = "全社計" Then
        あり = True
        Exit For
    End If
Next 貼付シート
'◆無ければ全社計"シートを追加
If あり = False Then
  Worksheets.Add before:=Worksheets(1)
  ActiveSheet.Name = "全社計"
End If
'◆全社計"シートの内容クリア
Dim 右下 As String, 左上 As String
Worksheets("全社計").Select
Range("b2").CurrentRegion.Select
右下 = Cells(Selection.Row + Selection.Rows.Count - 1, Selection.Column + Selection.Columns.Count - 1).Address(False, False)
左上 = Range("b2").Offset(0, -1).Address(False, False)
Range(左上 & ":" & 右下).Clear
'◆シートが"全社計"ではない場合、"全社計"にデータを貼り付ける
Dim シート As Worksheet, セル範囲 As String, 貼り付け先範囲 As Range
For Each シート In Worksheets
    If シート.Name <> "全社計" Then
        '◆  コピーする範囲を取得
        シート.Select
'◆最終行を取得し、セル範囲を決める
Range("a2:g2").CurrentRegion.Select
右下セル = Cells(Selection.Row + Selection.Rows.Count - 1, Range("g2").Column).Address(False, False)
セル範囲 = "a2" & ":" & 右下セル

        '◆初回の貼り付けが、見出し行ではないか確認
        Set 貼り付け先範囲 = Worksheets("全社計").Cells(Rows.Count, Range("b2").Column).End(xlUp).Resize(1, Range(セル範囲).Columns.Count)
        If WorksheetFunction.CountBlank(貼り付け先範囲) = 貼り付け先範囲.Count Then
            シート.Range(セル範囲).Copy Worksheets("全社計").Range("b2")
            Worksheets("全社計").Range("b2").Offset(0, -1).Value = シート.Name
        Else
            Worksheets("全社計").Cells(Rows.Count, Range("b2").Column).End(xlUp).Offset(1, -1).Value = シート.Name
            シート.Range(セル範囲).Copy Worksheets("全社計").Cells(Rows.Count, Range("b2").Column).End(xlUp).Offset(1, 0)
        End If
    End If
Next シート
Worksheets("全社計").Activate
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub

手作業で数分かかる作業が、1秒で終わります。

ぜひ、アプリをご利用ください。

 

アプリはこちらから↓↓↓↓