「この集計、関数でできそうだけど、書き方が思い出せない」。関数名を探したり書き方を調べたりするうちに、手が止まることはないでしょうか。ChatGPTに、やりたい処理を日本語で伝えれば、数式の候補を作ってもらえます。
ただし、AIが出した式やコードを、そのまま本番のファイルに貼るのは危険です。合っているように見えても、条件が1つずれているだけで金額が変わることがあります。
そこでこの記事では、架空の小さなデータで確かめてから本番に持っていく流れを、コピーして試せる形で紹介します。関数の例を3つ、VBA(マクロ)の例を1つ、すべて同じ架空のデータでそろえました。ブラウザのChatGPTに頼み、返ってきた式やコードを手元のExcelに貼り付ける方法です。
ChatGPTでExcelを扱うときの基本の流れ
3つのステップだけ覚える
やることは単純で、次の3つの往復です。
- 日本語で依頼する(列の構成と、やりたいことを書く)
- 出力をExcelに貼り付ける(数式ならセルへ、コードなら標準モジュールへ)
- 小さな架空のデータで確かめる(期待した値と合うか、目で確かめる)
大切なのは、3の確認までを1つの作業にすることです。5行ほどの架空のデータなら自分でも計算できるので、AIの出力と照らし合わせやすくなります。
依頼文には「列の構成」と「期待する値」を書く
ChatGPTへの依頼で結果が大きく変わるのは、次の3点を書くかどうかです。
- どのシートの、どの列に、何が入っているか(列名と、データが何行目から始まるか)
- 何を出したいか(合計なのか、判定なのか、引っ張ってくるのか)
- 答えがいくつになるはずか(分かっていれば書く。合っているか確かめやすくなります)
逆に、初心者のうちは高度なお題を避けたほうが安全です。たとえば「日付をまたいだ集計」や「二次元配列を返す複雑な数式」です。読めない式は、確かめることもできません。まずは、1つのセルに1つの答えが返るシンプルな形から始めてください。
機密情報は入力しない、が大前提
実際の顧客名・取引金額・従業員の情報を、チャット欄に貼るのは避けてください。まずは自社の情報管理のルールを確かめます。生成AIを業務で使ってよいか、どこまで入力してよいかを把握しておきましょう。
OpenAIの設定には、データコントロールから、モデルの改善への利用をオフにできる項目があります。ただ、オフにしても会話の履歴は残ります。何より、この設定は「機密を入力してよい」という許可ではありません。設定画面の表記は変わることがあるので、名前を覚えるより「どこまで入力するか」の線引きを自分で持つほうが役に立ちます。
そして実務では、機密を入れなくても困りません。次に示すような列の構成と架空のデータだけで、数式づくりを頼めます。返ってきた式が正しいかは、別に確かめます。
共通の練習データ「売上一覧」
関数の例は、Microsoft 365などの対応した版を前提にしています。XLOOKUPが使えない版には、代わりの式を示します。依頼するときは、Excelの版と、Windows/Mac/Web版のどれかも添えてください。
この記事の例は、すべて次の架空のデータを使います。新しいブックを1つ作り、シート名を 売上一覧 に変えて、A1から貼り付けてください。
| 伝票ID | 商品 | 担当区分 | 売上金額 | 入金状況 |
|---|---|---|---|---|
| R001 | 商品A | 東 | 12000 | 入金済 |
| R002 | 商品B | 西 | 8000 | 未入金 |
| R003 | 商品A | 東 | 5000 | 未入金 |
| R004 | 商品C | 東 | 15000 | 入金済 |
| R005 | 商品B | 西 | 0 | 未入金 |
A列が伝票ID、B列が商品、C列が担当区分、D列が売上金額、E列が入金状況です。貼り付けたら、A1が「伝票ID」、A2が「R001」になっているか確かめてください。以下の式は、この配置が前提です。
- 使う範囲は A1:E6 の1シートだけ。1行目が見出しで、データは2〜6行目の5行。
- 売上金額(D列)は数値で入力します。「12,000円」のような文字列にはしません。
- 入金状況(E列)は「入金済」「未入金」の2種類だけ。表記のゆれはない前提です。
- 伝票IDは重複なし。R005は金額が0という点が、あとで効いてきます。
- 実在のデータではありません。確認専用のダミーです。
例1:SUMIFSで「東かつ入金済」の合計を出す
12,000R004
15,00027,000
5行の練習データから求める期待値です。ほかの3行は条件に合わないため、合計に含めません。
依頼文
Excelの数式を作ってください。シート「売上一覧」のA1:E6にデータがあります。1行目がヘッダーで、A列=伝票ID、B列=商品、C列=担当区分、D列=売上金額、E列=入金状況です。データは2行目から6行目までの5行です。C列が「東」かつE列が「入金済」の行について、D列の売上金額を合計する数式を教えてください。同じシートのG2に入力します。
出力される式と期待する値
入力セル:G2
=SUMIFS(D2:D6,C2:C6,"東",E2:E6,"入金済")
期待値:27000(R001の12000+R004の15000)
確かめておきたい境目の条件
SUMIFSは、合計する範囲を最初に書き、そのあとに「条件範囲」「条件」をペアで並べます。条件が1つだけのSUMIFとは、引数の順番が違います。AIの出力をうのみにせず、順番を目で確かめてください。
出典:Microsoft: SUMIFS 関数/SUMIF 関数
- 範囲の高さをそろえる:合計範囲と条件範囲は、同じ行数にします。
D2:D6に対してC2:C7のようにずれると、正しく動きません。 - 表記のゆれで合計が変わる:E2だけを「入金済み」に変えると、R001が外れて合計は15000になります。E2とE5の両方を「入金済み」にすると0です。試したあとは、両方を「入金済」に戻してください。
- 該当が0件でも0が返る:たとえば条件を「南」に変えると、結果は0です。「合計が0円」なのか「1件もない」のかは、この式だけでは区別できません。件数も見たいなら、COUNTIFSを別のセルに置きます。
例2:IFで10,000円以上かどうかを判定する
依頼文
同じ「売上一覧」で、D列の売上金額が10000以上なら「大口」、そうでなければ「通常」と表示する数式を作ってください。F2に入力してF6までコピーします。
出力される式と期待する値
入力セル:F2(F6までコピー)
=IF(D2>=10000,"大口","通常")
| セル | 元の金額 | 期待値 |
|---|---|---|
| F2 | 12000 | 大口 |
| F3 | 8000 | 通常 |
| F4 | 5000 | 通常 |
| F5 | 15000 | 大口 |
| F6 | 0 | 通常 |
確かめておきたい境目の条件
IFは、「条件」「真のときの値」「偽のときの値」の3つを渡すだけの関数です。シンプルな分、間違いは条件の式のほうに出ます。
- ちょうど10000は「大口」:
>=と>で結果が変わります。試しにD3を10000に書き換えると、F3は「大口」になるはずです。決まりどおりか確かめたら、D3は元の8000に戻してください。 - 空欄は0として扱われる:D列が空のセルは「通常」になります。空欄を別に扱いたいなら、そのことを追加で頼みます。
- 文字列が混ざると崩れる:D列に「12,000円」のような文字が入ると、数値の比較が思いどおりになりません。D列は数値で持つ、という前提を守るのが、結局いちばん早い対策です。
例3:XLOOKUPで伝票IDから金額を引く
依頼文
同じ「売上一覧」で、A列の伝票IDを検索して、その行のD列の売上金額を返す数式を作ってください。見つからないときは「該当なし」と表示してください。完全一致で検索します。
出力される式と期待する値
入力セル:G5
=XLOOKUP("R003",A2:A6,D2:D6,"該当なし")
期待値:5000
入力セル:G6
=XLOOKUP("R999",A2:A6,D2:D6,"該当なし")
期待値:該当なし
入力セル:G7
=XLOOKUP("R005",A2:A6,D2:D6,"該当なし")
期待値:0
「0」と「該当なし」を区別する
3つ目のR005が、この例でいちばん大事なところです。R005はこの架空の一覧にあり、金額が0円です。一方、R999は存在しない伝票です。この2つを同じ表示にすると、経理の確認で判断を誤ります。
XLOOKUPは、4番目の引数で「見つからなかったとき」の表示を決められます。"該当なし" を渡しておけば、0円との区別がはっきりつきます。
そのほかの注意点
- 完全一致が既定:XLOOKUPは、指定しなければ完全一致で探します。あいまいな検索をうっかり使う事故が起きにくい関数です。
- 重複したIDは最初の1件だけ:同じ伝票IDが2行あると、この記事の式では上のほうが返ります。IDが重ならない前提を崩さないでください。
- 使えるバージョンがある:XLOOKUPはMicrosoft 365、Excel 2021/2024、Web版などで使えますが、Excel 2016/2019にはありません(Microsoft: XLOOKUP 関数)。
古いExcelを使っている場合の代わりの式
社内のPCがExcel 2016や2019なら、上の式を入れても #NAME? エラーになります。その場合は、ChatGPTに次のように追加で頼んでください。
会社のExcelが2019でXLOOKUPが使えません。同じ結果になるように、VLOOKUPの完全一致で書き直してください。見つからないときは「該当なし」と表示したいです。
入力セル:G5
=IFERROR(VLOOKUP("R003",A2:D6,4,FALSE),"該当なし")
期待値:5000
ポイントは2つです。
- 最後の引数
FALSEは、完全一致の指定です。省くと、思わぬ近似一致になります。 4は、範囲A2:D6の左から4列目(D列)という意味です。あとから列を挿入すると数字がずれて壊れるので、レイアウトを変えたら必ず確かめ直してください。
この式のIFERRORは、見つからない場合以外のエラーも「該当なし」に置き換えます。式や参照範囲の誤りまで隠れることがあります。確かめるときは、VLOOKUPの部分だけでも実行し、エラーの原因を見てください。
なお、VLOOKUPは、検索する列(伝票ID)が範囲のいちばん左にある必要があります。今回はA列がIDなので、この構成のまま使えます。
AIの出力を確かめる手順
数式が返ってきたら、貼る前に次の4点を見てください。式の説明と元のデータを見比べながら確かめます。
- 範囲の行数がそろっているか:
D2:D6とC2:C6のように、同じ高さになっているか。 - 条件の文字列が、実際のデータと一致しているか:「入金済」なのか「入金済み」なのか。
- 期待した値と一致するか:この記事の例なら27000、大口/通常、5000。数字が違えば、式か前提のどちらかが間違っています。
- 境目の1件を作って試したか:ちょうど10000、金額0、存在しないID。
そして、本番のファイルでいきなり試さないこと。練習用の新しいブックで動きを確かめ、納得してから、本番の列に合わせて書き換えます。
エラーが出たときの追加の質問プロンプト
うまくいかないとき、「動きません」とだけ書いても良くなりません。何を入れて、何が返って、何を期待していたかの3点をそのまま伝えるのがコツです。
エラー表示が出た場合
さきほどの数式をG2に入れたところ
#VALUE!と表示されました。データはシート「売上一覧」のA1:E6で、D列は数値、E列は「入金済」か「未入金」の文字列です。原因の候補と、修正した数式を教えてください。
結果が期待値と違う場合
=SUMIFS(D2:D6,C2:C6,"東",E2:E6,"入金済")を入れましたが、27000になるはずが0になります。C列の値は「東」「西」、E列の値は「入金済」「未入金」です。原因として考えられるものを3つ挙げて、確認方法も教えてください。
式の意味が分からない場合
この数式を、Excel初心者向けに引数ごとに1行ずつ日本語で説明してください。専門用語には短い補足を付けてください。
3つ目は地味ですが大事です。意味の分からない式を、業務に残さない。担当者が代わったときに直せないファイルは、それ自体がリスクになります。
ChatGPTにVBAを書かせるときの安全ルール
関数の次はマクロ(VBA)ですが、ここからは一段慎重になる必要があります。数式の誤りも、判断や集計に影響します。ただ、マクロは、たくさんのセルの値の書き換えや削除など、より広い操作をまとめて実行できます。
依頼の時点で、次の制約をはっきり書いてください。
- 新しい作業用のブックで試す(本番のファイルでは絶対に試さない)
ThisWorkbookで対象のブックを限定する(開いているほかのブックに触らせない)- シート名も限定する(今回なら「売上一覧」だけ)
- 値と数式は変えない。書式だけ
- 外部との通信・自動保存・削除・自動実行をしない
- 対象のシートがなければ、メッセージを出して止める
ThisWorkbook.Worksheets("シート名") という書き方で、対象を1つのシートに絞れます。「アクティブなシート」を対象にするコードは、実行したときにどのシートが開いているかで結果が変わります。初心者のうちは避けたほうが安全です。
出典:Microsoft: ThisWorkbook プロパティ
なお、列幅の調整は、指定した範囲だけでなく列全体にかかります。A1:E6だけを整えたい今回の目的には合わないので、依頼から外しています。
実践:書式だけ整える短いマクロ
依頼文
Excel VBAのコードを作ってください。次の条件を厳密に守ってください。
・ThisWorkbookのシート「売上一覧」だけを対象にする
・A1:E1(見出し行)を太字にする
・D2:D6(売上金額)の表示形式を桁区切りにする
・セルの値と数式は一切変更しない
・列幅は変更しない
・シート「売上一覧」がなければメッセージを出して処理を中止する
・シートが保護されていればメッセージを出して処理を中止する
・外部通信、ファイルの保存、削除、自動実行はしない
・標準モジュールに貼り付けて手動で実行します
コード
Option Explicit
Sub Format_UriageIchiran()
Dim ws As Worksheet
Dim shtName As String
shtName = "売上一覧"
' このコードを入れたブック(ThisWorkbook)の中だけを探す
On Error Resume Next
Set ws = ThisWorkbook.Worksheets(shtName)
On Error GoTo 0
' シートが無ければメッセージを出して中止
If ws Is Nothing Then
MsgBox "シート「" & shtName & "」が見つかりませんでした。" & vbCrLf & _
"シート名を確認してから、もう一度実行してください。", _
vbExclamation, "処理を中止しました"
Exit Sub
End If
' シートが保護されていればメッセージを出して中止
If ws.ProtectContents Then
MsgBox "シート「" & shtName & "」は保護されています。" & vbCrLf & _
"管理ルールと保護の理由を確認してください。", _
vbExclamation, "処理を中止しました"
Exit Sub
End If
' 見出し行だけを太字にする
ws.Range("A1:E1").Font.Bold = True
' 売上金額の「表示形式」だけを整える(値は変更しない)
ws.Range("D2:D6").NumberFormat = "#,##0"
MsgBox "シート「" & shtName & "」の書式を整えました。" & vbCrLf & _
"値と数式は変更していません。", vbInformation, "完了"
End Sub
このコードが触るのは、太字(Font.Bold)と表示形式(Range.NumberFormat)の2つだけです。表示形式はあくまで「見せ方」なので、D6の0は 0 と表示され、値は0のまま変わりません。データが空でも、書式が設定されるだけで、エラーにはなりません。
出典:Font.Bold/Range.NumberFormat
ご注意:このコードは記事執筆時点でExcel実機での実行を行っていません。必ず新規の練習用ブックで動作を確認し、業務ファイルに適用する前にご自身の環境で検証してください。
新しいテスト用ブックに入れる手順
まず、Web版のExcelでは、VBAの作成・実行・編集ができません。マクロ付きのブックを開いて、ふつうの編集をすることはできます。でも、コードを扱うにはデスクトップ版のExcelが必要です。
出典:Microsoft: Excel for the web での VBA マクロ
1. 練習用のブックを用意する
新しいブックを作り、シート名を 売上一覧 に変えて、先ほどの表をA1:E6に入力します。今ある業務のファイルは使いません。
2. 開発タブを表示する
開発タブは、初めは表示されていません(Microsoft: マクロを作成する(クイックスタート))。
- Windows:ファイル → オプション → リボンのユーザー設定 → 右側の一覧で「開発」にチェック → OK(開発タブを表示する)
- Mac:Excel → 環境設定 → リボンとツールバー → 「開発」にチェック → 保存(Excel for Mac の開発タブ)
3. 標準モジュールを作る
開発タブ → Visual Basic をクリックして、VBE(VBAの編集画面)を開きます。左のプロジェクトの一覧で、今回の練習用ブックの「VBAProject」を選んでください。ほかのブックやPERSONAL.XLSBを選ばないことが大切です。その状態で 挿入 → 標準モジュール を選ぶと、コードの入力画面が出ます。左の一覧が見えないときは、表示 → プロジェクト エクスプローラー を選びます。
4. コードを貼り付ける
上のコードを丸ごとコピーして、この白い画面に貼り付けます。貼り付けたら、VBEを閉じてExcelに戻ります。
5. .xlsm形式で保存する
ファイル → 名前を付けて保存 → ファイルの種類で 「Excel マクロ有効ブック(.xlsm)」 を選びます。ふつうの.xlsxで保存するとコードが消えるので、ここは必ず確かめてください(Microsoft: マクロを保存する)。
実行して結果を確かめる
開発タブ → マクロ → 一覧から Format_UriageIchiran を選ぶ → 実行(Microsoft: マクロを実行する)。
期待する結果は、次のとおりです。
- A1:E1の見出しが太字になる
- D2:D6が
12,0008,0005,00015,0000と桁区切りで表示される - 「書式を整えました」のメッセージが出る
- A2:E6の値は1つも変わっていない
シート名をわざと 売上一覧2 に変えて、実行してみてください。「見つかりませんでした」と出て、何も起きないはずです。ここもあわせて試しておくと、コードの安全性を自分の目で確かめられます。
マクロのセキュリティの設定について
「すべてのマクロを有効にする」という設定は、おすすめしません。組織が決めた設定を保ってください。警告が出たら、対象のブックのコードを確かめたうえで、社内ルールで認められた範囲で実行します。自分で作ったブックでも、AIから貼り付けたコードの中身は確かめる必要があります。
出典:Microsoft: マクロのセキュリティ設定を変更する
設定を変えられない場合は、管理者に使う目的を相談してください。WindowsとMacでは、設定画面や警告の表記が違います。操作が止まったというだけで、保護をまとめて外さないようにします。
そのままコピーできる依頼のテンプレート
最後に、この記事で使った依頼の型をまとめます。[ ]の中を書き換えるだけで使えます。
関数を頼むとき
Excelの数式を作ってください。
シート名:[シート名]
範囲:[A1:E6](1行目がヘッダー、データは[2]行目から[6]行目)
列構成:A列=[伝票ID]、B列=[商品]、C列=[担当区分]、D列=[売上金額]、E列=[入金状況]
やりたいこと:[C列が「東」かつE列が「入金済」の行のD列を合計したい]
入力するセル:[G2]
期待する答え:[27000]
会社のExcelのバージョン:[Microsoft 365 / 2019 など]
利用環境:[Windows / Mac / Web版]
空欄・該当なし・重複の扱い:[業務のルールを書く]
数式と、各引数の意味を初心者向けに1行ずつ説明してください。
VBAを頼むとき
Excel VBAのコードを作ってください。次の制約を厳密に守ってください。
・ThisWorkbookのシート「[シート名]」だけを対象にする
・[やりたい処理を1つだけ書く]
・セルの値と数式は変更しない
・対象シートがなければメッセージを出して中止する
・外部通信、保存、削除、自動実行はしない
・標準モジュールに貼り付けて手動実行します
コード全体と、実行後に何がどう変わるかを教えてください。
Nutritsでも、決まった形の表を使う自動化の例を作りました。2026年8月、見積依頼のメールから、見積書のテンプレートへ内容を写す流れです。テンプレートの項目は5つで、PDFにするところまでを、自動で実演できる形にしました。
テンプレートは、ExcelとNumbers(Mac向けの表計算ソフト)で用意しました。この流れは、AI講座の題材として使いました。項目の決まった表を先に用意する点は、この記事で列の構成を先に伝えるのと同じ考え方です。
こうした作業の効率化を、「どの業務から手をつけるか」という全体の計画に落とし込みたい場合もあるでしょう。その進め方は、ExcelとAIを軸にした業務改善ロードマップの記事で整理しています。
よくある質問
ChatGPTが出した数式が、Excelに貼ると動きません。
まず、全角スペースが混ざっていないか、先頭の = が抜けていないかを確かめてください。それでも直らないなら、エラー表示(#NAME? #VALUE! など)をそのまま伝えて聞き直します。#NAME? は、関数名が認識されていないサインです。XLOOKUPのように、使っているバージョンにない関数を使ったときによく出ます。その場合は「Excel 2019で使える書き方に直してください」と伝えましょう。VLOOKUPなどの代わりの案が返ってきます。
会社のExcelでXLOOKUPが使えるか、どう調べればいいですか。
まず、使っているExcelの製品名・バージョンを確かめます。この記事の練習データを入力済みなら、空いているH2に =XLOOKUP("R003",A2:A6,D2:D6,"該当なし") と完成した式を入れ、5000が返るか確かめる方法もあります。途中までの式では判定できません。XLOOKUPはMicrosoft 365、Excel 2021/2024、Web版などで使え、Excel 2016/2019では使えません。社内でバージョンが混ざっているなら、誰が開いても動くように、VLOOKUPでそろえておくのが無難です。
実際の売上データを貼らないと、正しい数式を作ってもらえないのでは?
その必要はありません。列の構成・データの型・条件・例外を伝え、実際の表の特徴をまねた架空のデータで頼めます。本番に移すときは、範囲だけでなく、空欄・表記のゆれ・重複・数値が文字列になっていないかも確かめてください。5行で動いただけで、本番の全件が正しいとは判断できません。
まとめ
この記事でお伝えしたことは、次の3点です。
1つ目は、頼み方。列の構成・やりたいこと・期待する値を書けば、ChatGPTが作った式を、自分の目的と照らし合わせやすくなります。これがないと、それらしいけれど自社に合わない式が出てきます。
2つ目は、確かめ方。5行の架空のデータを1つ持っておき、期待する値と突き合わせます。SUMIFSなら27000、XLOOKUPならR003で5000・R005で0・存在しないIDで「該当なし」です。特に「0」と「該当なし」の区別と、「以上」と「より大きい」の境目は、本番で金額の判断を左右します。
3つ目は、VBAの安全な始め方。新しい練習用のブックで、ThisWorkbook とシート名で対象を絞り、値も数式も変えない書式の整形から入ります。外部との通信・保存・削除・自動実行はさせません。頼んだ制約をコードが守っているか確かめ、何が変わるかを理解してから使いましょう。
まずは1つだけ試してみてください。この記事の依頼テンプレートをコピーし、今手作業でやっている集計を1つ選びます。架空の5行のデータで数式を作らせ、期待する値と照らし合わせましょう。期待どおりに動いたら、依頼文と確認の結果も一緒に保存しておくと、次の作業や担当者への引き継ぎに使えます。
FREE DIAGNOSIS
無料Web診断で、サイトの課題と改善の優先順位を整理します。
サイトの課題と改善の優先順位を整理してお届けします。無理な営業は行いません。
- 01現状の課題を可視化
- 02改善の優先順位をご提案
- 03最短3営業日でご報告










リクマ
境界の1件を自分で作って試すのがおすすめです。「10000以上」と「10000より大きい」は別の条件。式を直す前に、どちらが業務のルールなのかを決めておきましょう。