見出し画像

同じフォーマットで複数シートにある表をまとめるよChatGPTと一緒に作ったやつ

この説明は、ChatGPTで作成しています。

このプロシージャは、ExcelのVBAを使って、選択されている複数のシートにある同じフォーマットの表を、新しく作成した「まとめ」シートに1つにまとめるものです。手作業でコピペする手間を省くために、自動でデータを統合することができます。

プロシージャの仕組み

  1. 画面更新の停止
    作業中に画面がチラチラしないように、最初に `Application.ScreenUpdating = False` で画面の更新を止めています。

  2. 選択されているシートの名前を取得
    まず、選択されているシートを順番に見て、それぞれの名前を配列 `sName` に入れていきます。

  3. 「まとめ」シートの作成
    次に、新しい「まとめ」シートを作成します。もし既に「まとめ」という名前のシートがあれば、番号(例:「まとめ2」)を追加して重複しないようにしています。

  4. 見出しのコピー
    選択されているシートの中で最初のシートから、1行目にある見出しを「まとめ」シートにコピーします。

  5. データの統合
    各シートの2行目以降のデータを順番に見て、「まとめ」シートに次々と貼り付けていきます。

  6. 画面更新の再開
    最後に、 `Application.ScreenUpdating = True` で画面の更新を再開します。

このプログラムを使えば、複数のシートに分かれている同じフォーマットのデータを簡単に1つにまとめることができます。たとえば、月ごとの売上データを1つにまとめて全体のレポートを作る時などに便利です。


Sub 同じフォーマットで複数シートにある表をまとめるよChatGPTと一緒に作ったやつ()
    Application.ScreenUpdating = False
    Dim s, ws                          As Worksheet
    Dim sName(), sheetName             As String
    Dim count, sheetIndex              As Integer
    Dim i, lastCol, lastRow, matomeRow As Long
    
    count = 0
    ReDim sName(0)
    
    For Each s In ActiveWindow.SelectedSheets
        If count >= UBound(sName) Then
            ReDim Preserve sName(count)
        End If
        sName(count) = s.Name
        count = count + 1
    Next s
    
    'まとめシート作成
    sheetName = "まとめ"
    sheetIndex = 1

    ' すでに「まとめ」というシートが存在する場合、末尾に番号を付ける
    Dim sheetExists As Boolean
    sheetExists = False
    For Each ws In ThisWorkbook.Sheets
        If ws.Name = sheetName Then
            sheetExists = True
            Exit For
        End If
    Next ws

    Do While sheetExists
        sheetIndex = sheetIndex + 1
        sheetName = "まとめ" & sheetIndex
        sheetExists = False
        For Each ws In ThisWorkbook.Sheets
            If ws.Name = sheetName Then
                sheetExists = True
                Exit For
            End If
        Next ws
    Loop

    'まとめシートを新規作成
    Dim matomeSheet As Worksheet
    ActiveWindow.SelectedSheets(1).Select
    Set matomeSheet = Worksheets.Add(Before:=ThisWorkbook.Sheets(1))
    matomeSheet.Name = sheetName
    
    
    '1つめのシートから見出しをコピーしてまとめ用シートに貼り付け
    Worksheets(sName(0)).Rows(1).Copy Destination:=matomeSheet.Cells(1, 1)
    
    '各シート2行目以降を貼り付け
    For i = LBound(sName) To UBound(sName)
        Dim mws As Worksheet
        Set mws = Worksheets(sName(i))
        lastCol = mws.Cells(1, mws.Columns.count).End(xlToLeft).Column
        lastRow = mws.Cells(mws.Rows.count, 1).End(xlUp).row
        matomeRow = matomeSheet.Cells(matomeSheet.Rows.count, 1).End(xlUp).row
        mws.Range(mws.Cells(2, 1), mws.Cells(lastRow, lastCol)).Copy Destination:=matomeSheet.Cells(matomeRow + 1, 1)
    Next i
    Application.ScreenUpdating = True
End Sub

ハッシュタグ

#excel #できること #vba #マクロ #自動化 #複数シート #データ統合 #データ集計 #シート作成 #プログラミング初心者 #コード解説 #仕事効率化 #見出しコピー #表管理 #データ管理 #新規シート作成 #ループ処理 #シート名取得 #スプレッドシート #作業効率アップ


Explanation in English

Combine Tables from Multiple Sheets with the Same Format - Created with ChatGPT

This explanation is made with ChatGPT.

This procedure uses Excel VBA to consolidate tables from multiple sheets with the same format into a newly created "Summary" sheet. It saves you the hassle of copying and pasting manually by automating the data integration process.

How the Procedure Works

  1. Stop Screen Updating
    To prevent the screen from flickering during processing, the procedure starts by setting `Application.ScreenUpdating = False`.

  2. Get Names of Selected Sheets
    It goes through the selected sheets one by one and stores their names in the `sName` array.

  3. Create a "Summary" Sheet
    Next, a new "Summary" sheet is created. If there is already a sheet named "Summary," a number (e.g., "Summary2") is added to ensure there is no duplication.

  4. Copy Headers
    From the first selected sheet, it copies the headers in the first row to the "Summary" sheet.

  5. Combine Data
    For each sheet, the procedure then takes the data from the second row onwards and sequentially pastes it into the "Summary" sheet.

  6. Resume Screen Updating
    Finally, `Application.ScreenUpdating = True` is set to resume screen updating.

By using this program, you can easily consolidate data from multiple sheets into one. It’s particularly useful for situations like combining monthly sales data into a comprehensive report.


Hashtags

#excel #canbeused #vba #macro #automation #multiplesheets #dataintegration #datacombination #sheetcreation #beginnersprogramming #codeexplanation #workefficiency #headercopy #tablemanagement #datamanagement #newsheetcreation #loopprocessing #sheetnameacquisition #spreadsheet #workefficiencyboost

この記事が気に入ったらサポートをしてみませんか?