AIが書いたExcel数式が動かない時のチェック3つ|非エンジニアが“それっぽいけど違う”を確定前に止めた記録

AIが書いた数式を人が確認しているイラスト Claude Code入門

「AIに聞いたとおりの数式をExcelに貼ったのに、エラーになる」「関数名は合っていそうなのに、返ってくる値がおかしい」——AIに作業を任せはじめると、必ず一度は通る道です。

大丈夫です。これはAIが嘘つきだからではなく、AIが「たぶんこう書くはず」で埋めてしまう場所が決まっているから起きます。この記事では、AIコーディングツール(私はClaude Codeを使っています)に書いてもらった数式が2か所まちがっていた実例と、それを確定前に止めるためのチェック3つを紹介します。

なお、ここで扱うのは外部のデータサービスとExcelをつなぐ種類の関数です。SUMやVLOOKUPのような一般的なExcel関数より、AIが外しやすい領域だと感じています。

⚠️ この記事の情報は2026年8月時点のものです。ツールの仕様は変わることがあるので、最新の情報は各公式ドキュメントでご確認ください。
また、記事に出てくる私のシステムは観測・研究用で、実際の売買注文は出しません(read-only)。株の判断はすべて仮想発注のみで、実際のお金での発注はしていません。特定の銘柄の売買を勧めるものではありません。

この記事で分かること(先に結論)

  • 私がまちがえた2件は、どちらも「関数名」ではなく「引数(かっこの中身)」が原因だった
  • 確定前に効くチェックは①実在するか ②引数の形 ③置き場所の3つ
  • いちばん強いのは「すでに動いている実物」と見比べること。公式ドキュメントより手っ取り早いこともある

結論を先に言うと、失敗の中身は「AIが仕様書を見ずにそれっぽく書いた数式を、私がそのまま受け取った」ことでした。ただし、この記事のいちばん役に立つ部分はそこではありません。あらかじめ入れてあった確認の仕掛けが、確定の直前でこれを止めてくれた——そこが本題です。

起きたこと:2つの数式が、両方まちがっていた

私は株価を観測するExcelに、「口座の状態を参照だけする」シートを足そうとしていました。売買はしません。見るだけです。そのための数式をAIに書いてもらったところ、2つとも動きませんでした。

まちがい① 「それっぽい引数」を渡していた

AIが書いたのは、関数のかっこの中に日本語の項目名をそのまま文字で入れる形の数式でした。人間が読むと、いかにも正しそうに見えます。「この項目がほしい」と書いてあるのですから。

ところが実際のその関数は、銘柄コードを1つ受け取って、その銘柄についての値を返す関数でした。口座全体の状態を返す関数ではなかったのです。名前の雰囲気は合っているのに、役割がまるで違いました。口座全体を見たいなら、別の「一覧系」の関数を使い、返ってきた表の先頭の列を見る必要がありました。

まちがい② 引数なしで呼んでいた

もう1つは、一覧を取ってくる関数をかっこの中を空っぽで呼んでいました。「一覧が返ってくる関数なんだから、引数はいらないだろう」という、いかにもありそうな発想です。

しかしこの手の一覧系の関数は「見出し行を先に渡す」タイプでした。つまり、「私はこの列とこの列がほしい」という見出しをシートに並べておき、その見出しのセル範囲を引数として渡すと、その並びどおりにデータが返ってくる仕組みです。何も渡さないと、そもそも何を返せばいいのか決まらないので動きません。

この「ヘッダー(見出し)で駆動する」という考え方は、一般的なExcel関数にはあまり無い形なので、AIが一般論から推測すると外しやすいところだと感じました。

おまけの落とし穴:置き場所でも壊れる

1シートに2つ並べた場合と1関数1シートの比較図
図:置き場所だけで壊れることがある

数式を直したあと、もう一段はまりました。私は「シートが増えるのは面倒だから」と、1枚のシートに2つの一覧関数を並べて置いたのです。

ところが前述のとおり、これらの数式は「見出し行のセル範囲」を指しています。同じシートに並べると、2つ目の数式が1つ目の見出しを参照してしまう。見出しが違えば、返ってくる中身もずれます。数式そのものは1文字も間違っていないのに、置き場所のせいで壊れるわけです。

解決は単純で、1つの関数につき1枚のシートにしました。A1に数式、A2に見出し、A3から下にデータ、という形をシートごとに揃えます。すでに動いている自分の別ツールがまさにこの形だったので、それに合わせただけです。

確定前に効くチェック3つ

