「NoCodeVBA」にようこそ!
「NoCodeVBA」はエクセルVBAマクロを作成できる無料アプリです。
いままでChatGPTのプロンプトを書いて、失敗した書き方と改善策をまとめています。
なお、下記を読んでプロンプトを書くのは面倒!とおもった時は、NoCodeVBAの利用や、作成したコードをChatGPTで修正、をお勧めします😄
- プロンプトが”あいまい”になる原因と対策
- アプリ内のプロンプトについて
- Bingにコードを貼り付けるとき
- Bingよるリファクタリング・コード修正
- ChatGPTで関数の意味を調べる
- VBAコードをChatGPTでつくるお勧め3選
プロンプトが”あいまい”になる原因と対策
幾度となく、正しいコードが引き出せなかった経験から、
エラー原因1 文書形式と不要な情報
Excelのsheet1に売上データがあります。項目はA列からH列にかけて、伝票番号、販売日、店舗名、商品名、入数、数量、単価、金額の順です。A2セルから下の行にデータが入力されており、この中でB列の販売日が20230724になっている行を黄色にするためのVBAコードを作成してください。
VBAコードを作成してください。
要件は下記の通りです:・対象シートは"Sheet1"
・対象セルは"a2"セルから"h2"セルを上端とする表の最終行まで
・B列の値が'20270724'と等しい行に限り、セルの色を黄色にする
上のプロンプトも、正しいコードが出力されます。
しかし、文書形式と不要な情報は、後述するプロンプトの整合性のチェックが面倒です。
そこで、中点(・)を使い、要件を箇条書きにします。
箇条書きの宣言は「要件は下記の通りです:」で行い、末尾はコロン(:)です。
さて、箇条書きは抽象化します。上記の”B列”が抽象的で、”販売日”が具体的です。
経験上、抽象的な”B列”と具体的な”販売日”の両方を使うとプロンプトが複雑で、ChatGPTが誤読します。抽象化した用語でプロンプトを書くことをお勧めします。
エラー原因2 主語が無い
プログラムコードは主語("シート”、”セル”)が必須です。
エラー原因3 対象シートを指定していない
プロンプトに「”●●”シートを選択する」指示をいれます。
マクロ実行前に”処理対象外のシート”がアクティブだと、そのシートで処理が始まります😢。
特にマクロの記録を使うときは、対象外のシートを選択たあとに、マクロの記録を始めます。これで、マクロの記録が処理対象のシートの選択から始まります。
対策1 同一処理と、別処理は明示する
箇条書きのプロンプトは、前後の行との関係が不明です。
下の例は、1行目と2行目は”転記”、3行目は”シートの選択”です。
・対象セルをコピーし、"全社"シートの最終行の一つ下のセルにを貼り付ける
なお、"全社"シートの最終行が"A1"セルのときは"A1"セルに貼り付ける
・上記の処理がすべて終わったら、"全社"シートを選択する
2行目は中点(・)をつけず、さらに”なお”をいれ、1行目に属することを示します。
3行目は、中点(・)をつけ、”上記の作業が終わったら”として、2行目と別の処理であることを示します。
対策2 効果的に読点(、)を使う
読点を入れたり抜いたり、場所を変えるとChatGPTの誤読が改善したことがありました。
対策3 主語の整理
プロンプトに”セル”をたくさん使います。
そこで、ChatGPTが意図を読み違えないように"対象セル"、"選択したセル"、"そのセル"などで明示したり、"セル"を1回しか使わないようにプロンプトを整理します。
対策4 トピックを分ける
意図しない処理は,プロンプトが”あいまい”なため、AIが別の解釈をしています😵💫。
プロンプトが長いときは、”あいまい”さを排除するためトピックを分けます。
複数のコードに分かれても、それらを”連続実行”することができます。
対策5 概要をいれる
概要を入れると、内容が”あいまい”なでも、ChatGPTが概要から内容を推測してくれます。
概要は、アプリが生成したプロンプトの2行目に、”処理の概要は「●●●する」ものです”を入力します。
なお、アプリは概要と内容とが齟齬する危険があるので概要を入れません。
対策6 文章を極力短く
プロンプトを何度も読み直し、不要な言い回しを削ります。
削ることにより、不足している主語やシートの指定漏れを見つけることができます。
最も重要です。
アプリ内のプロンプトについて
ルール1 プロンプトの冒頭は、アプリの定型文を引き継ぐ形にする
このルールは、アプリの入力画面で初期表示します。
・条件を指定したときは、プロンプトを「セル」で始める。
・セルを指定したときは、プロンプトを「対象セル」で始める。
・シート名のみを指定したときは、プロンプトを「対象シート」で始める。
なお、プロンプトの冒頭は、中点(・)は不要です(アプリ側で入力)。
ルール2 指示は中点(・)で始め、一体の処理は中点をつけない
再掲ですが、指示ごとに中点(・)をつけます。しかし、一体処理のときは中点をつけません。
・対象セルをコピーし、"全社"シートの最終行の一つ下のセルにを貼り付ける
なお、"全社"シートの最終行が"A1"セルのときは"A1"セルに貼り付ける
・上記の処理がすべて終わったら、"全社"シートを選択する
上記の例では、中点をつけなず、なお書きしたことで、処理が条件分岐します。
もし、中点をつけると、下図のように2つの処理となり、条件分岐しません。
ルール3 引用するとき
(1) はカンマで区切られた複数のマクロ名です。この順番でマクロを連続して実行するコードを作成してください。
(1) 処理1,処理2,処理3
上の例は、3行目の(1)の前に、半角の空白が入っています。
他の方法として、コロン(:)もあります。コロン(:)の後ろで改行します。
A はカンマで区切られた複数のマクロ名です。この順番でマクロを連続して実行するコードを作成してください。
A:
処理1,処理2,処理3
AのコードとBのコードを比較し、違う箇所をおしえてください。
A:コードAを書く
B:
コードBを書く
ルール4 用語に「」を使わない
・用語は、"ブック"、”シート”、”セル”、"Sheet1"、”A1”などで表記しているので、統一をお願いします。
・"東京"などの文字列は、ダブルクォーテーションで囲みます。
・数式は"=VLOOKUP(データ!A2,マスタ!A1:B11,2,FALSE)"など、ダブルクォーテーションで囲みます。
・複数行のプログラムは、プログラムの前後をバッククォート3つ(```)で囲みます。
文章の中のプログラムは、バッククォート1つ(`)で囲みます。
バッククォートは、「Shift」キー+「@」キーで入力します。
Bingにコードを貼り付けるとき
会話のスタイルを「より厳密に」を必ず選択してください。
「より創造的に」になっている場合があり、その時は。。。(笑)
背景色が紫のときは「より厳密に」か?確認してください。
Bingよるリファクタリング・コード修正
リファクタリング
コード修正
ChatGPTで関数の意味を調べる