ChatGPTに「売上を集計する数式を作って」とだけ頼んでも、それらしい数式は返ってきます。ただ、そのまま使うと次のようなずれが起きがちです。
- 参照している列の位置が違う
- 使っているExcelにない関数が入っている
- 空白のセルでエラーになる
原因の多くは、ChatGPTがあなたのシートを見ていないことです。
この記事では、数式を頼むときに渡す情報と依頼文の型を紹介します。そのうえで、返ってきた数式を少ない件数のテストデータで検算し、本番のシートに入れるまでの手順をまとめます。
数式を頼む前にそろえる5つの情報
| 渡す情報 | 書く内容の例 | 抜けると起きやすいこと |
|---|---|---|
| シート構成 | 「明細」シートは1行目が見出しで、データは2行目から。結果は「集計」シートに出す | 参照するシート名やセル範囲が違う |
| 列名と列の位置 | A:日付、B:取引先コード、C:品名、D:数量、E:単価 | 別の列を参照する数式が返る |
| データ例 | 3〜5行分。空白や例外の行も1つ入れる | 文字列の数字や日付の形式を想定外に扱う |
| 期待する結果 | 「この入力ならこの値になる」という具体的な答え | 「合計」の意味(全件か、条件付きか)がずれる |
| Excelのバージョン | Microsoft 365、Excel 2019、Web版など | そのバージョンで使えない関数が入る |
Excelのバージョンは、デスクトップ版なら「ファイル」→「アカウント」に出る製品情報で確認できます。分からないときは「XLOOKUPなどの新しい関数が使えるか分からないので、使えない場合の書き方も示してください」と書き添えておくと安全です。
5つのうち、いちばん効くのは期待する結果です。「取引先ごとの合計」と書くよりも、「B列がK001の行について、D×Eを合計する。例のデータなら3,000になる」と書くほうが、意図の取り違えがずっと減ります。
依頼文の型
Excelの数式を作ってください。
【環境】
Microsoft 365のExcel(デスクトップ版、Windows)
【シート構成】
・「明細」シート:1行目が見出し、2行目からデータ。行は毎月増える(現在およそ500行)
・「集計」シート:A列に取引先コード、B列に合計金額を出したい
【明細シートの列】
A:日付(日付型) B:取引先コード(文字列。例 K001) C:品名 D:数量(数値) E:単価(数値)
【データ例】
2026/09/01, K001, ペン, 10, 100
2026/09/03, K002, ノート, 5, 300
2026/09/10, K001, 封筒, 20, 100
2026/09/15, (空白), 付箋, 3, 200
【やりたいこと】
「集計」シートのB2に、A2の取引先コードと一致する行の「数量×単価」の合計を出す。
【期待する結果】
A2がK001なら 10×100 + 20×100 = 3,000
A2がK999(明細にない)なら 0
取引先コードが空白の行は集計に含めない
【条件】
・下の行へコピーして使う
・作業列は使わず、1つの数式で
・数式の各部分が何をしているか、短く説明してください
この型で押さえているポイントは次の4つです。
- コピーする方向を書く:「下へコピーする」と書くと、$による固定(絶対参照)が適切に付きやすくなる
- 行が増えるかどうかを書く:範囲を固定の500行にするか、列全体やテーブルにするかの判断材料になる
- 該当なし・空白のときの期待値を書く:エラーへの対処が最初から入る
- 説明を求める:返ってきた数式を自分で読めるようになり、検算の当たりを付けやすい
実データをそのまま貼る必要はありません。顧客名や金額は、構造が同じダミーに置き換えて渡せば十分です。
返ってきた数式をまず読む
セルに貼り付ける前に、次の点だけは目で確かめます。
- シート名と列が依頼どおりか:たとえば取引先コードの条件が、明細シートのB列を見ているか
- 範囲の大きさがそろっているか:SUMIFSやSUMPRODUCTで、条件の範囲と合計の範囲の行数が違うと、エラーや誤った集計になる
- $の付き方:下へコピーする数式なら、明細側の範囲は固定され、集計側のA2は行に合わせて動く形になっているか
- 自分のExcelにある関数か:知らない関数は、セルに「=関数名(」まで入力して候補に出るかを見る
- 引数の区切り文字:日本語環境のExcelでは通常カンマで区切る。セミコロンで返ってきたら、別の地域設定が前提になっていないか聞き直す
説明と数式の中身が食い違っていることもあります。説明はあくまで「こう動くはず」という主張なので、実際の動きは次の検算で確かめます。
検算用のテストデータを作る
本番の明細にいきなり入れるのは避けます。新しいシートに5〜10行ほどの小さな表を作り、正解を手計算で出しておきます。行数が少なければ、電卓や暗算で正解を確かめられます。
表には、次のような行を入れておきます。
| 種類 | 例 | 確かめること |
|---|---|---|
| ふつうの行 | K001、10個、100円 | 基本の計算が合うか |
| 同じキーが複数 | K001が2行 | すべて合算されるか、1件目しか拾わないか |
| 該当なし | 集計側にK999 | 0になるか、#N/Aになるか(どちらを期待したか) |
| 空白 | 取引先コードが空白の行 | 除外されるか、誤って一致しないか |
| 0 | 数量0 | 0として計算されるか |
| 文字列の数字 | 数量が文字列として入った「10」 | 関数によって計算に含まれたり無視されたりする。どちらになるか |
| 境界値 | 「1万円以上」が条件なら、ちょうど10,000と9,999 | 以上・超・以下・未満を取り違えていないか |
| 日付の境界 | 月末・月初、時刻付きの日付 | 期間の条件から漏れないか |
| 表記の違い | 「K001」と末尾に空白の付いた「K001 」、全角と半角 | 一致してほしいものが一致しないケースを知っておく |
すべての行が期待どおりになる必要はありません。たとえば末尾に空白がある行を拾わないのは、数式としては正しい動きです。大事なのは、どの入力でどう動くかを本番の前に知っておくことです。そうした行も拾ってほしいなら、その行と期待値を添えて、ChatGPTに直してもらいます。
直してもらうときの伝え方
検算で合わなかったときは「動きません」とだけ書かず、入力と結果をセットで伝えます。
次の入力で、期待と違う結果になりました。
・入力:A2=K001、明細にK001の行が2行(10×100、20×100)
・期待:3,000
・実際:1,000
・入れた数式:(実際にセルに入れた数式を貼る)
1件目しか拾っていないように見えます。全件を合計する形に直してください。
エラー値(#N/A、#VALUE!、#NAME?、#SPILL!など)が出た場合は、その表示もそのまま書きます。#NAME?は、関数名の綴りの誤りや、そのバージョンにない関数が原因のことが多いエラーです。Excelのバージョンを改めて伝えると、話が早く進みます。
本番のシートに入れる手順
- 本番ファイルのコピーを作るか、作業の前に保存しておく
- 1つのセルに数式を入れ、答えが分かっている1件と比べる
- 下(または右)へコピーし、別の数件も抜き出して照合する
- 全体の合計や件数を、ピボットテーブルやフィルターなど別の方法で出した値と比べる
- エラー値が残っていないか、フィルターや検索で確かめる
- 数式の前提を、セルのメモや別のシートに1〜2行で残す(作った日、前提にしたシート構成、該当なしのときの動き)
手順4は省かれがちですが、数式が全体として合っているかを確かめる最後の手段です。たとえば「明細の金額の総額」と「集計シートの合計列の総額」が一致するかを見るだけでも、多くの誤りが見つかります。
使い続けるときの注意
- 明細に列を挿入・削除したり、シート名を変えたりすると、数式の前提が変わります。構成を変えたら、手元のテストデータでもう一度確かめる
- 行が増えていく表は、範囲が足りているかを定期的に確かめる。表をテーブルにしておくと、範囲の広げ忘れを気にする場面が減る
- 中身が分からない数式を使い続けない。説明を読んでも分からない箇所は、その部分だけを取り出して「この部分は何をしているか」と聞き直す
ChatGPTは、数式の下書きを速く作るのに向いています。ただ、そのシートで正しく動くかまでは保証しません。渡す情報を具体的にし、正解が分かっている少ない件数のデータで確かめてから使えば、手戻りは大きく減ります。
