- AI ⚙️
生成AIにExcel関数・VBA・GASを作らせるプロンプトの書き方
生成AIに Excel 関数・VBA・GAS を作らせるときは、表の構造(シート名・列・見出し行・データ型・サンプル3行・期待する結果)を1枚の「入力シート」にまとめ、使っているソフトとバージョンを添えて渡すのが基本です。 「売上を部署ごとに集計したい」のような文章だけでは、どの列に何が入っているか、日付が文字列か日付の値かが伝わらず、AI は表の形を推測して書くことになります。
この記事では、表の構造をタブ区切りで渡す共通の入力シートを用意し、それを関数用・VBA用・GAS用の3種のプロンプトテンプレートに差し込む形にしました。Excel のバージョンや Google スプレッドシートかどうかで使える関数が変わる点は対応表にまとめ、動かす前の確認チェックリストと、エラー文を返して直してもらう再質問テンプレートも載せています。
確認環境:関数の対応バージョンは Microsoft サポートの関数一覧、Google スプレッドシートの関数は Google ドキュメント エディタ ヘルプ、VBA と GAS のメソッドは Microsoft Learn と Google Apps Script リファレンスを、いずれも 2026年10月5日に開いて確認しました。数式の検算は LibreOffice Calc 24.2.7(Ubuntu 24.04)のヘッドレス実行、タブ区切りの入力シートの読み取りは Python 3.11.15 で確かめています。この記事はテンプレートと確認表で構成しており、AI の回答例は載せていません。VBA と GAS のコードは、公式リファレンスに載っているメソッドだけを使った短い例にとどめています。
関数・VBA・GASを作らせるプロンプトの早見表
| 渡すもの | 中身 | 省くとどうなるか |
|---|---|---|
| ソフトとバージョン | Excel(Microsoft 365/2024/2021/2019)か Google スプレッドシートか | その版にない関数を使った数式が返る |
| シート名 | 対象のシートと、結果を出すシート | コードの中のシート名が仮の名前になる |
| 見出し行とデータの開始行 | 見出しは何行目か、データは何行目からか | 見出しまで集計や削除の対象になる |
| 列の定義 | 列の位置・見出し・データ型・値の例・空欄の有無 | 日付や数値が文字列として扱われる |
| サンプル3行 | 見出しを含む実物と同じ形の架空データ | 区切りや表記のゆれが伝わらない |
| 期待する結果 | サンプルに対して手で出した答え | 合っているかを確かめる基準がない |
| してよいこと・避けたいこと | 上書き・削除・列の追加の可否、結果の置き場所 | 元のデータを書き換えるコードが返る |
| 出力の形 | 数式1本/標準モジュールに貼る Sub/関数1つ、説明の有無 | 断片のコードが返り、貼る場所で迷う |
どれを作らせるかの目安は次のとおりです。
| やりたいこと | 向くもの | 理由 |
|---|---|---|
| セルに結果を出す(集計・検索・文字の加工) | 関数 | 元のデータが変わると結果も追従する。元に戻しやすい |
| Excel でボタン1つの繰り返し作業(転記、シート分割、書式の一括設定) | VBA | Excel のブックやシートを操作できる |
| Google スプレッドシートの繰り返し作業、時間を決めた自動実行 | GAS | Google スプレッドシートに付属するスクリプト環境で動く |
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「生成AIにExcel関数・VBA・GASを作らせるプロンプトの書き方」
共通の入力シート(タブ区切りで渡す)
3種のテンプレートに共通で差し込む部品です。表計算ソフトにそのまま貼れるタブ区切りにしてあるので、一度作っておけば、関数でも VBA でも GAS でも同じものを使い回せます。
入力シートのひな形
【ソフトとバージョン】
(例:Excel for Microsoft 365(Windows)/Excel 2019/Google スプレッドシート)
【シート】
対象シート名:
結果を出すシート名:(同じシートならセルの位置)
見出し行: 行目
データの開始行: 行目
データの行数の目安: 行(増える/増えない)
【列の定義】(タブ区切り)
列 見出し データ型 値の例 空欄 備考
A
B
C
【サンプル3行】(見出し行を含む。タブ区切り。架空の値に置き換える)
【期待する結果】(上のサンプルに対して、手で出した答え)
【してよいこと・避けたいこと】
元のデータの上書き:不可/可
行や列の削除:不可/可
列やシートの追加:不可/可
記入例(架空の備品予約の一覧)
【ソフトとバージョン】
Excel for Microsoft 365(Windows)
【シート】
対象シート名:予約一覧
結果を出すシート名:集計(B2 セル)
見出し行:1 行目
データの開始行:2 行目
データの行数の目安:約 2,000 行(毎月増える)
【列の定義】(タブ区切り)
列 見出し データ型 値の例 空欄 備考
A 予約ID 文字列 R-0001 なし 重複なし
B 予約日 日付 2026/10/1 なし 日付の値(文字列ではない)
C 部署 文字列 総務部 なし 表記のゆれなし
D 備品名 文字列 プロジェクター なし
E 利用時間 数値 1.5 あり 単位は時間。空欄は 0 として扱う
F 状態 文字列 確定 なし 「確定」「取消」の2種類
【サンプル3行】(見出し行を含む。タブ区切り)
予約ID 予約日 部署 備品名 利用時間 状態
R-0001 2026/10/1 総務部 プロジェクター 2 確定
R-0002 2026/10/1 開発部 会議室A 1.5 確定
R-0003 2026/10/2 総務部 会議室A 3 取消
【期待する結果】
部署が「総務部」、状態が「確定」、予約日が 2026年10月 の利用時間の合計。
サンプル3行では R-0001 だけが当てはまり、答えは 2。
【してよいこと・避けたいこと】
元のデータの上書き:不可
行や列の削除:不可
列やシートの追加:不可(結果は「集計」シートの B2 に出す)
入力シートを書くときの要点
| 項目 | 要点 | 理由 |
|---|---|---|
| データ型 | 「日付の値」か「日付に見える文字列」かを書く | 条件の書き方や変換の要否が変わる |
| 値の例 | 区切り文字や全角・半角が分かる実物の形で書く | 2026/10/1 と 2026-10-01 は別の扱いになる |
| 空欄 | 空欄があるか、あったらどう扱うかを書く | 0 とするか、対象から外すかで結果が変わる |
| サンプル3行 | 条件に当てはまる行・当てはまらない行を混ぜる | 期待する結果で条件の境目を示せる |
| 期待する結果 | どの行が当てはまるかまで書く | 受け取ったものを確かめる基準になる |
| 個人情報など | 氏名や連絡先、取引先名は架空の値に置き換える | 表の形が伝われば、中身は実物でなくてよい |
列の定義とサンプル行はタブ区切りで書くと、列の対応がずれず、表計算ソフトにもそのまま貼り付けられます。
関数を作らせるプロンプトテンプレート
次の表に対して、条件を満たす数式を1本作ってください。
<input_sheet>
(共通の入力シートをここに貼る)
</input_sheet>
<request>
(やりたいこと。例:部署・状態・月を指定して、利用時間の合計を出す)
条件に使う値は数式に直接書かず、次のセルを参照する:
(例:部署=集計!A2、対象月の1日=集計!A1)
</request>
<constraints>
- 「ソフトとバージョン」に書いた環境で使える関数だけを使う
- 作業用の列は追加しない(追加が必要な場合は、理由と列の内容を先に説明する)
- 行が増えても範囲を直さずに済む書き方にする
- 当てはまるデータがないときに表示する値:(例:0)
</constraints>
<output_format>
1. 数式(そのままセルに貼れる形で、1つのコードブロックに)
2. 入力するセル
3. 数式の読み方(引数ごとに1行)
4. サンプル3行に当てはめたときの計算の過程と結果(期待する結果と一致するか)
5. 表記のゆれや空欄があるとき、結果が変わる点
前提が足りない場合は、数式を書く前に質問してください。
</output_format>
条件の値をセル参照にさせると、あとから部署や月を変えるときに数式を触らずに済みます。出力形式の4番は、受け取った数式を確かめるときの手がかりになります。
VBAを作らせるプロンプトテンプレート
次の表を操作する Excel VBA のマクロを作ってください。
<input_sheet>
(共通の入力シートをここに貼る)
</input_sheet>
<request>
(やりたいこと。例:状態が「取消」の行を「取消一覧」シートに書き写す)
実行のきっかけ:(例:マクロの一覧から手動で実行)
</request>
<constraints>
- 「ソフトとバージョン」に書いた環境で動くこと
- 対象はマクロを書いたブックの「対象シート名」のシートだけ。開いている別のブックには触れない
- シート名・見出し行・列の位置は、冒頭の定数にまとめる
- 最終行は実行のたびに取得する(行数を固定で書かない)
- 元のデータの上書き・行や列の削除は「してよいこと・避けたいこと」に従う
- 変数はすべて宣言する(Option Explicit を付ける)
- 処理の最後に、処理した件数をメッセージで表示する
</constraints>
<output_format>
1. 標準モジュールにそのまま貼れるコード全体(Sub 1つ。省略しない)
2. 貼る場所と実行の手順
3. このマクロが書き換える範囲(シート名とセル範囲)と、削除・上書きの有無
4. サンプル3行で実行したときに、どのシートのどのセルがどう変わるか
5. 動かす前に確かめること
前提が足りない場合は、コードを書く前に質問してください。
</output_format>
出力形式の3番で書き換える範囲と削除・上書きの有無を先に言葉で出させるのが要点です。コードを読み慣れていなくても、頼んだ範囲と合っているかをここで確かめられます。
GASを作らせるプロンプトテンプレート
次の Google スプレッドシートを操作する Google Apps Script の関数を作ってください。
<input_sheet>
(共通の入力シートをここに貼る。ソフトは「Google スプレッドシート」)
</input_sheet>
<request>
(やりたいこと。例:状態が「取消」の行を「取消一覧」シートに書き写す)
スクリプトの置き場所:このスプレッドシートに付属するスクリプト
実行のきっかけ:(例:手動で実行/時間を決めて実行)
</request>
<constraints>
- 対象はこのスプレッドシートの「対象シート名」のシートだけ。ほかのファイルには触れない
- シート名・見出し行・列の位置は、冒頭の定数にまとめる
- セルの読み書きは範囲でまとめて行う(1セルずつ繰り返さない)
- 1回の実行は 6 分以内に終わること(データの行数の目安は入力シートのとおり)
- 元のデータの上書き・行や列の削除は「してよいこと・避けたいこと」に従う
- メール送信や外部サービスへの接続はしない(必要な場合は先に説明する)
</constraints>
<output_format>
1. スクリプト エディタにそのまま貼れるコード全体(関数1つ。省略しない)
2. 貼る場所と実行の手順、初回の実行で求められる権限の内容
3. このスクリプトが書き換える範囲(シート名とセル範囲)と、削除・上書きの有無
4. サンプル3行で実行したときに、どのシートのどのセルがどう変わるか
5. 動かす前に確かめること
前提が足りない場合は、コードを書く前に質問してください。
</output_format>
制約に入れた「6 分以内」は、Google の公式ページ「Quotas for Google Services」に載っている上限です。同じページには、次の値が載っています。
| 項目 | 無料の Google アカウント | Google Workspace アカウント |
|---|---|---|
| スクリプトの実行時間 | 6 分/回 | 6 分/回 |
| カスタム関数の実行時間 | 30 秒/回 | 30 秒/回 |
| トリガーの合計実行時間 | 90 分/日 | 6 時間/日 |
| メールの宛先数 | 100/日 | 1,500/日 |
行数が多い表では、この上限と行数の目安をプロンプトに書いておくと、まとめて読み書きする書き方を選んでもらいやすくなります。
Excelのバージョン・Googleスプレッドシートで使える関数の対応表
受け取った数式が #NAME? になるときは、その環境にない関数が使われていることがあります。プロンプトにソフトとバージョンを書くのは、これを避けるためです。
Excel と Google スプレッドシートの両方を調べた関数
Excel の列は、Microsoft サポートの関数一覧(アルファベット順)に付いている版のマーカーです。マーカーは「その関数が導入された版」を表し、それより前の版では使えないと説明されています。Google スプレッドシートの列は、Google の関数リストまたは各関数のヘルプページに載っているかどうかです。
| 関数 | Excel の版のマーカー | Google スプレッドシート |
|---|---|---|
| VLOOKUP | マーカーなし | あり |
| IFERROR | マーカーなし | あり |
| IFNA | 2013 | あり |
| IFS | 2019 | あり |
| SWITCH | 2019 | あり |
| XLOOKUP | 2021 | あり |
| FILTER | 2021 | あり |
| SORT | 2021 | あり |
| UNIQUE | 2021 | あり |
| LET | 2021 | あり |
| LAMBDA | 2024 | あり |
| IMAGE | 2024 | あり |
| REGEXEXTRACT | Microsoft 365 | あり |
| QUERY | 一覧に載っていない | あり |
| ARRAYFORMULA | 一覧に載っていない | あり |
| IMPORTRANGE | 一覧に載っていない | あり |
| GOOGLETRANSLATE | 一覧に載っていない | あり |
| SORTN | 一覧に載っていない | あり |
名前が同じでも、引数や細かな動きが同じとは限りません。たとえば REGEXEXTRACT について、Google のヘルプは正規表現に RE2 を使うと説明しています。Excel 用に作らせた数式を Google スプレッドシートに持っていくとき(その逆も)は、ソフト名を伝えて書き直してもらうほうが確実です。
Excel の版で変わる関数(Microsoft の一覧のマーカー)
| 版のマーカー | 関数 |
|---|---|
| 2019 | IFS、SWITCH、TEXTJOIN、CONCAT、MAXIFS、MINIFS |
| 2021 | XLOOKUP、XMATCH、FILTER、SORT、SORTBY、UNIQUE、SEQUENCE、LET、VALUETOTEXT、ARRAYTOTEXT |
| 2024 | LAMBDA、MAP、BYROW、BYCOL、REDUCE、SCAN、MAKEARRAY、TEXTSPLIT、TEXTBEFORE、TEXTAFTER、VSTACK、HSTACK、TOCOL、CHOOSECOLS、CHOOSEROWS、TAKE、DROP、WRAPROWS、EXPAND、IMAGE |
| Microsoft 365 | GROUPBY、PIVOTBY、REGEXEXTRACT、REGEXREPLACE、REGEXTEST、TRANSLATE、DETECTLANGUAGE、PERCENTOF、TRIMRANGE |
XLOOKUP については、関数の説明ページにも「Excel 2016 と Excel 2019 では使えない」と書かれています。
表計算ソフトに貼れるタブ区切り版です。
版のマーカー 関数
2019 IFS、SWITCH、TEXTJOIN、CONCAT、MAXIFS、MINIFS
2021 XLOOKUP、XMATCH、FILTER、SORT、SORTBY、UNIQUE、SEQUENCE、LET、VALUETOTEXT、ARRAYTOTEXT
2024 LAMBDA、MAP、BYROW、BYCOL、REDUCE、SCAN、MAKEARRAY、TEXTSPLIT、TEXTBEFORE、TEXTAFTER、VSTACK、HSTACK、TOCOL、CHOOSECOLS、CHOOSEROWS、TAKE、DROP、WRAPROWS、EXPAND、IMAGE
Microsoft 365 GROUPBY、PIVOTBY、REGEXEXTRACT、REGEXREPLACE、REGEXTEST、TRANSLATE、DETECTLANGUAGE、PERCENTOF、TRIMRANGE
バージョンの調べ方と、プロンプトに書く指定文
Microsoft サポートの説明では、Windows の Excel は「アカウント」(見当たらなければ「ファイル」から)を開くと「製品情報」に製品名が表示され、「Excel のバージョン情報」で詳しい版と 32 ビット/64 ビットの別を確認できます。
| 環境 | プロンプトに書く指定文 |
|---|---|
| Microsoft 365 | Excel for Microsoft 365(Windows)です。この版で使える関数を使って構いません。 |
| Excel 2024 | Excel 2024 です。Microsoft 365 だけで使える関数(GROUPBY、REGEXEXTRACT など)は使わないでください。 |
| Excel 2021 | Excel 2021 です。XLOOKUP、FILTER、LET は使えます。LAMBDA、TEXTSPLIT、VSTACK は使わないでください。 |
| Excel 2019 | Excel 2019 です。IFS、TEXTJOIN、MAXIFS は使えます。XLOOKUP、FILTER、UNIQUE、LET は使わないでください。 |
| 複数の版で共有 | このブックは Excel 2019 の人も開きます。Excel 2019 で使える関数だけで書いてください。 |
| Google スプレッドシート | Google スプレッドシートです。Excel だけにある関数や VBA は使わないでください。 |
環境にない関数を入れるとどうなるか
LibreOffice Calc 24.2.7 で、同じ表に3つの数式を入れて確かめました。表は A1:B3 に「備品名・台数」の見出しと、プロジェクター 3、ノートPC 10 の2行です。
| 数式 | LibreOffice Calc 24.2.7 での結果 |
|---|---|
=VLOOKUP("ノートPC",A2:B3,2,FALSE) |
10 |
=XLOOKUP("ノートPC",A2:A3,B2:B3) |
#NAME? |
=VLOOKUP("会議室",A2:B3,2,FALSE) |
#N/A |
=IFERROR(VLOOKUP("会議室",A2:B3,2,FALSE),"該当なし") |
該当なし |
この版の Calc は XLOOKUP を持たないため、2つ目は #NAME? になりました。#NAME? は「その名前の関数がこの環境にない」、#N/A は「探した値が見つからない」と、エラー値で原因の方向が分かれます。再質問のときは、この違いをそのまま伝えます。
受け取った数式を確かめる手順
期待する結果を先に手で出しておき、受け取った数式の結果と比べます。入力シートの記入例を6行に増やし、条件の境目の行(月の前後、状態が「取消」、別の部署)を入れた表で確かめます。
予約ID 予約日 部署 備品名 利用時間 状態
R-0001 2026-10-01 総務部 プロジェクター 2 確定
R-0002 2026-10-01 開発部 会議室A 1.5 確定
R-0003 2026-10-02 総務部 会議室A 3 取消
R-0004 2026-10-15 総務部 ノートPC 4 確定
R-0005 2026-09-30 総務部 プロジェクター 1 確定
R-0006 2026-11-01 総務部 会議室B 2 確定
「総務部・確定・2026年10月」に当てはまるのは R-0001 と R-0004 で、手で出した期待する結果は 2 + 4 = 6、件数は 2 です。R-0003 は取消、R-0005 は9月、R-0006 は11月、R-0002 は別の部署なので外れます。
確かめる対象として、この記事で用意した数式です(A〜F 列の 2〜7 行目にデータがある前提)。
=SUMIFS(E2:E7,C2:C7,"総務部",F2:F7,"確定",B2:B7,">="&DATE(2026,10,1),B2:B7,"<"&DATE(2026,11,1))
=COUNTIFS(C2:C7,"総務部",F2:F7,"確定",B2:B7,">="&DATE(2026,10,1),B2:B7,"<"&DATE(2026,11,1))
=SUMIFS(E2:E7,C2:C7,"総務部")
LibreOffice Calc 24.2.7 で計算した結果です(予約日は日付の値として入力)。
| 数式 | 結果 | 期待する結果 |
|---|---|---|
| 1つ目(部署・状態・月で合計) | 6 | 6 |
| 2つ目(同じ条件の件数) | 2 | 2 |
| 3つ目(部署だけで合計) | 12 | —(条件を減らした場合の比較用) |
1つ目と2つ目は期待と一致しました。3つ目のように条件が足りない数式は 12 になり、境目の行を入れておくと差として表れます。 サンプルが条件に当てはまる行だけだと、この差に気づけません。
動かす前の確認チェックリスト
共通(関数・VBA・GAS)
| 確認 | 項目 | 見るところ |
|---|---|---|
| □ | バックアップを取った | ファイルのコピー、または版を戻せる状態か |
| □ | コピーしたファイルで先に試す | 元のファイルではなく、コピーのほうで動かす |
| □ | 対象のシート名が合っている | コードや数式の中のシート名と、実物のシート名 |
| □ | 対象の範囲が合っている | 見出し行を含んでいないか、最終行まで届いているか |
| □ | 削除・上書きの有無を把握した | AI に出させた「書き換える範囲」の説明と、頼んだ内容 |
| □ | 結果の置き場所が空いている | 既にあるデータの上に書き出さないか |
| □ | サンプルで期待する結果と一致した | 境目の行を入れた小さな表で確かめたか |
| □ | 理解できない行が残っていない | 分からない行は、次の節の再質問で説明してもらう |
関数
| 確認 | 項目 | 見るところ |
|---|---|---|
| □ | その版にある関数だけを使っている | 対応表と見比べる。共有相手の版も確認する |
| □ | 範囲が行の追加に追従する | 行を1行足して結果が変わるか |
| □ | 日付・数値が文字列になっていない | 条件に使う列のデータ型 |
| □ | 当てはまるデータがないときの表示 | 0 や「該当なし」など、決めたとおりか |
VBA
| 確認 | 項目 | 見るところ |
|---|---|---|
| □ | 実行前にブックのコピーを保存した | 下の SaveCopyAs の例、または手動でコピー |
| □ | 対象のブックとシートを名前で指定している | 開いている別のブックに作用しないか |
| □ | 行や列の削除、値の消去、上書き保存、ファイルの削除の有無 | コードの中にその処理があるか、頼んだ範囲か |
| □ | 繰り返しの終わりが決まっている | 最終行の取得と、ループの終了条件 |
| □ | ファイルやフォルダのパスが自分の環境のものか | 仮のパスのままになっていないか |
Microsoft Learn の VBA リファレンスでは、Workbook オブジェクトの SaveCopyAs メソッドは「ブックのコピーをファイルに保存するが、メモリ上の開いているブックは変更しない」と説明され、次の例が載っています。引数は保存先のファイル名(FileName)1つです。
ActiveWorkbook.SaveCopyAs "C:\TEMP\XXXX.XLS"
保存先のパスとファイル名は、自分の環境に合わせて書き換えます。
GAS
| 確認 | 項目 | 見るところ |
|---|---|---|
| □ | 実行前にスプレッドシートのコピーを作った | 下の copy の例、または版の履歴 |
| □ | 対象のスプレッドシートとシートが合っている | ほかのファイルを開く処理が入っていないか |
| □ | 求められる権限が頼んだ内容に合っている | 初回の実行で表示される権限の内容 |
| □ | メール送信・外部への接続・ファイルの削除の有無 | 頼んでいない処理が入っていないか |
| □ | 実行時間の上限に収まる | 行数の目安と、まとめて読み書きしているか |
| □ | トリガーの設定 | 時間を決めた実行を頼んだ場合、頻度が意図どおりか |
Google Apps Script のリファレンスでは、Spreadsheet クラスの copy(name) は「スプレッドシートをコピーして、新しいスプレッドシートを返す」メソッドです。作業中のスプレッドシートは SpreadsheetApp.getActiveSpreadsheet() で取得できます。次は、この2つを使ってコピーを作る関数です(構文は Node.js 22 の node --check で確認)。
function backupBeforeRun() {
const book = SpreadsheetApp.getActiveSpreadsheet();
const copy = book.copy(book.getName() + "_backup");
console.log(copy.getId());
}
Google のヘルプによると、スプレッドシートは版の履歴から以前の版を開き、「この版を復元」で戻したり、版ごとに「コピーを作成」したりできます。以前の版を復元すると、セルごとの編集履歴は消えると説明されています。
エラー文を返して直させる再質問テンプレート
うまく動かなかったときは、「動きません」ではなく、出たものをそのまま返すのが近道です。同じ会話の続きに貼ります。
関数:エラー値や違う結果が出たとき
もらった数式を入れたところ、期待と違う結果になりました。原因と直した数式を教えてください。
<formula>
(入れた数式をそのまま貼る)
</formula>
<cell>
入れたセル:(例:集計!B2)
</cell>
<result>
表示された値:(例:#NAME? / #N/A / #VALUE! / 0 / 12)
期待する値:(例:6)
</result>
<data>
(結果が違うと分かる最小の行を、見出しつき・タブ区切りで貼る)
</data>
<environment>
(ソフトとバージョンをもう一度書く)
</environment>
1. 表示された値から考えられる原因を、可能性の高い順に挙げる
2. 原因を確かめるために入れる数式(例:対象のセルが文字列か数値かを調べる数式)
3. 直した数式と、変更した箇所
VBA:実行時エラーやコンパイルエラーが出たとき
もらったマクロを実行したところエラーになりました。原因と直したコードを教えてください。
<error>
エラーの番号とメッセージ:(ダイアログの文言をそのまま書く)
止まった行:(その行のコードをそのまま貼る)
</error>
<when>
(どこまで動いたか。例:10 行ほど書き写したあとで止まった/最初の行で止まった)
</when>
<code>
(いま貼ってあるコード全体。自分で変えた箇所があれば、その箇所を書く)
</code>
<sheet_state>
(止まったときのシートの状態。例:対象の列に空欄の行がある、シート名は「予約一覧」)
</sheet_state>
1. エラーのメッセージが示していること
2. 原因の候補と、確かめ方
3. 直したコード全体(省略しない)と、変更した行の一覧
4. 途中まで実行された分の影響(書き換わったセル)と、元に戻す方法
4番は、途中で止まったマクロが残した変更を把握するための項目です。コピーしたファイルで試していれば、元のファイルに戻ってやり直せます。
GAS:実行ログにエラーが出たとき
もらったスクリプトを実行したところエラーになりました。原因と直したコードを教えてください。
<error>
(実行ログに表示されたエラー文を、行番号も含めてそのまま貼る)
</error>
<when>
実行のしかた:(例:スクリプト エディタから手動で実行/トリガーで実行)
どこまで動いたか:(例:何も書き込まれなかった/途中の行まで書き込まれた)
</when>
<code>
(いま貼ってあるコード全体)
</code>
<sheet_state>
(シート名、見出し行、データの行数、空欄の有無)
</sheet_state>
1. エラー文が示していること(どの行で、何が起きたか)
2. 原因の候補と、確かめ方(追加するログの出力)
3. 直したコード全体(省略しない)と、変更した行の一覧
4. 途中まで実行された分の影響と、元に戻す方法
コードや数式の意味を説明してもらう
次のコード(数式)を、表計算に詳しくない人にも分かるように説明してください。
<code>
(コードまたは数式を貼る)
</code>
1. 全体で何をするか(2〜3文)
2. 1行ずつ(数式なら引数ごと)の説明を表にする
3. データを書き換える・削除する行があれば、行番号と対象の範囲を挙げる
4. 表の形が変わったとき(列の追加、シート名の変更)に直す箇所
動かす前にこの説明を読み、書き換える範囲が頼んだ内容と合っているかを見ると、チェックリストの「削除・上書きの有無を把握した」を埋められます。
よくある質問
Q. 表のスクリーンショットを渡してもよいですか? A. 画像を読めるサービスなら渡せますが、データ型(日付の値か文字列か)や見えていない行は画像から伝わりません。列の定義とサンプル行をタブ区切りの文字で添えると、列の対応が確実になります。
Q. 関数と VBA のどちらで頼めばよいか迷います。 A. セルに結果を出すだけなら、まず関数で頼みます。元のデータを書き換えず、結果が合わなければ消すだけで戻せます。ファイルをまたぐ転記やシートの分割など、関数では届かない操作を繰り返すときに VBA(Google スプレッドシートなら GAS)を選びます。
Q. Excel の VBA を Google スプレッドシートで使えますか? A. Google スプレッドシートのスクリプトは Google Apps Script で書くので、VBA のコードは書き直しが必要です。同じ処理を頼むときは、入力シートのソフト名を書き換えて GAS 用のテンプレートに差し込みます。
Q. 受け取ったコードが長くて途中で切れています。 A. 「続きを、切れた行の直前の行から書いてください」と頼むか、「処理を2つの Sub(関数)に分けて、1つずつ出してください」と分割を頼みます。つなぎ合わせたあとは、説明のテンプレートで全体を確かめます。
まとめ
- 表の構造(シート名・列・見出し行・データ型・サンプル3行・期待する結果)を入力シートにまとめ、タブ区切りで渡す
- 入力シートは関数用・VBA用・GAS用のテンプレートに共通で差し込める
- ソフトとバージョンを必ず書く。Excel の版や Google スプレッドシートかどうかで使える関数が変わる
- サンプルには条件の境目の行を入れ、期待する結果を先に手で出して比べる
- 動かす前にバックアップ・対象範囲・削除や上書きの有無をチェックリストで確かめる
- うまく動かないときは、エラー値・エラー文・止まった行・コード全体をそのまま返して直してもらう
参考・出典
- Microsoft サポート「Excel functions (alphabetical)」 https://support.microsoft.com/en-us/office/excel-functions-alphabetical-b3944572-255d-4efb-bb96-c6d90033e188
- Microsoft サポート「XLOOKUP function」 https://support.microsoft.com/en-us/office/xlookup-function-b7fd680e-6d10-43e6-84f9-88eae8bf5929
- Microsoft サポート「About Office: What version of Office am I using?」 https://support.microsoft.com/en-us/office/about-excel-what-version-of-office-am-i-using-932788b8-a3ce-44bf-bb09-e334518b8b19
- Microsoft Learn「Workbook.SaveCopyAs method (Excel)」 https://learn.microsoft.com/en-us/office/vba/api/excel.workbook.savecopyas
- Google ドキュメント エディタ ヘルプ「Google Sheets function list」 https://support.google.com/docs/table/25273
- Google ドキュメント エディタ ヘルプ「IMPORTRANGE」 https://support.google.com/docs/answer/3093340
- Google ドキュメント エディタ ヘルプ「REGEXEXTRACT」 https://support.google.com/docs/answer/3098244
- Google ドキュメント エディタ ヘルプ「Find what's changed in a file」 https://support.google.com/docs/answer/190843
- Google Apps Script「Quotas for Google Services」 https://developers.google.com/apps-script/guides/services/quotas
- Google Apps Script リファレンス「Class Spreadsheet」 https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet
- Google Apps Script リファレンス「Class SpreadsheetApp」 https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app
(いずれも 2026年10月5日に閲覧)
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「生成AIにExcel関数・VBA・GASを作らせるプロンプトの書き方」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。