マガジン

引き継いだ長い関数をAIに読み解かせ、説明の正しさを確かめる方法

AIを使いこなす

執筆にClaudeを使用しています。

机の上で、長い式を切り分けた付箋の列に、ペンを持つ手がチェックを付けている場面。
記事の内容をもとに制作したAI生成イメージです。実際の製品画面や検証結果の写真ではありません。

結論から言うと、長い式は「AIに全体を説明させて信じる」のではなく、①自分で部品に分ける、②AIには部品ごとの説明とテスト案を出させる、③説明が合っているかを手元の計算で確かめる、の順で扱うと安全です。AIの説明は「読み解きの仮説」として扱い、正誤は数式の評価機能と、業務ルールから先に作った期待値で判定します。 この記事では、分解メモの書き方、AIに渡す依頼文、点検用の質問リストを示します。例の式は説明用に作ったもので、表の期待値は式と規則から計算した値です。Excelで実行した結果ではないので、お手元のファイルで確かめてください。手順4はExcelの機能が前提で、お使いの版によって画面の表示が異なる場合があります。

この記事の目次
  1. なぜ入れ子IFは読み違えやすいのか
  2. 手順1:式を部品に分けて「分解メモ」を作る
  3. 手順2:AIに部品ごとの説明とテスト案を出させる
  4. 手順3:AIの説明を点検する質問リスト
  5. 手順4:実際の計算で確かめる

なぜ入れ子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にも追加で投げて確認します。

  1. 部品の数は分解メモと一致していますか。抜けたIFや増えたIFはありませんか。
  2. 条件の評価順の説明は、式の並びと同じですか。
  3. 「以上」と「より大きい」、「以下」と「未満」を取り違えていませんか。
  4. 括弧の対応は、数式バーで確かめた結果と合っていますか。
  5. 空白セル、ゼロ、文字列の数字(例:"50000")での挙動は、実際に入力して確かめましたか。
  6. 「会員」の前後に空白が入った値など、見た目が同じ別の値はどうなると説明していますか。
  7. 他のセルや別シートへの参照がある場合、参照先の中身も説明の対象に入っていますか。
  8. 「推測」と書かれた箇所を、規則の資料や前任者への確認で埋めましたか。
  9. AIの期待値は、式ではなく業務ルールから導かれていますか。
  10. 言い方を変えて再質問したとき、同じ結論になりますか。食い違う部分が怪しい箇所です。

手順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に再質問
  • 式の結果と規則(期待値)が違う、考えられる原因:式が規則とずれている、次の一手:前任者や規則の資料で確認してから修正を検討
  • 期待値自体が決められない、考えられる原因:規則が文書化されていない、次の一手:担当者への質問に回し、式の現状を仕様として記録

最後に、分解メモの「役割の仮説」欄を確認済みの内容に書き換え、テスト表と一緒にファイル内の別シートなどに残しておくと、次の引き継ぎで同じ作業を繰り返さずに済みます。

出典・参考資料