即座にエクセル作業を自動化する無料アプリ

AIで自分の価値を高める方法とは🙄

MENU

ChatGPTでVBAマクロを作成するプロンプトの書き方

        VBAコードのプロンプト集はこちらから

事例

店舗が世田谷で賞味期限が2024/07/07以降でフィルターし、結果をコピーします。



2024年10月からの新しいプロンプト

下記のVBAコードを、日本語のコメントをいれて作成してください。
処理対象:「Sheet1」シートのA1セルからD1セルが見出しの表にオートフィルタを適用する。
処理1:処理対象の1列目を「世田谷」、4列目を「2024/07/07」より大きい日付でフィルターする。
処理2:フィルタリングされたデータをコピーし、「Sheet1」シートの「G1」セルに貼り付ける。
処理3:コピー状態を解除し、フィルタを解除する。

ChatGPTの回答を見る→

 

【向上した点】

処理対象処理だけで、VBAコードを作成できます。

・なお、処理の説明が難しい場合、概要(全体構造)とその詳細を示します。事例

・概要が不要になりました。

・変数の宣言の漏れが少なくなりました。

・メソッドなどの助言が不要になりました。

・最終行や範囲の取得は自動で入ります。

・行の挿入や削除は自動でStep -1します。

 

上記はChatGPTが完全なVBAコードを作成することを保証するものではありません。

 

NoCodeVBA式プロンプト

プロンプトは、処理対象(シート、セル)と処理を書く。

◆処理対象◆
・シート名は「」で囲み、必ず指定する。セル名は「」不要。   (文例:「Sheet1」シート)シート名を指定しないと、仮のシート名が勝手に入ってしまいます。 ◆ 表は、見出しを除いた左上セルと、右列の最終行のデータ領域を指定する。
  (文例:A2セルからD列の最終行までがデータの表) ・ フィルタ―は、見出しを指定する。
  (文例:A1セルからD1セルが見出しの表)   

◆処理◆  ◆ 番号付きで、処理を箇条書きにする。   (処理1:,処理2:)番号を付けて、引用しやすくする。
◆ 処理の説明が難しいときは、概要(全体構造)とその詳細を記述する。事例 ・ A列の値をE列の値ですべてチェック(2重ループ)するときは「総当たり」を使う。   (文例:A列とE列の値を総当たりでチェックし、)事例 ・ A1セルの値をC1セルの値で書き換える場合、「上書き」を使う。 (文例:A1セルの値をC1セルの値で上書きする)事例 ・ 表のデータを使い、同じ場所に新たな表を作成する場合、データを「配列」に退避する。 (文例:処理対象の値を配列に入れる。)事例 ・ 正確な用語を使い、プロンプトを短くする。
  (用語がわからないときは、ネット(Copilot)で正式な名称を調べる)

 

上記はChatGPTが完全なVBAコードを作成することを保証するものではありません。

 

プロンプトが”あいまい”になる原因と対策

幾度となく、正しいコードが引き出せなかった経験を列記しました。

エラー原因1 文書形式と不要な情報

Excelのsheet1に売上データがあります。項目はA列からH列にかけて、伝票番号、販売日、店舗名、商品名、入数、数量、単価、金額の順です。A2セルから下の行にデータが入力されており、この中でB列の販売日が20230724になっている行を黄色にするためのVBAコードを作成してください。

上のプロンプトも、正しいコードが出力されます。

しかし、文書形式は、情報の重複と漏れが生じがちです。

そこで、表の範囲と処理手順を箇条書きします。

下記のVBAコードを、日本語のコメントをいれて作成してください。
処理対象:「Sheet1」シートのA1セルを範囲の左上とする表。
処理:B列の値が「20270724」と等しい行のセルの色を黄色にする。

 

エラー原因2 主語が無い

プログラムコードは主語("シート”、”セル”)が必須です。

 

エラー原因3 対象シートを指定していない

プロンプトに対象シートを明示します。

マクロを実行するとき、処理対象でないシートがアクティブだと、そのシートで処理で始まり、そのシートが壊れます😢。

 

対策1 処理手順で分ける

・処理1、処理2と順番に分けます。

・エクセル処理のメニュー選択を、一つの処理とします。

・なお、手順1,手順2のように処理の順番は指定しません。

 

対策2 効果的に読点(、)を使う

読点の有無や場所で、ChatGPTの誤読が改善します。

 

対策3 主語の整理

プロンプトの主語には”セル”をたくさん使います。

"対象セル"、"選択したセル"、"そのセル"などで対象セルを明示します。

 

対策4 チャットをリセットする

ChatGPTは過去のトピックも参考にします。対話が長く続き、欲しい回答を得られないときは、チャットをリセットします。

 





対策5 コードを追加、コードを分ける

プロンプトが長いと、文章があいまいになり、誤ったコードが作成されます。よって、文章を短くしコード追加するか、コードを分けます。

 

コード追加:ChatGPTでコードを作り、そのコードにChatGPTでコードを追加する。

下記のコードに〇〇する処理を追加できますか?
コード:
Sub 前に作ったコード()
××
End Sub

 

コードを分ける:複数のコードに分けて、それらを”連続実行”する。

 

対策6 文章を短く修正をする。

プロンプトを読み直し、不要な言い回しを削ります。

削って不足している主語シートの指定漏れを見つけます。



対策7 メモ帳などで下書きする。

Copilotの改行はShiftキーとEnterキーを同時に押す必要があり、誤送信しやすいです。プロンプトはメモ帳などでの下書きします。

 

 

Bingよるリファクタリング・コード修正

リファクタリング

コード修正

ChatGPTで関数の意味を調べる