ChatGPTにExcelファイルを読み込ませると、「月別の売上を出して」「傾向を教えて」と頼むだけで、表や文章で答えが返ってきます。ただし、その数字がどの行を対象に、どんな条件で計算されたかを確かめないまま資料に使うのは危険です。期間の区切り方がずれていたり、返品の行が混ざっていたり、同じ取引先が別の名前で数えられていたりしても、答えはもっともらしい形で返ってくるからです。
この記事は、ファイルを読み込ませて行数を確認するところまでは済んでいる前提です。そこから先を、次の3段階で進めます。
- 質問を具体的に決める
- 計算方法を説明してもらう
- Excelのピボットテーブルや関数で検算する
手順1:質問を「単位・期間・条件・指標」で決める
「売上の傾向を分析して」のような頼み方では、何をどう数えるかをChatGPTに任せることになります。結果を検算できるように、次の4点を先に決めておきます。
| 決めること | 例 | 決めないと起きること |
|---|---|---|
| 集計の単位(何ごとに数えるか) | 月別・取引先別・商品カテゴリ別 | 日別や週別など、思っていたのと違う細かさで返ってくる |
| 期間 | 2026年4月1日〜9月30日、「受注日」基準 | 受注日と納品日のどちらで区切るかがぶれる |
| 条件(含める行・除く行) | キャンセル行を除く、返品はマイナスのまま含める | 除くべき行が合計に入る |
| 指標(何を数えるか) | 税抜金額の合計、行数、取引先の重複なし件数 | 「件数」が行数なのか取引先の数なのか、はっきりしない |
列名は、ファイルの見出しと同じ表記で書きます。たとえば「税込金額」と「税抜金額」の2列があるなら、どちらを使うかを書いておきます。
手順2:計算方法と途中の数字も出してもらう
依頼文には、答えだけでなく、どう計算したかと検算に使える途中の数字も返すように書きます。
添付の「受注一覧」シートを使って、次の集計をしてください。
- 単位:月別(受注日 列の年月)
- 期間:2026/4/1〜2026/9/30(受注日基準)
- 条件:状態 列が「キャンセル」の行は除く。返品(金額がマイナス)の行は含める
- 指標:税抜金額 列の合計、行数、取引先名 列の重複なし件数
出力してほしいもの:
1. 月別の集計表(年月、税抜金額合計、行数、取引先数)
2. 集計に使った行の総数と、条件で除外した行の数
3. 全期間の税抜金額の総合計
4. 使った列名と条件の解釈(日付の読み方、空欄の扱いなど)
列名や値の意味が分からない場合は、推測で進めず質問してください。
大事なのは2〜4です。「対象にした行数」「除外した行数」「総合計」があれば、Excelでも同じ数字を出して比べられます。条件をどう解釈したかも書いてもらうと、前提のずれに気づけます。たとえば、日付が文字列として読まれていた、空欄が0として扱われていた、といったずれです。
使っている環境によっては、ChatGPTが集計のためにコードを実行し、そのコードを表示することがあります。表示された場合は、フィルターの条件や使われた列名がコードに書かれているので、依頼どおりかを読んでおくと確認が早く済みます。
手順3:ピボットテーブルで同じ集計を作る
ChatGPTの結果と比べるために、Excelで同じ集計を作ります。元データには、ChatGPTに渡したのと同じファイル・同じシートを使います。
- 元データの表の中のセルを選び、[挿入]→[ピボットテーブル]で新しいシートに作る
- 「行」に日付の列を入れる。Excelのバージョンによっては、自動で年・月などにまとまります。まとまらない場合は、日付のセルを右クリックして[グループ化]を選び、「月」と「年」を指定する
- 「値」に税抜金額の列を入れ、集計方法が「合計」になっているか確かめる。「個数」になっていたら、値フィールドの設定で「合計」に変える
- 「値」に別の列をもう1つ入れて集計方法を「個数」にし、行数を出す
- 「フィルター」に状態の列を入れ、「キャンセル」のチェックを外す
- 期間は、日付のフィルターか、グループ化した年・月のチェックで絞る
取引先の重複なし件数は、ふつうのピボットテーブルの「個数」では出せません。ピボットテーブルを作るときに[このデータをデータモデルに追加する]をオンにすると、集計方法で重複しない値の数を選べるようになります。メニューの名前はExcelのバージョンによって違うことがあります。
手順4:関数でも1〜2か所を確かめる
ピボットテーブルの設定を間違えることもあるので、特定の月だけでも関数で計算しておくと安心です。
例として、A列が受注日、C列が取引先名、D列が状態、F列が税抜金額の表で、2026年5月の数字を出します。セルH1に 2026/5/1、H2に 2026/5/31 を入れておきます。
税抜金額の合計:
=SUMIFS(F:F, A:A, ">="&H1, A:A, "<="&H2, D:D, "<>キャンセル")
行数:
=COUNTIFS(A:A, ">="&H1, A:A, "<="&H2, D:D, "<>キャンセル")
取引先の重複なし件数(UNIQUE・FILTERが使えるExcelの場合):
=COUNTA(UNIQUE(FILTER(C2:C5000, (A2:A5000>=H1)*(A2:A5000<=H2)*(D2:D5000<>"キャンセル"))))
受注日に時刻まで入っている場合、"<="&H2 の条件では、5月31日の0時より後の行が漏れます。その場合は、上限を「翌月1日より前」("<"& 翌月1日のセル)にします。重複なし件数の式は、取引先名が空欄の行も1件として数えるので、空欄の行がないかも確かめてください。
手順5:照合表を作って差を確認する
ChatGPTの結果とExcelの結果を並べ、差がある項目だけを調べます。
| 項目 | ChatGPT | ピボット/関数 | 差 |
|---|---|---|---|
| 対象行数 | |||
| 除外した行数 | |||
| 税抜金額の総合計 | |||
| 5月の合計 | |||
| 5月の取引先数 |
ChatGPTに月別の表をCSV形式などコピーしやすい形で出してもらい、Excelに貼り付けて引き算すると、全部の月をまとめて比べられます。貼り付けたあとは、数値が文字列になっていないか(左寄せになっていないか)も確かめてください。
差が出たときは、次の順で原因を探します。
- 対象行数が違う:期間の基準日、除外の条件、見出し行や合計行まで数えていないかを確認する
- 行数は同じなのに合計が違う:税込と税抜のどちらの列を使ったか、マイナスの値をどう扱ったか、文字列になっている数値がないかを確認する
- 月の振り分けが違う:日付の読み方を確認する(月と日の取り違え、文字列の日付など)
- 重複なし件数が違う:表記ゆれ(「株式会社」の有無、全角と半角、前後の空白)と、空欄の扱いを確認する
原因が分かったら、「◯◯列が空欄の行は除外して再集計してください」のように条件を足して出し直してもらい、もう一度照合します。
手順6:「傾向」や「原因」の説明は数字と分けて扱う
「7月に売上が落ちたのは季節要因と考えられます」といった説明は、データから計算した事実ではなく、ChatGPTの解釈です。資料に使う前に、次の3つに分けて扱います。
- 数字で確かめられること:「7月の合計は6月より◯%少ない」のような説明。検算済みの数字を使って、自分で計算し直す
- データで裏付けを探せること:「特定の取引先の減少が大きい」のような説明。ピボットテーブルで取引先別・月別に並べて確かめる
- データだけでは判断できないこと:「季節要因」「値上げの影響」のような説明。仮説として扱い、社内の事情を知っている人に確かめる
「この結論の根拠になった数字を表で示してください」と頼むと、説明とその裏付けの数字の対応が見やすくなります。根拠の数字を示せない説明は資料に載せないか、仮説だとはっきり書きます。
使う前の最終確認
- 依頼した単位・期間・条件・指標と、ChatGPTが説明した解釈が一致している
- 対象行数と総合計が、Excelでの検算と一致している
- 少なくとも1つの月(または取引先)を、関数で個別に確かめた
- 差が出た項目は原因が分かり、出し直した結果で一致した
- 傾向や原因の説明は、数字で確かめたものと仮説とを分けて書いた
- 社外秘や個人情報を含むデータは、社内ルールで入力が認められた範囲で扱っている
ChatGPTは集計の下書きを素早く作るために使い、資料に載せる数字はExcelで同じ値を出せたものだけにする、と決めておきましょう。そうすれば、分析結果を安心して共有できます。