チェック見るところどうやって確かめるか
① 実在するかその関数は本当にあるか。役割は思っているとおりか公式の関数仕様書で名前を検索する
② 引数の形かっこの中に「何を」渡す決まりか(文字か、セル範囲か、省略か)仕様書の記載例をそのまま写す
③ 置き場所同じシートに並べて干渉しないかすでに動いている実物のレイアウトに合わせる
AIが書いた数式を確定する前に通す3つのチェック

とくに効いたのが③の「すでに動いている実物と見比べる」でした。私の場合、同じ関数を以前から使っている別のツールが手元にありました。そこで使われている数式を、1文字も変えずにコピーするという方針にしたことで、少なくとも「引数の書き方を自分で考える」余地は無くなりました。

公式ドキュメントは正しいけれど、読み解くのに時間がかかります。「自分の環境で現に動いているもの」は、その環境ごと正解なので、非エンジニアにとってはこちらのほうが速くて確実だと感じました。

仕組みで止める:「根拠を書かないと通れない道」を1本作る

数式の変更を検知して保留し、根拠のメモを求める流れ
図:根拠を書かないと通れない道

ここが、この記事でいちばん伝えたいところです。私はこの2つのまちがいを、自分の目で見つけたわけではありません。

以前から、この種の数式に手を入れたときだけ、確定を自動で止める仕掛けを入れてありました。今回まさにそれが働いて、まちがった数式のまま先へ進むのを食い止めてくれたのです。

  • 該当する数式が変更されたことを検知したら、いったん保留(HOLD)にする
  • 先に進むには「どの仕様書のどこを見て確認したか」のメモを添えることを必須にする

この2つ目に引っかかったので、私は仕様書を開くことになりました。(AIに任せて実際に起きた失敗はこちらの記事にもまとめています。)そこで初めて「あ、この関数はそういう意味じゃない」と気づいたわけです。人間が毎回気をつけるのは続きませんが、根拠を書かないと通れない道なら続きます。AIを賢くしようとするより、こちらのほうが効きました。

もう1つ、自分のメモの書き方として決めているのが、確認できていないことは「未検証」とそのまま書き残すことです。今回も「実際に接続しての動作は未確認」と残しました。できたことにしないほうが、あとで自分が助かります。

ちなみに、この口座シートには注文に関する関数を1つも書かないという決まりも以前から入れてあり、それをテストで固定しています。参照専用のつもりが、いつのまにか発注できる状態になっていた、という事故を仕組みで防ぐためです。読み取りだけと決めたなら、その境界も機械に見張らせるのが安全でした。

非エンジニアが得た教訓

  • 疑うのは「関数名」より「かっこの中身」。 名前は世の中にある情報から拾えますが、引数の細かい決まりは推測になりがちです。私の2件はどちらも引数側でした。
  • 「動いている実物」を写す。 手元で現に動いているファイルがあるなら、それをそのまま写すのがいちばん確実でした。
  • 未検証は未検証と書く。 できたことにしないほうが、あとで自分が助かります。
  • チェックは人の意志ではなく手順に埋める。 今回まちがいを見つけたのは私ではなく、先に入れておいた仕掛けのほうでした。

まとめ:AIは下書き、確定は自分

AIに数式を書いてもらうのは、とても効率が良い方法です。ゼロから調べるより何倍も速い。ただし、AIが出したものは「下書き」であって、確定ではありません。

①実在するか、②引数の形は合っているか、③置き場所で干渉しないか。この3つを通してから確定する。私の場合、この確認を先に済ませていれば、直しにかかった手間はもっと小さかったはずです。コードが書けなくても、この3つのチェックはできます。


関連記事

無料テンプレート配布のお知らせ

非エンジニアの自動化ラボ メルマガ 読者登録フォーム

Claude Codeを安全・便利に使うための設定テンプレート(CLAUDE.md)を無料配布しています。メールアドレスをご登録いただくと、すぐにダウンロードリンクをお送りします。


免責事項

本記事は執筆時点(2026年8月)の情報に基づく、筆者個人の体験の記録です。記事中の自動売買システムに関する記述は、特定の投資手法や自動売買の利用を推奨するものではありません。投資には元本割れのリスクがあり、最終的な判断はご自身の責任で行ってください。また、本記事ではセキュリティに関わる話題に触れていますが、悪用防止の観点から、具体的な脆弱性や攻撃手法の詳細は記載していません。AIツールの仕様は予告なく変更される場合があります。最新情報は各公式ドキュメントをご確認ください。本記事の内容を用いて生じたいかなる損害についても、筆者は責任を負いかねます。

コメント

タイトルとURLをコピーしました