ChatGPTやClaudeにExcelの数式を頼むときの型。頼み方、3行の検算、AIが踏む6つの間違い

2026-09-20更新 2026-09-20AIの使い方

「開始と終了の時刻から労働時間を出したい。夜勤は日をまたぐ」。この一文をChatGPTに投げると、10秒で =(D7-C7)*24-E7/60 のような式が返ってくる。C列が開始、D列が終了、E列が休憩の分。貼ると、9:00から18:00の行は8と出て合う。22:00から7:00の行はマイナス16になる。去年の私はここで30分溶かした。式が壊れているのではなく、頼み方が足りていなかった。

この記事に出てくる式と結果は、2026年9月20日にMicrosoft 365のExcel(バージョン16、日本語)で実際に計算して確かめたものだ。AIの間違い方は、思い込みで書くと自分が間違える。実際、書き始めの原稿では「マイナス15になる」と書いていて、確かめたらマイナス16だった。

AIが自分の表に合わない式を返す理由は3つある

AIは表を見ていない。「労働時間を出す式」とだけ頼めば、開始がC列、終了がD列、休憩は分単位、と勝手に決めて書く。自分の表と1列ずれていれば、貼ってもエラーか、もっと悪いことに、それらしい数字が出る。

AIは英語のExcelで学んでいる。曜日を出すTEXT関数の書式で、日本語のExcelなら「月」が返る“aaa”ではなく、“ddd”を使った式を返してくることがある。日本語のExcelで“ddd”は「Mon」になる。手元で確かめた。

境界の例を渡さないと、AIは平均的な式を書く。日をまたぐ、空欄がある、月末、0。こういう行は依頼文に書いてやらないと、式に入らない。冒頭のマイナス16はこれだった。

依頼文の型は、この3つを埋めるために作った。

依頼文には、列の並びと、答えつきの例を入れる

毎回書くのは次の4つ。

  1. 列の並びと、データが始まる行。「A列が氏名、C列が開始時刻、D列が終了時刻、E列が休憩(分)、7行目からデータ」
  2. 入っている値の例を3行。普通の行、境界の行、空欄の行。「9:00と18:00」「22:00と7:00(翌日)」「空欄」
  3. その例に対する答え。「8」「8」「0」
  4. Excelの版と、使わない機能。「Excel 2016。マクロは使わない」

コピーして使っている依頼文はこれだ。

Excelの数式を1つ作ってほしい。
表: A列=氏名、C列=開始時刻、D列=終了時刻、E列=休憩(分)。7行目からデータ。
例: C7=9:00 D7=18:00 E7=60 → 8 / C8=22:00 D8=7:00 E8=60 → 8(日をまたぐ) / C9が空欄 → 0
ほしい式: F7に入れる労働時間(時間単位、小数1桁)。下の行にコピーして使う。
環境: Excel 2016。マクロ、スピル(動的配列)、XLOOKUPは使わない。
式のあとに、部品ごとに何をしているかを1行ずつ説明して。

答えを添えると、AIは返す前に自分で検算するようになる。2行目の「→ 8」があると、(D8-C8)*24 がマイナス15になることに気づいて、IF(D8<C8,D8+1,D8) のように終了時刻に1日を足す式を書いてくる。

最後の「説明して」は飾りではない。説明を読むと、AIがどこを勝手に決めたかが分かる。「休憩は分単位と仮定しました」「空欄は0として扱います」。仮定の一文が、確認すべき場所を教えてくれる。

貼る前に、手で計算した3行と比べる

返ってきた式は、本番の表には貼らない。コピーしたシートか空いた列に入れて、依頼文に書いた3行と比べる。冒頭の式と、直した式でやるとこうなる。

入力 期待 1回目の式 直した式
9:00〜18:00、休憩60 8 8 8
22:00〜7:00、休憩60 8 マイナス16 8
空欄 0 0 0

直した式は =IF(OR(C7="",D7=""),0,ROUND((IF(D7<C7,D7+1,D7)-C7)*24-IF(E7="",0,E7)/60,2))。ROUNDで2桁に丸めているのは、丸めないと2行目が8.000000000000004と出るからだ。時刻は1日を1とする小数で持っているので、24を掛けると端数が出る。表示形式で隠しても、合計や比較でずれる。

合わない行があったら、式を分解する。「数式」タブの「数式の検証」で部品ごとの値を順に見られる。2行目なら、D8の7:00は0.2917、C8の22:00は0.9167、D8はC8より小さいので1を足して1.2917、C8を引いて0.375、24を掛けて9、休憩の1を引いて8。式全体を眺めて考えるより、この順に見たほうが早い。

