AIでExcelマクロを生成するイメージの画像

AIでExcelマクロを自動作成①【一覧集計】

Excelの定型業務、もっと楽にしたいと思ったことはありませんか?AIを使えば、プログラミングの知識がなくても、複雑なExcelマクロを短時間で作成できます。この記事では、AI(ChatGPT)を活用して、気象庁のCSVデータ集計マクロを実際に作成するプロセスをご紹介します。

今回のお題:
気象庁のデータでマクロ作成に挑戦

今回は、気象庁からダウンロードした7/9の気温データのCSVファイルを使い、都道府県ごとに気温データを集計する業務を想定したマクロを作成してみます。 使用するAIは無料版のChatGPTです。

CSVデータのサンプル画像

マクロで実現したいこと

  • CSVファイルを選択ダイアログから読み込む
  • 都道府県ごとに「7/9の最高気温」「今年の最高気温」「観測史上1位の気温」の平均を計算する
  • 計算結果をグラフで表示する

AI(ChatGPT)へのお願いの仕方

AIにマクロを作成してもらうには、「何がしたいか」「どんなデータか」を正確に伝えることが重要です。 ファイルを直接アップロードできれば簡単ですが、無料版では制限があるため、今回はテキストでファイル構造を説明します。

> AIへの指示プロンプト例

Excelのマクロを作成したい
・CSVファイルを選択して読み込む
・ファイルは1行目が項目名、2行目からデータ
・B列(都道府県)毎にJ列(7/9の最高気温)とV列(今年の最高気温)、AA列(観測史上1位の気温)について平均を計算する
・計算結果をグラフで表示する

AIが生成したVBAコードと実行結果

AIは実行手順とVBAコードを生成しました。

▶ 実行手順

  1. Excelを開き、Alt + F11キーでVBAエディターを起動します。
  2. メニューから「挿入」→「標準モジュール」を選択します。
  3. 新しく表示されたウィンドウに、以下のVBAコードをすべて貼り付けます。
  4. VBAエディターを閉じ、Alt + F8キーでマクロの一覧を開き、「読み込みとグラフ作成」を実行します。

▶ AIが生成したVBAコード


Sub 読み込みとグラフ作成()

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets.Add
    ws.Name = "CSVデータ"

    ' CSVファイルを選択
    Dim filePath As String
    filePath = Application.GetOpenFilename("CSVファイル (*.csv), *.csv")
    If filePath = "False" Then Exit Sub
    
    ' CSVの読み込み
    With ws.QueryTables.Add(Connection:="TEXT;" & filePath, Destination:=ws.Range("A1"))
        .TextFileConsecutiveDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFilePlatform = xlWindows
        .TextFileParseType = xlDelimited
        .Refresh BackgroundQuery:=False
    End With
    
    ' データ範囲の特定
    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
    
    ' 結果格納用の辞書
    Dim dict As Object
    Set dict = CreateObject("Scripting.Dictionary")
    
    Dim i As Long
    For i = 2 To lastRow
        Dim pref As String
        pref = ws.Cells(i, "B").Value
        
        If pref <> "" Then
            If Not dict.exists(pref) Then
                dict(pref) = Array(0, 0, 0, 0) ' 合計J, 合計V, 合計AA, 件数
            End If
            
            Dim arr
            arr = dict(pref)
            
            On Error Resume Next
            arr(0) = arr(0) + CDbl(ws.Cells(i, "J").Value)
            arr(1) = arr(1) + CDbl(ws.Cells(i, "V").Value)
            arr(2) = arr(2) + CDbl(ws.Cells(i, "AA").Value)
            arr(3) = arr(3) + 1
            On Error GoTo 0
            
            dict(pref) = arr
        End If
    Next i
    
    ' 平均を新しいシートに出力
    Dim resultWs As Worksheet
    Set resultWs = ThisWorkbook.Sheets.Add
    resultWs.Name = "平均結果"

    resultWs.Range("A1:E1").Value = Array("都道府県", "7/9の平均気温(J列)", "今年の平均気温(V列)", "史上最高の平均(AA列)", "データ数")
    
    Dim r As Long: r = 2
    Dim key As Variant
    For Each key In dict.Keys
        arr = dict(key)
        If arr(3) > 0 Then
            resultWs.Cells(r, "A").Value = key
            resultWs.Cells(r, "B").Value = arr(0) / arr(3)
            resultWs.Cells(r, "C").Value = arr(1) / arr(3)
            resultWs.Cells(r, "D").Value = arr(2) / arr(3)
            resultWs.Cells(r, "E").Value = arr(3)
            r = r + 1
        End If
    Next key
    
    ' グラフ作成
    Dim chartObj As ChartObject
    Set chartObj = resultWs.ChartObjects.Add(Left:=300, Width:=500, Top:=20, Height:=300)
    
    With chartObj.Chart
        .ChartType = xlColumnClustered
        .SetSourceData Source:=resultWs.Range("A1:D" & r - 1)
        .HasTitle = True
        .ChartTitle.Text = "都道府県ごとの平均気温"
        .Axes(xlCategory).HasTitle = True
        .Axes(xlCategory).AxisTitle.Text = "都道府県"
        .Axes(xlValue).HasTitle = True
        .Axes(xlValue).AxisTitle.Text = "気温(℃)"
    End With
    
    MsgBox "完了しました!", vbInformation

End Sub
                    

手順に従ってVBAコードを実行したところ、想定通りの集計とグラフ作成ができました。しかし、結果シートの見た目が少し整っていません。そこで、AIに見た目を改善するための追加指示を出します。

AIで作成した1度目の結果画像

改善のための追加指示

  • 集計結果の列幅を自動で調整してほしい
  • 集計結果の表に罫線を引いてほしい
  • グラフは作成しないように変更してほしい
  • 平均気温のデータに赤・黄・緑のカラースケール(条件付き書式)を設定してほしい

再度AIに依頼した結果、より見やすい集計表が完成しました。

AIで作成した2度目の結果画像

まとめ:AI活用で業務効率は劇的に向上する

これだけのマクロを手作業で調べながら作ると数時間はかかるかもしれませんが、AIを使えばわずか30分ほどで完成させることができました。

もちろん、AIが生成した結果が正しいかどうかの確認は必要です。 しかし、VBAの専門知識がなくても、ここまで簡単にマクロが作れるのは非常に強力なツールと言えるでしょう。画面設計やデータベース構築といった大規模なシステム開発はまだ難しいかもしれませんが、日々の業務で発生する細かな作業の自動化は、AIに任せる時代が来ています。

さらにもう少し修正するとここまですべてAIだけでマクロを生成することが可能です。

AIで作成した2度目の結果画像

皆さんもぜひ、AIを使った業務改善にチャレンジしてみてください。
もし操作に迷ったり、どう依頼すれば良いか分からなかったりした場合は、弊社でサポートも可能ですので、お気軽にご連絡ください。

ページ上部へ戻る