Chatgpt×Excel活用方法 ChatGPT活用術 マクロ作成

ChatGPTで高速化VBAを作成させる手順|重いマクロを劇的に速くするAI活用術

Excel VBAは便利ですが、処理が重くなりやすいという問題を抱えています。数千〜数万行のデータを扱う場合、ループが遅い・シート操作が多い・Variant型が多いなどの原因により、処理時間が1分以上かかることも珍しくありません。特に、古い知識のまま作られたマクロや部門で受け継がれてきた“レガシーVBA”では、処理速度が大きな課題になります。

しかし高速化の知識を一から習得するのはハードルが高く、改善方法を学びながら改修するには多くの時間が必要です。そこで強力な助けとなるのがChatGPTを使った「高速化VBAの自動生成」です。ChatGPTは処理の内容を説明するだけで、高速化の定石を取り入れたVBAコードを自動で生成してくれます。さらに、既存コードを高速化するための最適な改善案も提示できるため、実務のスピード改善に大きく貢献します。

この記事では、ChatGPTを使って高速化されたVBAコードを作成するための具体的な手順、プロンプト設計術、コード改善のポイント、実務例をわかりやすく解説します。重いマクロに悩んでいる方、より効率的なVBAを書きたい方に役立つ内容です。

✅ ChatGPTで高速化VBAを作成するステップ①:現在の処理内容を正確に伝える

・ChatGPTは“処理の目的と流れ”が分かると高速化案を生成しやすい

まずは、どのような処理を行いたいのかChatGPTに明確に伝える必要があります。高速化のポイントは処理フロー・対象データ・出力内容を正確に伝えることです。

【依頼例】
「シートAの10000行のデータを読み取り、指定条件に一致する行をシートBへコピーするVBAを高速化した形で作ってください。」

ChatGPTは、この情報を元に、

  • 配列での一括読み込み
  • Application設定の制御
  • Forループ最適化
  • Select / Activate の削除
    など、高速化の基本要素を自動で含めたコードを作成します。

✅ ChatGPTで高速化VBAを作成するステップ②:高速化の方針を明確に指定する

・方針を指定すると“高速化仕様のVBA”が確実に生成される

ChatGPTは柔軟ですが、以下のように具体的な高速化方針を指示することで、より実務に即した高速化VBAを生成できます。

以下の高速化ルールに従ってVBAを作ってください。
・Select / Activate を使わない
・処理対象は配列に読み込む
・画面更新をOff
・自動計算をManual
・With構文で参照範囲を短縮
・FindよりDictionaryを優先

このように条件を付けると、ChatGPTが生成するコードの品質が一気に向上します。

・高速化ルールの背景

上記の高速化はVBAの“定石”であり、ChatGPTに明示することによってより確実に反映されます。

  • Select / Activate
    → 無駄な画面操作が消えるため大幅に高速化
  • 配列使用
    → Range操作を最小限に抑えられる
  • 画面更新Off
    → 再描画時間を削減
  • 計算式停止
    → 計算式の再計算が一時的に止まり高速化
  • With構文
    → オブジェクト参照が短縮され最適化
  • Dictionary
    → 高速な検索・重複チェックが可能

ChatGPTはこれらをすべて組み込んだコードを自然に生成できるため、実務で活用しやすくなります。


✅ ChatGPTで高速化VBAを作成するステップ③:具体的なデータ構造を伝える

・配列化や最終行などの生成精度が上がる

高速化VBAでは、データの構造が非常に重要です。

例:

  • データは何列あるのか
  • 条件判定の対象列はどれか
  • 重複チェックのキーは何か

【依頼例】
「A〜F列のデータから、C列が“済”の行だけを抽出して別シートにコピーする高速化VBAを作ってください。」

ChatGPTは、

  • 配列でA〜F列を一括取得
  • 条件判定
  • 結果配列にまとめて高速貼り付け
    という構造を生成します。

✅ ChatGPTで高速化VBAを作成するステップ④:既存コードを高速化したい場合

・既存コードを貼り付けて“問題点を洗い出す”

レガシーなVBAや遅い処理を高速化したい場合、ChatGPTにコードそのものを読み解かせます。

このコードは遅いので、高速化のための問題点を指摘してください。
(コードを貼る)

ChatGPTは次のような改善点を提示します。

  • Select多用
  • Variant使用
  • 最終行取得が非効率
  • 行ごとの貼り付けで遅い
  • 不要なIf分岐

・改善版を作成依頼

上記の問題点を解消した高速化バージョンのコードを書いてください。
コメント付きでお願いします。

この2段階ステップで、高度な高速化VBAが完成します。


✅ ChatGPTで高速化VBAを作成するステップ⑤:処理速度の可視化まで依頼する

高速化の効果を数値で把握すると、改善の手応えがわかりやすくなります。

処理前と処理後の実行時間を比較するための計測コードを追加してください。
Timer関数を使用してください。

ChatGPTは以下のようなコードを組み込んでくれます。

Dim t As Single
t = Timer
' 処理本体
MsgBox "処理時間:" & Format(Timer - t, "0.00") & "秒"

これにより“高速化の実感”が明確になります。

参考:【VBA】TimeValue関数の使い方と活用方法:時刻の計算




✅ ChatGPT × 高速化VBAの定石(ChatGPTに明示して活用する)

・配列化(Range操作削減)

Dim v As Variant
v = Range("A1:F10000").Value

→ Rangeアクセスを最小限にして数十倍高速化。

・Select / Activate の削除

Sheets("Sheet1").Range("A1").Value = 1

→ 直接参照へ変更。

・Application設定

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

→ 大規模データでは必須。

・高速な辞書(Dictionary)利用

重複チェックや照合を高速化。

・With構文で参照短縮

With Sheets("Data")
    .Range("A1").Value = 1
End With

✅ ChatGPT × 高速化VBAの実務例

・実務例①:10,000行のデータ抽出が“30秒 → 1秒”に

Before:

  • 行ごとにRangeアクセス
  • IF文が多重ネスト
  • Select多用

After:

  • 配列処理
  • 条件一括判定
  • 一括貼り付け

→ 30倍高速化

参考:ChatGPTにVBAコードを正確に書かせる方法|実務レベルのマクロを安定生成するプロンプト設計術


・実務例②:集計作業が“1分 → 2秒”に

Before:

  • Forループでシートを移動しまくる
  • 毎回最終行を計算

After:

  • 全データを配列に読み込み
  • 計算だけロジック化
  • 最後に1回だけ貼り付け

→ 圧倒的高速化


・実務例③:大量ファイルの結合処理が“5分 → 20秒”に

Before:

  • ファイルごとに貼り付け操作
  • 保存動作が多すぎ

After:

  • FileSystemObjectで高速ループ
  • データだけ配列抽出
  • 最後に統合して保存

✅ まとめ:ChatGPTを使えば“高速化されたVBA”を簡単に作れる

記事の最後にポイントを整理します。

  • ChatGPTは目的を伝えるだけで高速化されたVBA構造を提案できる
  • 配列化・辞書利用・Application設定など“高速化の定石”を自動で反映できる
  • 既存の遅いマクロを貼り付ければ問題点の分析から改善コードまで生成できる
  • 処理速度の測定コードやエラー対策もChatGPTに依頼できる
  • 高速化VBAは実務効果が大きく、数十倍の速度改善も実現可能

ChatGPTを活用すれば、高速化VBAは専門知識がなくても簡単に実現できます。ぜひ実務で使うマクロ開発に取り入れ、日常業務の処理速度を劇的に向上させてください。

    -Chatgpt×Excel活用方法, ChatGPT活用術, マクロ作成