統合/ VBAを使用して、一つのマスターシートに複数のワークシートをマージ
データを簡単に分析して有用な情報に変換できるように、複数のシートを1つのシートにマージしたい場合があります。この記事では、VBAを使用して複数のワークシートを1つのワークシートにマージする方法について説明します。
例:
ここでは、データを別のワークシートに返すサーバーからいくつかのデータをフェッチしました。もう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]をクリックします。
そして、それは行われます。すべてのシートがマスターにマージされます。
どのように機能しますか?
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関数を使用する方法]