IF/ANDステートメントの条件が見落とされるのはなぜですか

IF/ANDステートメントの条件が見落とされるのはなぜですか

私は次の式を導入しました。

=TRIM(
IFERROR(IF(AND($T9-TODAY()>=Key!$N$14,$T9-TODAY()<=Key!$M$14,$AA9<>"Complete",$G9<>"New Phase",$T9<>""),Key!$L$11,""),"Error")
)

の「エラー」部分が実行されていることに気付きましたIFERROR。数式を確認した後、列 T が時々空になることが原因であると確信しました。そこで、次のチェックを実施しました$T9<>""。ただし、これを追加してからも、「エラー」は引き続き表示されます。

追加した条件によって、条件の「FALSE」部分が実行されるのではないですか? これは単に「」です。

誰か何か洞察力を持っていますか?

ここに画像の説明を入力してください

ここに画像の説明を入力してください

答え1

あなたの式には構築の失敗がないので、問題はその原因によるものではありません。書かれているとおり、論理的には機能するので、生成の失敗は、使用されている関数など、またはそれらが使用する値のいずれかによるものであるに違いありません。

「使用関数が... 使用される」とは、使用の形成が、考えも及ばない中間ステップのために問題を引き起こすことがあることを意味します。たとえば、偽の例 (「偽」というのは、実際に問題を引き起こすものではないからですが、実際の例は思い浮かびません) を使用すると、TODAY()ある値から減算し、それを別の値と比較することが問題であるとします。次のようになります。

=$T9 - TODAY() <= Key!$M$14

この数式の評価中に左半分が負の値を生成した場合、Excel はエラーになるものとします。(Excel は処理時に「型」を考慮しないため、日付の結果は期待されず、負の値が生成されてもエラーにはなりません。ただし、仮定してください。) したがって、Excel は数式を評価する最初のステップとして負の値を取得し、その時点でエラーになり、その後はエラーになりません。そのエラーはその後の計算に引き継がれるため、内部の最終結果はIFERROR()エラーになり、その結果が表示されます。

(繰り返しますが、これは仮定の話です。しかし、これを簡単に克服する方法の例として、単に代数的TODAY()に を右側に移動するだけで、おそらく正の値が追加されるため、評価時に中間結果が負になることがなくなり、エラーが発生することはありません。評価されると、右側は日付の側面を失い、単なる数字になり、おかしなことはすべて終わります。そのため、簡単な修正が利用できる場合がよくあります。)

すでに述べたように、これは数式のどのコンポーネントにも問題はありません。したがって、唯一の現実的な可能性は some component (cell) used in one of theAND()ですcomponents contains an error

これは、たとえば、あなたが本当にそうした配慮を望んでKey!$M$9いないKey!$M$14かどうかとは関係ありません。T14T9(間接的な方法を除く: 式に誤って選択されたメンバーがある場合、ANDT9である必要がある部分にはエラーがあるが、実際にはエラーがない場合など)。T14T9T14

IFERROR()したがって、正常に評価されるのではなく、パワーアップする数式の使用を選択し、その中で参照されている各セルを確認します。これをすばやく行う良い方法は、数式をセルの 1 つにコピーすることですError(F2 キーを押してすべてを強調表示してコピーし、何も損傷せずに作業できるようにどこかの空きスペースに移動して F2 キーを押して貼り付けます。数式は、取得元とまったく同じ参照を持ちます)。次に、数式の下のセルに、=各セル参照を入力します。つまり、次のようになります。

=T9
=Key!$n$14

などなど。これで、いわばすべてが明らかになったことになります。コンポーネントの 1 つに Excel エラー (セルが 0 で割った結果など) が表示されている場合は、原因が特定されます。運が良ければ、原因は 1 つだけです。

これは、スプレッドシートを作成するときによく問題になります。テストの変更を行った後、テストを実行するにはさらに別の変更が必要であることに気付き、作業の分岐がいくつか生成されますが、必要ないくつかの異なる変更を行うための適切な開始点に戻るパスが見つからない (そのため、分岐を組み込む代わりに、2 つまたはそれ以上を奇妙な方法で互いに押しつぶしてしまう) ため、T9 と Key!$M$14 の一見不一致なアドレスのように、使用されるセル アドレスに実際の不一致が生じることがよくあります。ただし、その明らかな不一致が実際には完全に一致している可能性もあるため、このパスは必ずしもそれらにつながらない可能性があります。ただし、よくあることです。

しかし、はるかによくある問題は、先行する数式がエラーを引き起こし、従属数式でそれらのセルを呼び出すとエラー結果につながることです。発生する理由はたくさんありますが、数式の問題は通常、構成の問題であると経験しているため、呼び出された実際のセルを振り返る人はほとんどいません。特に、最初の使用がうまく機能し、エラーが発生するのは「コピーして貼り付けた」数式の一部だけである場合はそうです。

したがって、どのような方法で実行しても、失敗結果の 1 つを選択し、1 つ以上のコンポーネント セルがエラーをプッシュしている可能性が「絶対にない」ことを「知っている」かどうかに関係なく、アドレス指定されたすべてのコンポーネント セルを確認する必要があります。

言い忘れたことが 1 つあります。シート名にシート名などを含めて数式を設定したのですが、完全に機能しています。参照先のセルの 1 つにエラー状態を作成するまでは。したがって、構築どおりに動作し、TRUE と FALSE の両方の分岐に対して正しい結果を返すことがIF()テストされています。参照先のセルにエラーがない慎重な設定でテストされています。ただし、いずれかにエラーがあると、結果に戻りますIFERROR()

答え2

A18 の数式は T18 を参照していると思います (示されている数式では T9 を使用しています)。IF(T9<>"" を IF(ISBLANK(T9) に変更するとよいかもしれません。<>"" は、そこにスペースがある場合にのみ TRUE を返します。下のスクリーン キャプチャは、数式の詳細と参照されたセルの内容で同様の結果を示しています。

ここに画像の説明を入力してください

これが役に立つことを願っています。

関連情報