ChatGPTで簡単にExcelの集計シート作成を自動化!10分でマクロが完成

Excel

Excelで複数シートからデータを集計する際、手作業で行うことは大変かつミスが起きやすい作業です。しかし、ChatGPAのコードアシスタントを利用することで、短時間で自動化するマクロを作成することができます。今回は、この方法をご紹介します。

前提知識

ExcelのVBAとは

「Microsoftオフィスのエクセルやワードなんかで使える、便利機能みたいなもの」くらいの理解でOK
詳しくはこちらのサイトへ。

ChatGPAとは何か

ExcelやGoogleスプレッドシートといった表計算ソフトの関数でも、こちらがお願いしたことを忠実に実行する関数を書いてくれます。

複数シートから値を集計する

例としてそれぞれのシートには4行目のBからH列に集計する値が入力されているとする.

ChatGPAでVBAコードアシスタント

ChatGPAにVBAコード例を聞いてみた。そのまま使えそう.

提案されたコードでは集計を作成するシートがSheet1になっていたので、”まとめ”シートに集計を作成するよう修正した。

Sub GetSheetValues()
    Dim ws As Worksheet
    Dim outputSheet As Worksheet
    Dim outputRow As Long
    Dim headers As Variant

    Set outputSheet = ThisWorkbook.Sheets("Sheet1")
    outputRow = 2

    headers = Array("シート名", "B4", "C4", "D4", "E4", "F4", "G4", "H4", "O7", "O8", "R7", "R8")

    For Each ws In ThisWorkbook.Sheets
        If ws.Name <> "まとめ" Then
            If outputRow = 2 Then
                outputSheet.Range("A1").Resize(1, UBound(headers) + 1) = headers
            End If
            outputSheet.Cells(outputRow, 1).Value = ws.Name
            outputSheet.Cells(outputRow, 2).Resize(1, 8).Value = ws.Range("B4:H4").Value
            outputSheet.Cells(outputRow, 10).Resize(1, 4).Value = ws.Range("O7:R8").Value
            outputRow = outputRow + 1
        End If
    Next ws
End Sub

実行結果

Exelマクロに実装てみた.”まとめ”シートに全シートの集計が作成された.
ほぼコーディングすることなく集計作業を自動化することが出来た.

改良

インデクスの下に単位を追加したい。
提案コードを参考にして適宜加筆修正した.
集計マクロの実行ボタンを追加した
完成したコードと実行結果がこちら.

Sub GetSheetValues()
    Dim ws As Worksheet
    Dim outputSheet As Worksheet
    Dim outputRow As Long
    Dim headers As Variant

    Set outputSheet = ThisWorkbook.Sheets("まとめ")
    outputRow = 3

    headers = Array("シート名", "B4", "C4", "D4", "E4", "F4", "G4", "H4", "O7", "O8", "R7", "R8")
    units = Array("", "個", "個", "個", "個", "個", "個", "個", "個", "人", "人", "人")

    For Each ws In ThisWorkbook.Sheets
        If ws.Name <> "まとめ" Then
            If outputRow = 3 Then
                outputSheet.Range("A1").Resize(1, UBound(headers) + 1) = headers
                outputSheet.Range("A2").Resize(1, UBound(headers) + 1) = units
            End If
            outputSheet.Cells(outputRow, 1).Value = ws.Name
            outputSheet.Cells(outputRow, 2).Resize(1, 7).Value = ws.Range("B4:H4").Value
            outputSheet.Cells(outputRow, 9).Resize(1, 4).Value = ws.Range("O7:R7").Value
            outputRow = outputRow + 1
        End If
    Next ws
End Sub

省時間と省力化

手作業とマクロの評価

集計を手作業で行う場合の工程
手作業の場合

  1. 各シートの該当セルの値をコピペ
    1シートあたり3分,10シートの場合30分.
    2.集計シートのミス確認
    参照先のミスなどが無いかセルの式を確認する.3分.

マクロの場合

  1. ChatGPAでVBAコードアシスタント.5分.
  2. マクロを実装する.5分.
  3. 集計マクロを実行する.1秒.
  4. 毎回参照先は変わらないので確認作業不要.

33分の作業を10分に短縮できた.作業時間を1/3に圧縮!
作成したブックを使いまわすことで今後の同様の作業でも時間を圧縮できて業務効率化がはかどりそうだ.

ChatGPAでのコードアシストのコツ

今回紹介したコードにたどり着くまでにChatGPAには幾つか質問を繰り返しコードを改良してもらった.初めの質問と提案されたコードはこちら.

冗長な記述になっている.
これでも問題はなさそうだがもう少し改良したかったので、聞き方を変えて何度か試したところ今回のコードを出力してくれた.
ChatGPTをコードアシストとして使う場合は

  • 具体的な手順を指示する
  • 聞き方を変えて何度か聞いてみる
    を意識すると目的に沿ったコードを得られる。

より詳細な情報

ChatGPAへのリンク

Just a moment...

VBAに関連する書籍

Excel VBAの教科書
Exel VBAの基本をざっくり理解するために参考にした本.評価が高かったのでとりあえずで選んだが,解説が分かりやすく正解だった.

タイトルとURLをコピーしました