
私は、c7:c30 に日付が指定され、L7:L30 にアクティブ - "A" および完了 - "C" カテゴリがあるデータの範囲を調べる数式を Excel で設定しようとしています。Excel で各行を個別に調べ、日付が 1/1/12 (B38) から 3/31/12 (C38) (その年の第 1 四半期) に指定された四半期の日付の間にあるかどうかを比較し、この条件が満たされている場合は、アクティブとして "A" とマークされているものをカウントしようとしています。
私が考えた次の方法は、指定された最初の日付のみを参照し、最初の日付が第 1 四半期の仕様に一致する場合に「A」でマークされたものをすべてカウントするため、機能しません。
{=(IF(($C$7:$C30>=$B$39)*($C$7:C$30<=$C$39),COUNTIF($L$7:$L30,"a"),0))}
この数式のどこが間違っているのか教えてください。この数式では、各行を個別に確認せず、代わりに、提示された if ステートメントに対して最初の日付が true であると判断された場合に、A で示されたすべての日付をカウントします。
申し訳ありませんが、Excel は得意ではないので、助けていただければ幸いです。
ありがとう!
答え1
配列数式の構造化方法に問題があるのではないかと思います。ステートメントを展開すると、持っている行数と同じ数の配列が構築され、各行には日付条件が満たされている場合は COUNTIF($L$7:$L30,"a") の結果、そうでない場合は 0 が含まれます。
全体をラップするカウント関数を適用していないため、関数は配列全体を返しますが、セルに表示されるのは最初の結果のみであり、そのため、1 つのセルによってのみ制御されているように見えます。
これにアプローチする別の方法は次のとおりです。
3 つのテスト (各行) は次のとおりです。
- 日付 >= B38
- 日付 <= C38
- 条件 = "a"
そして、3 つすべてが当てはまる場合のみをカウントします。
便利なことに、 true 値は 1 に評価され、 false 値は 0 に評価されるため、乗算演算を使用して必要なものを取得できます。
したがって、1行の場合は次のようにします。
(C7 >= B38) * (C7 <= C38) * (L7="a")
(そして当然ながら、関心のある行をカバーするために C7:C30 などに拡張します)
これを 1 つの値にまとめるには、リスト全体を調べてすべての値を合計する SUM() ステートメントで全体をラップする必要があります。
SUM( (C7:C30>B39) * (C7:C30<=C39) * (L7:L30="a") )
また、興味があれば、元の数式に戻って sum() ステートメントで囲むと、ステータスが「a」に設定された回数に日付条件を満たした行数を掛けた結果が表示されます。
(注:配列数式は最初は少し頭を悩ませますが、一度理解してしまえば、うまく機能します。私は最初に配列数式について読みました。http://www.cpearson.com/excel/ArrayFormulas.aspxまだすべてが混乱しているのであれば、これはまだかなり良い説明です。