引き継いだ長い関数をAIに読み解かせ、説明の正しさを確かめる方法
AIを使いこなす執筆にClaudeを使用しています。

結論から言うと、長い式は「AIに全体を説明させて信じる」のではなく、①自分で部品に分ける、②AIには部品ごとの説明とテスト案を出させる、③説明が合っているかを手元の計算で確かめる、の順で扱うと安全です。AIの説明は「読み解きの仮説」として扱い、正誤は数式の評価機能と、業務ルールから先に作った期待値で判定します。 この記事では、分解メモの書き方、AIに渡す依頼文、点検用の質問リストを示します。例の式は説明用に作ったもので、表の期待値は式と規則から計算した値です。Excelで実行した結果ではないので、お手元のファイルで確かめてください。手順4はExcelの機能が前提で、お使いの版によって画面の表示が異なる場合があります。
この記事の目次
なぜ入れ子IFは読み違えやすいのか
MicrosoftのIF関数の解説は、IFは最大64個まで入れ子にできるものの、お勧めしないとしています。正しく組むには多くの思考が必要で、他人が作った式の解明はさらに大変だからです。条件を評価する順序を誤ると意図しない結果になる点も、例を挙げて注意されています。
読み違えが起きやすいのは、主に次の3点です。
- 条件を上から順に判定するため、順序そのものが仕様になっている
- 括弧が多く、どの「そうでなければ」がどのIFのものか見失いやすい
- 空白、文字列、境界ちょうどの値で挙動が変わる
AIは式の構造を言葉にできても、職場の規則(例:5万円ちょうどは割引対象か)は知りません。式が動いていることと規則どおりであることは別なので、後者は人が確認します。
手順1:式を部品に分けて「分解メモ」を作る
AIに渡す前に、自分で式を分けます。説明用の例として、次の式を引き継いだとします(A列=取引先コード、B列=金額、C列=区分)。
=IF(A2="","",IF(B2>=100000,IF(C2="会員",B2*0.85,B2*0.9),IF(B2>=50000,IF(C2="会員",B2*0.9,B2*0.95),B2)))コツは、IFごとに改行して「条件/真のとき/偽のとき」を並べることです。括弧の対応は、数式バーで閉じ括弧の先へカーソルを動かすと対応する開き括弧が同じ色になる、とMicrosoftの解説にあるので、確認に使えます。分けた結果を次の表にしたものが分解メモです。
- ①、部品(式の一部):A2=""、役割の仮説:取引先コードが空なら何も出さない、出力:空文字
- ②、部品(式の一部):B2>=100000、役割の仮説:10万円以上の枝に入る、出力:真/偽
- ③、部品(式の一部):C2="会員"(②の中)、役割の仮説:会員か否かで率を変える、出力:B2に0.85または0.9を掛ける
- ④、部品(式の一部):B2>=50000(②が偽のとき)、役割の仮説:5万円以上10万円未満の枝、出力:真/偽
- ⑤、部品(式の一部):C2="会員"(④の中)、役割の仮説:会員か否かで率を変える、出力:B2に0.9または0.95を掛ける
- ⑥、部品(式の一部):末尾の B2、役割の仮説:5万円未満は金額そのまま、出力:B2
「役割の仮説」欄は、この時点では自分の読みです。式を書いた人に聞ける場合は、質問(例:0.85は何の率か)も余白に書いておきます。
手順2:AIに部品ごとの説明とテスト案を出させる
実際の取引先名や金額は貼らず、式と架空の値だけを渡します。式に社名や固有のシート名が入っていれば「Sheet1」などに置き換えてください。社内で外部AIへの入力が制限されている場合は、その取り決めに従います。依頼文は次のとおりです。
以下はExcelの式です(匿名化済み)。
列の意味:A=取引先コード、B=金額、C=区分
[ここに式を貼る]
1. IFごとに「条件/真のとき/偽のとき」を表にしてください。
2. 各部品の役割を1文で説明してください。推測した部分は「推測」と明記してください。
3. 空白、文字列、境界ちょうどの値で意外な結果になる入力を挙げてください。
4. 境界値を含むテスト入力を8件以上、表で出してください。期待値は「式が返す値」ではなく、
あなたが読み取った規則から導いた値にしてください。
5. 意図が読み取れない点は、答えを作らず質問として列挙してください。ポイントは、4で期待値を式ではなく規則から導かせること、5で分からない点を質問にさせることです。AIが埋めた空白は、そのまま誤説明になりやすいためです。
手順3:AIの説明を点検する質問リスト
回答が返ってきたら、次の質問を自分に向け、AIにも追加で投げて確認します。
- 部品の数は分解メモと一致していますか。抜けたIFや増えたIFはありませんか。
- 条件の評価順の説明は、式の並びと同じですか。
- 「以上」と「より大きい」、「以下」と「未満」を取り違えていませんか。
- 括弧の対応は、数式バーで確かめた結果と合っていますか。
- 空白セル、ゼロ、文字列の数字(例:"50000")での挙動は、実際に入力して確かめましたか。
- 「会員」の前後に空白が入った値など、見た目が同じ別の値はどうなると説明していますか。
- 他のセルや別シートへの参照がある場合、参照先の中身も説明の対象に入っていますか。
- 「推測」と書かれた箇所を、規則の資料や前任者への確認で埋めましたか。
- AIの期待値は、式ではなく業務ルールから導かれていますか。
- 言い方を変えて再質問したとき、同じ結論になりますか。食い違う部分が怪しい箇所です。
手順4:実際の計算で確かめる
数式の評価で途中経過を見る
セルを選び、「数式」タブの「ワークシート分析」グループにある「数式の評価」を使うと、入れ子の式を段階的に計算して見られます。Microsoftの手順の解説によると、「検証」を押すと下線部の値が確かめられます。ただし次の制限があります。
- 同じ参照が2回目に出てきたとき、または他のブックを参照しているときは、「ステップイン」が使えません。
- IFやCHOOSEを使う式の一部が評価されず、#N/Aと表示される場合があります。
- RAND、OFFSET、CELLのように再計算のたびに値が変わる関数は、評価結果とセルの表示が異なることがあります。
評価機能は万能ではないので、次の境界値テストと併用します。
F9で式の一部を値にするときはコピーで
数式バーで一部を選んでF9を押すと、その部分を計算値に置き換えられます。ただしMicrosoftの該当ページは、置き換えを確定すると元に戻せないとしています。関数を選ぶ場合は、関数名から閉じ括弧まで丸ごと選ぶ必要もあります。引き継いだ本物のファイルではなく、コピーしたブックで試してください。
境界値テスト表を作る
別シートかコピーしたブックに、次のテストを作ります。期待値は「10万円以上は会員15%引き・非会員10%引き、5万円以上は会員10%引き・非会員5%引き、それ未満は割引なし」という説明用の規則から計算したものです。A列には、最後の行を除いて適当な取引先コードを入れておきます。
- 49,999、C(区分):会員、期待値:49,999、確認する点:5万円未満は割引なし
- 50,000、C(区分):会員、期待値:45,000、確認する点:5万円ちょうどは対象
- 50,000、C(区分):非会員、期待値:47,500、確認する点:非会員の率
- 99,999、C(区分):会員、期待値:89,999.1、確認する点:10万円未満の上端
- 100,000、C(区分):会員、期待値:85,000、確認する点:10万円ちょうどは上の枝
- 100,000、C(区分):非会員、期待値:90,000、確認する点:非会員の率
- 50,000、C(区分):空欄、期待値:47,500、確認する点:空欄を非会員扱いにしてよいか
- 任意、C(区分):任意、期待値:空(A2が空)、確認する点:先頭のガード
結果がずれたときの切り分けは次のとおりです。
- AIの説明と式の結果が違う、考えられる原因:AIの読み違い、次の一手:該当の部品だけ数式の評価で追い、AIに再質問
- 式の結果と規則(期待値)が違う、考えられる原因:式が規則とずれている、次の一手:前任者や規則の資料で確認してから修正を検討
- 期待値自体が決められない、考えられる原因:規則が文書化されていない、次の一手:担当者への質問に回し、式の現状を仕様として記録
最後に、分解メモの「役割の仮説」欄を確認済みの内容に書き換え、テスト表と一緒にファイル内の別シートなどに残しておくと、次の引き継ぎで同じ作業を繰り返さずに済みます。

