ExcelのAI丸投げで失敗しないための「依頼テンプレ」5選:関数・Power Query・VBAを正確に書かせるコツ
ChatGPTなどの生成AI(文章やコードを自動生成するAI)にExcelの数式やVBAを書かせる利用が、実務の現場で広がっている。その一方で、貼り付けるとエラーになる数式や、実行すると止まるマクロが返ってきたという事例も多く報告されている。
背景には、AIが利用者のExcelのバージョンやシート構成、データ型を知らないまま、推測で回答を組み立てている点がある。存在しない関数やメソッド(VBAで使う命令)を、もっともらしく出力する現象(ハルシネーション:事実と異なる内容をAIが自然な文章で生成してしまうこと)も、失敗の一因と言える。
ただし、こうした失敗の多くは依頼文の書き方で減らせると見られる。本記事では、用途別に使える5つの依頼テンプレートを紹介する。
AIに丸投げして失敗するパターンには何があるのか
まず、典型的な失敗の型を整理する。
曖昧な依頼で、前提が推測に置き換わる
「売上を集計して」のような依頼では、どのシートのどのセル範囲を、どんな条件で集計するのかが示されていない。AIは不足分を推測で補うため、実際のファイルとは異なる列やセル番地を前提にした数式が返ってくることがある。
バージョン違いで動かない関数がある
XLOOKUPやLET(計算途中の値に名前を付けて数式内で再利用する関数)は、Microsoft 365やExcel 2021以降で使える関数である。Excel 2019や2016では利用できない。AIが最新の関数を使った回答を返しても、利用者の環境が旧バージョンであれば、#NAME? エラーになる。
VBAではシート名や範囲の取り違えが起こりやすい
VBA(Visual Basic for Applications:Excelの操作を自動化するマクロ言語)では、次のような点が典型的なエラー原因になる。
- シート名の不一致(「Sheet1」と書かれているが、実際は「売上データ」など)
- データ範囲の取り違え(最終行の判定ミス、見出し行を含めてしまうなど)
- 実行環境の違い(Web版のExcelではVBAを実行できない)
失敗の共通点は「情報不足」と「形式の指定漏れ」
これらを俯瞰すると、失敗の共通点は次の2つに集約できると言える。
- 前提情報の不足:バージョン、データ構造、目的が伝わっていない
- 出力形式の指定漏れ:数式なのか、GUI手順なのか、コードなのか、説明は要るのかが決まっていない
以降のテンプレートは、この2点を埋める設計になっている。
テンプレ1:どの依頼にも共通する「前提共有」には何を書けばよいのか
関数・Power Query・VBAのいずれを依頼する場合でも、冒頭に置く「前提共有」ブロックが土台になる。このブロックを使い回せる形にしておくと、毎回の依頼が楽になる。
記載すべき項目
| 区分 | 記載内容 |
|---|---|
| 環境 | Excelのバージョン(Microsoft 365、2021、2019、2016など)、OS(Windows/Mac)、デスクトップ版かWeb版か |
| データ構造 | シート名、見出し行の位置、列名、各列のデータ型(文字列・数値・日付)、おおよその行数 |
| 目的 | やりたいことと、最終的な出力イメージを1〜2文で |
| サンプル | ダミーデータ3〜5行程度 |
ダミーデータを添えると、AIが列の構造や値の形式(日付が「2024/4/1」なのか「20240401」なのか等)を把握しやすくなり、精度が上がると見られる。
前提共有のテンプレート
【環境】
- Excel:Microsoft 365(デスクトップ版)/Windows 11
【データ構造】
- シート名:「売上データ」
- 見出し行:1行目、データは2行目から(約5,000行)
- 列構成:A列=日付(日付型)、B列=店舗名(文字列)、C列=商品コード(文字列)、D列=売上金額(数値)
【目的】
- 店舗ごと・月ごとの売上合計を、別シート「集計」に一覧で出したい。
【サンプルデータ】
2024/4/1 | 渋谷店 | A001 | 12000
2024/4/1 | 新宿店 | A002 | 8500
2024/4/2 | 渋谷店 | A001 | 15000
注意点:機密情報は必ず除外する
サンプルデータには、実在の顧客名、個人情報、社外秘の数値を含めない。氏名は「顧客A」、金額は近い桁の架空の値に置き換えるといった加工が前提となる。
テンプレ2:関数を正確に書かせるには、どう依頼すればよいのか
関数の依頼では、入力と出力の例をセットで示すことが精度を左右する。
押さえるべき4点
- 入力例と期待する出力例をセットで示す 「A2が『東京』のとき、B2は『関東』になってほしい」のように、具体的な対応を書く。
- セル番地・列名を明記し、使用してよい関数の範囲を指定する 「VLOOKUPのみ」「XLOOKUPは不可」「動的配列(結果が複数セルに自動展開される仕組み)は可」など。
- エラー処理を条件に含める 空白セルの場合、該当なしの場合に何を表示するかを決めておく。
- 数式の意味を1行ずつ説明させる 利用者側で妥当性を確認しやすくなる。
関数依頼のテンプレート
(※ここにテンプレ1の前提共有を貼る)
【やりたいこと】
「集計」シートのA列に店舗名が入っています。B列に、「売上データ」シートのD列(売上金額)を店舗ごとに合計した値を出したいです。
【入力と期待する出力の例】
- A2が「渋谷店」→ B2は 27000(サンプル上の渋谷店の合計)
- A3が「新宿店」→ B3は 8500
【条件】
- 使用可能な関数:SUMIFS、IFERROR など(動的配列とXLOOKUP/LETは使わない)
- A列が空白の場合は、B列も空白にする
- 該当する店舗がない場合は 0 を表示する
- B2に入力して下方向にコピーできる形にする
【出力形式】
1. B2セルに入れる数式を1つ
2. 数式の各部分が何をしているかを1行ずつ説明
3. 想定されるエラーと、その原因の候補
「バージョン指定」と「使用関数の指定」を併用する
バージョンを伝えるだけでなく、使用してよい関数まで絞ると、環境に合わない関数が混入するリスクをさらに下げられると見られる。たとえば社内でExcelのバージョンが混在している場合は、「全員が開けるよう、Excel 2016で動く関数のみ」と書く方法が有効と言える。
テンプレ3:Power Queryの手順やM言語は、どう指示すれば正確になるのか
Power Query(データの取り込み・整形を行うExcelの機能)は、GUI操作で処理を組み立てられる一方、その裏でM言語(Power Queryの内部で使われる式言語)のコードが生成される。AIに依頼する際は、どちらの形式で回答がほしいかを先に決めておくことが重要となる。
押さえるべき4点
- 元データの種類を明示する:Excelファイル、CSV、フォルダ内の複数ファイルなど。
- 列名と列の型を具体的に伝える:型の指定漏れは、型変換エラーの原因になりやすい。
- 処理を順序立てた箇条書きにする:「不要列の削除→型変換→結合→集計」のように書く。
- 出力形式を指定する:M言語のコードが必要か、GUI操作手順が必要かを明示する。
Power Query依頼のテンプレート
(※ここにテンプレ1の前提共有を貼る)
【元データ】
- 形式:CSVファイル(文字コードUTF-8)、フォルダ「C:\data\sales」内に月次ファイルが複数
- 列名と型:
- 日付(日付)/店舗名(テキスト)/商品コード(テキスト)/売上金額(整数)
【やりたい処理(順序どおり)】
1. フォルダ内のCSVをすべて結合する
2. 「備考」列を削除する
3. 「日付」を日付型、「売上金額」を整数型に変換する
4. 店舗名と商品コードごとに売上金額を合計する
【出力形式】
- M言語のコード全文(詳細エディターに貼り付けられる形)
- あわせて、GUI操作での手順も箇条書きで
- 各ステップが何をしているかの短い説明
【注意】
- 列名は次のとおり正確に使うこと:日付、店舗名、商品コード、売上金額
列名の表記ゆれがエラーの原因になりやすい
M言語では、列名の大文字小文字が区別される。さらに、全角と半角、末尾の空白といった違いも、「列が見つからない」エラーの原因になりやすい。列名は目視で打ち直さず、実ファイルからコピーしてそのまま渡すことが望ましい。
テンプレ4:VBAを安全に動かすために、依頼文へ何を盛り込むべきか
VBAは、シートの書き換えやファイルの保存など、元データに影響する処理を実行できる。そのため、依頼文の段階で安全面の条件を入れておくことが重要と言える。
押さえるべき4点
- 対象を具体的に指定する ブック名、シート名、処理範囲、最終行の判定方法(「A列の最終入力行を基準にする」など)を書く。
- コーディングルールを指示する
Option Explicit(変数の宣言を強制する設定。入力ミスによるバグを防ぎやすくなる)を入れる- 変数宣言を行う
- コメントを日本語で付ける
- 元データを守る条件を付ける 元データを直接書き換えず、別シートに出力する。書き換える場合は、実行前にバックアップを作る。
- 実行手順も出力させる 標準モジュール(マクロのコードを書き込む場所)への貼り付け方、マクロの実行方法まで含めると、初心者でも試しやすい。
VBA依頼のテンプレート
(※ここにテンプレ1の前提共有を貼る)
【対象】
- ブック:このマクロを保存するブック自身(ThisWorkbook)
- 元データ:シート「売上データ」A1:D列(1行目が見出し)
- 最終行の判定:A列の最終入力行を基準にする
- 出力先:シート「集計」(なければ作成。すでにある場合は内容をクリアしてから出力)
【やりたい処理】
店舗名ごとの売上金額の合計を、「集計」シートのA列(店舗名)とB列(合計)に出力する。
【コーディングルール】
- 先頭に Option Explicit を入れる
- すべての変数を宣言する
- 日本語のコメントを付ける
- 「売上データ」シートの内容は変更しない
- シートが存在しない場合は、MsgBoxで分かりやすいメッセージを出して終了する
【出力形式】
1. VBAコード全文(1つのSubプロシージャ)
2. 標準モジュールへの貼り付け方と実行方法(手順を番号付きで)
3. 動作確認のためのチェックポイント
Web版や環境の違いにも注意が必要
Excel for the web(ブラウザ版)では、VBAマクロを実行できない。環境の欄に「デスクトップ版」と明記しておけば、AIがOffice スクリプト(Web版向けの自動化機能)など別の手段を提案する事態を避けやすい。
テンプレ5:エラーが出たとき、AIに修正を依頼する正しい方法は何か
AIが書いたコードや数式でエラーが出ることは、珍しくない。このとき「動きません」とだけ伝えても、AIは原因を絞り込めない。エラーの情報を、加工せずそのまま渡すことが基本となる。
伝えるべき情報
- エラーメッセージの全文(ダイアログの文言、
#VALUE!などのエラー値) - エラーが出た行(VBAの場合、デバッグ時に黄色く表示される行)
- 実行時の状況(どのシートで、どの操作をしたときか)
- 直前に変更した点(あれば)
修正依頼のテンプレート
先ほどのコードを実行したところ、エラーが出ました。
【エラーメッセージ】
実行時エラー '9':インデックスが有効範囲にありません。
【エラーが出た行】
Set ws = ThisWorkbook.Sheets("売上データ")
【実行時の状況】
- 「売上データ」というシート名のブックで、「集計」シートを開いた状態で実行した
- Excel:Microsoft 365(デスクトップ版)
【お願い】
1. エラーの原因として考えられるものを可能性の高い順に
2. 修正後のコード全文
3. 修正前と修正後の差分(変更した行だけを抜粋)
4. なぜその修正でエラーが解消されるのかの説明
差分と原因の説明を出力させておくと、どこを直したかを利用者が把握でき、意図しない変更を見落としにくくなる。
改善しないときは、会話を切り替える
同じ修正依頼を繰り返しても改善しない場合がある。会話が長くなると、初期に伝えた前提が薄れたり、誤った前提の上に修正が積み重なったりすることがあるためだ。このようなときは、新しい会話を開き、テンプレ1の前提共有と現在のコード、エラー情報を整理し直して依頼する方法が有効と見られる。
検証は少量データで行う
修正版のコードも、最終的な検証はテスト用ファイルや少量のデータで行うことが前提となる。本番ファイルでいきなり実行するのは避けたい。
AIの回答を業務に使う前に、どんな確認が必要なのか
依頼文を整えても、AIの回答が常に正しいとは限らない。業務に組み込む前に、次の確認が必要となる。
結果を照合する
- 数式:手計算や、少数のサンプルで求めた結果と照合する。件数が多い場合は、ピボットテーブル(集計表を作る機能)など別の方法で出した合計と突き合わせる方法もある。
- VBA:必ずコピーしたファイルで先に実行する。マクロの実行は、元に戻す操作(Ctrl+Z)で取り消せないことが多い。
- Power Query:件数や合計値が元データと一致するかを確認する。
情報セキュリティの確認
社内データや個人情報をAIに入力する場合は、自社の情報セキュリティ規程や、利用するAIツールのデータ取り扱い方針(入力内容が学習に使われるか、どの範囲で保存されるか等)を事前に確認する必要がある。規程が不明な場合は、実データを入力せず、構造だけを示したダミーデータで依頼する運用が現実的と言える。
最終責任は利用者側にある
AIは補助役と位置づけられる。回答の採否や、業務上の最終的な検証と責任は利用者側にある。この前提を持っておくことが、AI活用の土台と言える。
【まとめ】依頼テンプレを使いこなすためのポイントは何か
本記事で紹介した内容は、次の4点に整理できる。
- 前提共有:バージョン、環境、データ構造、目的を最初に伝える
- 具体例:入力例と期待する出力例をセットで示す
- 出力形式の指定:数式・M言語・GUI手順・VBAコード、説明の有無まで決める
- 検証前提の運用:コピーしたファイルと少量データで確認してから本番へ
5つのテンプレの使い分け
| テンプレ | 使う場面 |
|---|---|
| 1. 前提共有 | すべての依頼の冒頭に付ける |
| 2. 関数 | 数式で完結する集計・変換 |
| 3. Power Query | 複数ファイルの結合、定期的なデータ整形 |
| 4. VBA | 画面操作を含む繰り返し作業の自動化 |
| 5. エラー修正 | 動かなかったとき、結果が想定と違うとき |
用途別に使い分けることで、やり直しの手間を減らせる可能性がある。
テンプレは共有して育てる
依頼テンプレは、一度作って終わりではなく、社内で共有し、うまくいった書き方や失敗した事例を反映して改善していく運用が望ましい。担当者ごとの工夫が個人に留まらず、チーム全体の資産になることが、AI活用の定着につながると見られる。まずはテンプレ1の前提共有ブロックを自分の業務ファイルに合わせて作成し、次回の依頼から使ってみることが、手軽な第一歩と言える。