
AIでExcelマクロを自動作成①【一覧集計】
Excelの定型業務、もっと楽にしたいと思ったことはありませんか?AIを使えば、プログラミングの知識がなくても、複雑なExcelマクロを短時間で作成できます。この記事では、AI(ChatGPT)を活用して、気象庁のCSVデータ集計マクロを実際に作成するプロセスをご紹介します。
今回のお題:
気象庁のデータでマクロ作成に挑戦
今回は、気象庁からダウンロードした7/9の気温データのCSVファイルを使い、都道府県ごとに気温データを集計する業務を想定したマクロを作成してみます。 使用するAIは無料版のChatGPTです。

マクロで実現したいこと
- CSVファイルを選択ダイアログから読み込む
- 都道府県ごとに「7/9の最高気温」「今年の最高気温」「観測史上1位の気温」の平均を計算する
- 計算結果をグラフで表示する
AI(ChatGPT)へのお願いの仕方
AIにマクロを作成してもらうには、「何がしたいか」と「どんなデータか」を正確に伝えることが重要です。 ファイルを直接アップロードできれば簡単ですが、無料版では制限があるため、今回はテキストでファイル構造を説明します。
> AIへの指示プロンプト例
Excelのマクロを作成したい
・CSVファイルを選択して読み込む
・ファイルは1行目が項目名、2行目からデータ
・B列(都道府県)毎にJ列(7/9の最高気温)とV列(今年の最高気温)、AA列(観測史上1位の気温)について平均を計算する
・計算結果をグラフで表示する
AIが生成したVBAコードと実行結果
AIは実行手順とVBAコードを生成しました。
▶ 実行手順
- Excelを開き、
Alt + F11
キーでVBAエディターを起動します。 - メニューから「挿入」→「標準モジュール」を選択します。
- 新しく表示されたウィンドウに、以下のVBAコードをすべて貼り付けます。
- 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に依頼した結果、より見やすい集計表が完成しました。

まとめ:AI活用で業務効率は劇的に向上する
これだけのマクロを手作業で調べながら作ると数時間はかかるかもしれませんが、AIを使えばわずか30分ほどで完成させることができました。
もちろん、AIが生成した結果が正しいかどうかの確認は必要です。 しかし、VBAの専門知識がなくても、ここまで簡単にマクロが作れるのは非常に強力なツールと言えるでしょう。画面設計やデータベース構築といった大規模なシステム開発はまだ難しいかもしれませんが、日々の業務で発生する細かな作業の自動化は、AIに任せる時代が来ています。
さらにもう少し修正するとここまですべてAIだけでマクロを生成することが可能です。

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