ЯoomeR

プログラミング~実装とエラー解決と、時々、AI~

無料版Chat-GPTを飼いならす指示方法[Excelマクロ/VBA]

有料枠から無料枠に戻してみたところ、出力されるVBAのコードがことごとく、すべからく要件を満たさない。

3.5Turbo君に要望を伝えるあたって、試行錯誤した結果得られた知見を共有する。

前提として、「あなたは一流のエンジニアです。以下の要件を満たすVBAのコードを提示してください。」という接頭辞を記述している。

「どうしてほしいか」ではなく「どうするか」を伝える。

excel塗りつぶし

NG指示1

  • A列B列は青色にし、C列は飛ばす
  • D列E列は青色にし、F列は飛ばす
  • G列に達したら処理を停止する

この記述での出力は、

  • H列を塗らない
  • もっと列が続いた場合、連続して処理をしない
  • B列を塗らなかったり、C列を塗るような処理をしてしまう

NG指示2

  • A列、B列を青色にし、C列は飛ばす
  • 2列塗って1列処理をしない、2列塗って1列処理しない、を繰り返す
  • H列に達したら処理を停止する

この記述の場合も、

  • 常に1列飛ばしで処理をする

といった内容で出力されることがある。

GOOD指示

  • 変数paint_color_oneを定義し、値を1にする。
  • 変数paint_color_twoを定義し、値を2にする。
  • cells(1,paint_color_one)を青色にする。
  • cells(1,paint_color_two)を青色にする。
  • それぞれ2列加算する。
  • paint_coloerがG列に達したら処理を停止する。

上記のように、「大まかなコード」を提示すると精度が上がる。

(paint_colorを定義して、cells(1,paint_coloer + 1)としても勿論OK。リファクタしてないベタコードの方が指示が通りやすい気がしたのでこうしているだけ。)

注意ポイント

  • 列番号の相違はよくある。(CA列を85列目として処理したりする。正しくは79列目)
  • 列番号の対応はこちらのサイトを参考にすると早い。