VBAコードのプロンプト集はこちらから
事例
店舗が世田谷で賞味期限が2024/07/07以降でフィルターし、結果をコピーします。
2024年10月からの新しいプロンプト
下記のVBAコードを、日本語のコメントをいれて作成してください。 処理対象:「Sheet1」シートのA1セルからD1セルが見出しの表にオートフィルタを適用する。 処理1:処理対象の1列目を「世田谷」、4列目を「2024/07/07」より大きい日付でフィルターする。 処理2:フィルタリングされたデータをコピーし、「Sheet1」シートの「G1」セルに貼り付ける。 処理3:コピー状態を解除し、フィルタを解除する。
【向上した点】
・処理対象と処理だけで、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で関数の意味を調べる