Excel - 複数のシートから 1 つのシートにデータをコピーする

Excel - 複数のシートから 1 つのシートにデータをコピーする

複数のシートにデータをエクスポートするプログラムを使用しており、これらすべてを同じシートの上下に配置する必要があります。

ワークシートについて - ワークシートの名前はエクスポートごとに異なるため、100 を超える異なるシートが存在する場合があるため、これを定義する必要はありません。

ワークシート内 - さまざまな行と列のデータです (空白の行までメイン シートの次の使用可能な空白行にコピーする必要があります)。

すべてのデータをコピーする必要があるワークシート - 最初は空白ですが、他のワークシートからの行のコピーに基づいてすべてのデータを重ね合わせる必要があります。(必要に応じて、定義済みの名前を付けることができます)

私は VBA の初心者なので、上記の説明が役立つことを願っています。

現在の VBA が動作しません:

 Sub SheetLoopPasteData()

Dim ws As Worksheet
Dim wsSheet As Worksheet
Set wsSheet = Sheets("Sheet2")

For Each ws In Worksheets
    ws.Activate
    variable = Cells(Rows.Count, 1).End(xlUp).Row
    Rows("1:" & variable).Copy _
    Destination:=wsSheet.Range("A" & (wsSheet.Range("A" & wsSheet.Rows.Count).End(xlDown).Row + 1))

Next



End Sub

答え1

VBA (マクロ) を使用すると、すべてのワークシートから使用範囲を新しいワークシートにコピーすることができ、まさにデータ統合と同じように機能すると思います。

Sub CombineData()

    Dim I As Long
    Dim xRg As Range

    On Error Resume Next

    Worksheets.Add Sheets(1)

    ActiveSheet.Name = "MasterSheet"

   For I = 2 To Sheets.Count
        Set xRg = Sheets(1).UsedRange

        If I > 2 Then
            Set xRg = Sheets(1).Cells(xRg.Rows.Count + 1, 1)
        End If

        Sheets(I).Activate
        ActiveSheet.UsedRange.Copy xRg
    Next

End Sub

使い方:

  • コピーペーストこのコードをモジュールとして保存します。
  • マクロは既存のワークブックに次の名前の新しいシートを作成します。マスターシート編集可能です。
  • 先頭行から最後までデータをコピーする代わりに、使用範囲この方法は、あらゆる更新に対応するためです。

答え2

これは非常に良いのですが、特定の範囲に対応する必要があります。これは可能でしょうか?


VBA (マクロ) を使用すると、すべてのワークシートから使用範囲を新しいワークシートにコピーすることができ、まさにデータ統合と同じように機能すると思います。

サブ CombineData()

Dim I As Long
Dim xRg As Range

On Error Resume Next

Worksheets.Add Sheets(1)

ActiveSheet.Name = "MasterSheet"

I = 2 の場合、Sheets.Count に xRg = Sheets(1).UsedRange を設定します。

    If I > 2 Then
        Set xRg = Sheets(1).Cells(xRg.Rows.Count + 1, 1)
    End If

    Sheets(I).Activate
    ActiveSheet.UsedRange.Copy xRg
Next

End Sub 仕組み:

このコードをコピーしてモジュールとして貼り付けます。マクロは、既存のワークブックに MasterSheet という名前の新しいシートを作成します。このシートは編集可能です。先頭行から最後までデータをコピーする代わりに、すべての更新に対応する UsedRange メソッドを使用しました。

関連情報