いまさら聞けないExcelの使い方講座

【Excel】引き継いだ表の複雑な数式の仕組みを検証したい! 効率的な調べ方

[数式の検証]で数式の動作を確認してみよう

複雑な数式、どうやって計算結果を確認する?

 引き継いだExcelファイルに含まれる数式の結果に疑問を持ったことはありませんか? 特に、複数の条件を組み合わせた数式では、結果が想定通りなのか判断しにくいことがあります。

 以下の出荷管理表では、現在庫や出荷予定日、承認状況などから、出荷できるかどうかを判定しています。

現在庫や出荷予定日、承認状況などから、出荷可否を判定できる出荷管理表。注釈には「出荷可」にする条件が記載されている

 すべての条件を満たした場合に「出荷可」とする条件が注釈に記載されています。

  • 1.出荷可能数(現在庫-引当済み)が出荷予定数以上
  • 2.出荷予定日が出荷期限以前(期限当日も可)
  • 3.承認状況が「承認済」

 データを絞り込んでみると、「承認済」なのに「出荷不可」となっているデータが4件あります。3つの条件をすべて満たす必要があるため、承認済みでも出荷できるとは限りません。どの条件を満たしていないのか、数式を確認してみましょう。

「承認済」で絞り込んだ状態。「出荷不可」のデータの原因は、数式を詳しく確認する必要がある

 このような時は、Copilotに数式の意味を解説してもらうと理解が進みます。ただし、説明を読んで仕組みを理解することと、実際のデータで計算結果を確かめることは別です。

 そこで利用したいのが、数式の計算過程を順番に確認できる[数式の検証]機能です。今回は、Copilotの解説と組み合わせて、判定結果の理由を調べてみます。

Copilotに数式の意味を聞いてみる

 まずは、「出荷不可」と表示されているセルの数式を確認します。IF関数とAND関数が組み合わされていますが、どのような条件で判定しているのでしょうか。

=IF(AND(C2-D2>=E2,F2<=G2,H2="承認済"),"出荷可","出荷不可")

 Copilotに「セルI2に入力されている数式の処理を、1ステップずつ解説してください」と質問しました。

Copilotに「セルI2に入力されている数式の処理を、1ステップずつ解説してください。」と質問した結果。処理の内容が詳しく解説されている

 以下は、Copilotの回答の一部です。この数式では、AND関数で3つの条件を判定し、すべて満たした場合にIF関数で「出荷可」と表示していることがわかります。

 具体的には「現在庫から引当済み数量を引いた数が出荷予定数以上」「出荷予定日が出荷期限以前」「承認状況が承認済み」という3条件です。1つでも満たしていなければ「出荷不可」となります。

5.ANDで3つの判定をまとめる

・出荷可能数が出荷予定数以上→ FALSE
・出荷予定日が期限以内→ TRUE
・承認状況が「承認済」→ TRUE

つまり、AND(FALSE,TRUE,TRUE)の結果はFALSEです。
結論:日付と承認の条件は満たしていますが、出荷可能数が5個不足しているため「出荷不可」です。

[数式の検証]で途中の計算結果を確認する

 Copilotの説明によると、在庫不足が原因のようです。では、実際の数式でも同じ結果になるのでしょうか。Excelの[数式の検証]を使って、計算の途中結果を1つずつ確かめてみます。

 [数式の検証]ダイアログボックスでは、数式の計算過程を確認できます。数式の下線部分は、次に計算される部分を示しており、[検証]をクリックすると、計算結果に置き換わり、計算が進んでいきます。

数式を検証したいセルを選択し(①)、[数式]タブ(②)の[数式の検証](③)をクリックします
数式中の「C2」に下線が付いています(④)。[検証](⑤)をクリックします
セルC2の値である「120」に置き換わりました(⑥)。[検証](⑦)を繰り返しクリックすると、具体的な値に置き換わります
AND関数の引数として指定されていた「C2-D2>=E2」が計算され、「25>=30」と表示された状態です(⑧)。[検証](⑨)をクリックします
「25>=30」は成り立たないため、「FALSE」と表示されています(⑩)。この要領で[検証]をクリックしていくと、数式内のセル番地を具体的な値に置き換えることができます
セルI2の数式では、AND関数の条件の結果は「FALSE」「TRUE」「TRUE」となりました(⑪)。AND関数はすべての条件が「TRUE」でないと「FALSE」を返します
AND関数の結果として「FALSE」が返されています(⑫)。IF関数は「FALSE」の場合の「出荷不可」を返します
セルI2の数式の最終的な結果として「出荷不可」(⑬)が返されます

 このように[検証]を繰り返しクリックすると、セル参照が具体的な値に置き換わり、比較結果が「TRUE」または「FALSE」で表示されます。

 セルI2の数式では、在庫に関する最初の条件が「FALSE」でした。残りの2条件は「TRUE」ですが、AND関数はすべての条件が「TRUE」でなければ「TRUE」を返しません。ネストされたAND関数の結果が「FALSE」のため、IF関数は「出荷不可」を返します。

別のデータでも判定結果を確かめる

 同じ「出荷不可」でも、理由が在庫不足とは限りません。例えば、セルI7も「承認済」で「出荷不可」ですが、[数式の検証]を実行すると、在庫数に関する条件は「TRUE」、出荷予定日と出荷期限を比較する条件は「FALSE」となっています。

 つまり、こちらは在庫ではなく、出荷予定日が期限を過ぎていることが原因で「出荷不可」となっていることがわかります。

セルI7の数式を検証すると、AND関数の条件の結果は「TRUE」「FALSE」「TRUE」となっています(⑭)。つまり、出荷予定日が期限を過ぎていることを意味します

 このように、同じ数式、同じ判定結果でも、原因となる条件は異なります。[数式の検証]なら、数式内部の計算を順番に確認できます。

 Copilotは数式の意味や関数の役割を理解する際に役立ちますが、回答を読み解くのに苦労するデメリットもあります。数式の結果に疑問がある時は、両方を組み合わせて確認してみるといいでしょう。