AIに返すときも、この数字で返す。「2行目だけ合わない。C8が22:00、D8が7:00、E8が60でマイナス16になる」。抽象的に「合わない」と言うより、入力と結果を渡したほうが直る確率が高い。

実際のExcelで確かめた、AIが踏む6つの間違い

自分が何度も踏んだものを、手元で再現して挙げる。

文字列で入った時刻は、足し算は通るのに比較で壊れる

Webの勤怠システムからコピーした時刻は、見た目は9:00でも文字列として入っていることがある。ISTEXTで調べるとTRUEが返る。Excelは文字列の「9:00」を引き算では数字に読み替えるので、1回目の式は動く。ところが直した式の D7<C7 は文字列同士の比較になり、「18:00」が「9:00」より小さいと判定される。1文字目の「1」と「9」を比べているからだ。結果、9:00から18:00の行が32時間になる。エラーは出ない。

見つけ方は、疑わしい列の横に =ISTEXT(C7) を入れて下までコピーすること。直し方は、時刻を数値に読み替えてから比べる。=IF(--D7<--C7,--D7+1,--D7) のように「–」を付けると、文字列でも数値でも同じ結果になる。手元で確かめると、文字列の行で8、数値の行でも8だった。

SUMPRODUCTは、書き方で空文字の扱いが変わる

人件費の合計で、労働時間の列と時給の列を掛ける。AIは =SUMPRODUCT(J7:J9*K7:K9)=SUMPRODUCT(J7:J9,K7:K9) のどちらかを返す。時給の列に、氏名が空欄なら空文字を返す式が入っていると、前者は値のエラー(#VALUE)、後者は空文字を0として18,400と返す。SUMで配列を掛ける =SUM(J7:J9*K7:K9) も前者と同じでエラーになる。空白セルなら、どの書き方でも0として扱う。

私はシフト表のテンプレートで、時給の列を別シートから参照する式に変えたとき、これを踏んだ。集計行が一斉にエラーになり、原因は参照式が返す空文字だった。掛け算の形で書かれていたら、カンマの形に直すか、空文字を返す側を0に変えて表示形式で0を消す。

自分の版にない関数を使ってくる

XLOOKUPは、Microsoftの関数ページの「適用対象」にExcel 2016と2019がなく、本文にも「Excel 2016およびExcel 2019では使用できません」と書いてある。LETも適用対象はMicrosoft 365と2021以降だけ。2026年9月20日に確認した。AIは新しい関数を好んで使うので、版を書かないと名前のエラー(#NAME?)が返る。

XLOOKUPを使えない版なら、INDEXとMATCHの組み合わせで同じことができる。依頼文に「XLOOKUPは使わない」と書けば、AIはそちらで書いてくる。

曜日の書式は、日本語と英語で返る文字が違う

同じ日付に対して、TEXT関数の“aaa”は「月」、“aaaa”は「月曜日」、“ddd”は「Mon」、“dddd”は「Monday」を返す。日本語のExcelで確かめた結果だ。AIが“ddd”で書いた式を、土日を判定する条件付き書式に貼ると、「土」や「日」と比較している部分が一致しなくなり、色が付かない。

丸める位置で、合計が数円ずれる

時給1,050円で7.25時間の行が3行、6.75時間の行が2行あるとする。行ごとにROUNDしてから足すと37,015円、足してからROUNDすると37,013円。2円の差だが、給与明細と合わないと問い合わせが来る。AIはどちらかを勝手に選ぶ。こちらが決めていないことは、AIも決めていない。給与規程に丸めの単位が書いてあるなら、それを依頼文に入れる。

IFERRORで包んだ式は、間違いも隠す

文字列の「abc」に2を掛けると値のエラーになる。=IFERROR(C7*2,0) にすると0が返る。見た目はきれいで、エラーの原因は残ったままだ。AIはエラーを消すためにIFERRORで全体を包みたがる。私は検証中はIFERRORを外し、3行の検算が通ってから戻す。

往復2回で使える式になる。それでも手で書いたほうが速い式はある

1回目の式は下書きとして受け取る。依頼文に例を入れ、3行で検算し、合わない行の入力と結果を返す。この往復を2回やれば、大抵の式は使える形になる。

手で書くより速いかと言われると、単純な式なら手で書いたほうが速い。AIに頼んで得をするのは、SUMPRODUCTやINDEX、条件付き書式のように、組み方を思い出すのに時間がかかる式だ。逆に、丸めの単位や空欄の扱いのように、業務のルールが絡む部分はAIに任せられない。決めるのはこちらで、書くのがAI。

このやり方で組んだ式は、配布しているシフト表と勤怠管理のテンプレートに入っている。式の中身を追いたければ、ファイルを開いて「数式の検証」で見るのが早い。

AIExcel数式ChatGPTClaudeSUMPRODUCT