データを簡単に分析して有用な情報に変換できるように、複数のシートを1つのシートにマージしたい場合があります。この記事では、VBAを使用して複数のワークシートを1つのワークシートにマージする方法について説明します。

例:

008

ここでは、データを別のワークシートに返すサーバーからいくつかのデータをフェッチしました。もう1枚追加して「マスター」と名付けました。他のシート名は関係ありません。

次に、このマクロを実行します。

Sub Merge_Sheets()

Dim startRow, startCol, lastRow, lastCol As Long

Dim headers As Range

'Set Master sheet for consolidation

Set mtr = Worksheets("Master")

Set wb = ThisWorkbook

'Get Headers

Set headers = Application.InputBox("Select the Headers", Type:=8)

'Copy Headers into master

headers.Copy mtr.Range("A1")

startRow = headers.Row + 1

startCol = headers.Column

Debug.Print startRow, startCol

'loop through all sheets

For Each ws In wb.Worksheets

'except the master sheet from looping

If ws.Name <> "Master" Then

ws.Activate

lastRow = Cells(Rows.Count, startCol).End(xlUp).Row

lastCol = Cells(startRow, Columns.Count).End(xlToLeft).Column

'get data from each worksheet and copy it into Master sheet

Range(Cells(startRow, startCol), Cells(lastRow, lastCol)).Copy _

mtr.Range("A" & mtr.Cells(Rows.Count, 1).End(xlUp).Row + 1)

End If

Next ws

Worksheets("Master").Activate

End Sub

このVBAマクロを使用してシートをマージする方法は?

。新しいシートを挿入し、ワークブックで「マスター」という名前を付けます。必要に応じて、後で名前を変更します。

。 VBAエディターにモジュールを挿入し、上記のVBAコードをコピーします。

。マクロを実行します。

。見出しを選択するように求められます。見出しを選択して[OK]をクリックします。

そして、それは行われます。すべてのシートがマスターにマージされます。

0012

どのように機能しますか?

VBAでのオブジェクトと変数の作成の基本を知っていることを前提としています。最初の部分では、操作に必要なオブジェクトと変数を作成しました。

私が説明したことのほとんどは、vbaコードのコメントを使用して説明しました。

このvbaコードの主要部分を見てみましょう。

For Each ws In wb.Worksheets

'except the master sheet from looping

If ws.Name <> "Master" Then

ws.Activate

lastRow = Cells(Rows.Count, startCol).End(xlUp).Row

lastCol = Cells(startRow, Columns.Count).End(xlToLeft).Column

'get data from each worksheet and copy it into Master sheet

Range(Cells(startRow, startCol), Cells(lastRow, lastCol)).Copy _

mtr.Range("A" & mtr.Cells(Rows.Count, 1).End(xlUp).Row + 1)

End If

Next ws

以前の記事では、シートをループする方法と、vbaを使用して最後の行と列を取得する方法を学びました。

ここでは、forループを使用してメインワークブックの各シートをループしています。

For Each ws In wb.Worksheets次に、「マスター」シートをループから除外します。これは、そのシートにデータを統合するためです。

次に、最後の行と最後の列番号を取得します。

次の行は非常に重要です。複数の操作を1行にまとめました。

Range(Cells(startRow、startCol)、Cells(lastRow、lastCol))。Copy _ mtr.Range( “A”&mtr.Cells(Rows.Count、1).End(xlUp).Row + 1)

まず、startRow、startCol、lastRow、lastColを使用して範囲を形成します。

Range(Cells(startRow, startCol), Cells(lastRow, lastCol))

We have copied it using copy method of range.

Range(Cells(startRow, startCol), Cells(lastRow, lastCol)).Copy

We pasted it directly into first blank cell after last non blank cell in column A of master sheet (mtr.Cells(Rows.Count, 1).End(xlUp).Row + 1).

Range(Cells(startRow, startCol), Cells(lastRow, lastCol)).Copy _

mtr.Range("A" & mtr.Cells(Rows.Count, 1).End(xlUp).Row + 1)

このループはすべてのシートに対して実行され、各シートのデータをマスターシートにコピーします。

最後に、マクロの最後で、マスターシートをアクティブにして出力を確認します。

そうですね、これがワークブックのすべてのシートをマージする方法です。このVBAコードまたはExcelのトピックに関する質問がある場合は、以下のコメントセクションでお知らせください。

ファイルのダウンロード:

`link:/wp-content-uploads-2019-11-Consolidate_Merge-multiple-worksheets-into-one-master-sheet-using-VBA.xls [__Consolidate_Merge_Merge複数のワークシートをVBAを使用して1つのマスターシートに]

関連記事:

シートをループする方法

vbaを使用して最後の行と列を取得する方法

link:/ files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Microsoft Excel2016でVBAを使用して新しいブックを追加および保存する]

link:/ menus-toolbars-status-bar-in-vba-display-a-message-on-the-statusbar-using-vba-in-microsoft-excel [ExcelのVBAステータスバーにメッセージを表示する]

link:/ general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Microsoft Excel2016でVBAを使用して警告メッセージをオフにする]

人気の記事:

link:/ forms-and-functions-introduction-of-vlookup-function [ExcelのVLOOKUP関数]

link:/ Tips-countif-in-microsoft-excel [COUNTIF in Excel 2016]

link:/ excel-formula-and-function-excel-sumif-function [ExcelでSUMIF関数を使用する方法]