プロが教えるわが家の防犯対策術!

仕事のスケジュール管理をexcelで行っています。
excel関数について教えてください。

 A   B    C     D    E
1               2008/10/1 2008/10/2 
2作業1 2008/10/1 2008/10/10 (1)    (2)
3    2008/9/29       (3)    (4)

補足:
A2:作業名(作業1)
B2:開始予定日(200//10/1)
C2:終了予定日(2008/10/10)
B3:開始実績日(2008/9/29)
C3:終了実績日(未記入)
D1、E1:実日(2008/10/1、2008/10/2)

(1)(2)実日が開始予定日から終了予定日の範囲にある場合は□を表示。
 (1)「=IF(D$1>=$B2,IF(D$1<=$C2,"□",""),"")」
 (2)「=IF(E$1>=$B2,IF(E$1<=$C2,"□",""),"")」
(3)(4)実日が開始実績日~終了実績日の範囲にある場合は■を表示。
 (3)「=IF(D$1>=$B3,IF(D$1<=$C3,"■",""),"")」
 (4)「=IF(E$1>=$B3,IF(E$1<=$C3,"■",""),"")」

上記例の場合、開始予定日より前に作業1を開始しているため、「仕掛中」です。しかし、上記(3)(4)の関数では■が表示されません。
やりたいことは、
仕掛中の場合は■を表示したいのですが、関数の指定方法がわかりません。
是非とも解決策を教えていただきたく、御教授の程宜しくお願い致します。
尚、excel関数で実現したいという制約があります。

A 回答 (5件)

[ANo.3この回答へのお礼]に対するコメント、



次式では如何でしょうか?
D3: =IF(D$1>=$B3,IF(D$1<=($C3+TODAY()*($C3="")),"■",""),"")
    • good
    • 1
この回答へのお礼

素敵です!
ばっちりです!
ありがとうございました!!

お礼日時:2008/10/10 23:17

> 終了実績日を記入したところ、終了実績日の前日までに


> ■が表示される状態であることを確認しました。
> 因みに、min関数をmaxにしたところ、終了実績日の翌日
> まで■が表示されてしまいます。

入力ミスがありますね。私は動作確認してから回答しています。E3
の数式は=if(and(E$1>=$B3,E$1<=min($C3,today())),"■","")で間
違いありません。実績日が未入力なら今日まで■を表示、過去の日
付が実績日として入力されていれば、実績日まで■を表示、実績日
が未来でも今日までしか■は表示されないという仕様です。

上記の数式を、別のセルに入力してませんか。自分の列の日付を参
照していないような臭いがしますよ。

参考URL:http://ponyo.no-ip.org/uploader0/src/01P0281.png …
    • good
    • 0
この回答へのお礼

御返事大変遅くなり申し訳ありませんでした。
完全に私のミスでした。
御迷惑おかけしたことを深くお詫び致します。

お礼日時:2008/10/10 23:16

D3: =IF(D$1>=$B3,IF(D$1<=($C3+2958465*($C3="")),"■",""),"")

    • good
    • 0
この回答へのお礼

非常にわかりやすい端的な御回答ありがとうございます。
御回答の関数でテストした所、
終了実績日を記入した場合は何の問題もなく、想定通りの結果を得ることができました。ありがとうございます。
終了実績日を記入しない場合、関数が定義されているセル全てに■が表示されてしまいました。
■は作業が仕掛中であることを表している意味も含んでいますので、まだ終わっていない作業の進捗状況が実日を超えて■が表示されてしまうのは少々理想から離れてしまいます。
終了実績日を記入していない場合は、実日まで■が表示される、
終了実績日が記入されている場合は、終了実績日まで■が表示される、というのが理想です。何かアイデアが御座いましたら、追加質問で心苦しいのですが、御教授いただけたらと思います。何卒御回答の程宜しくお願い致します。

お礼日時:2008/10/08 00:14

>  (3)「=IF(D$1>=$B3,IF(D$1<=$C3,"■",""),"")」


>  (4)「=IF(E$1>=$B3,IF(E$1<=$C3,"■",""),"")」
>
> 上記例の場合、開始予定日より前に作業1を開始しているため、「仕掛中」です。しかし、上記(3)(4)の関数では■が表示されません。

終了実績日が空欄の状態で、IF(D$1<=$C3,"■","")やIF(E$1<=$C3,"■","")がどういう結果になるのか、つまりは、D$1<=$C3やE$1<=$C3がどんな判定値になるのかを理解しましょう。
    • good
    • 0
この回答へのお礼

もっと学習し、理解を深めるよう努力します。

お礼日時:2008/10/08 00:15

ポイントは、終了実績がない場合にいつまで■を書くのかですね。


そこの判断がないから単純に日付の大小を比べて、C3がブランクだ
と何も書けない。

たとえば今日は書くけど明日は書かないとしましょうか。妥当です
よね。その場合、該当列の日付(E$1など)が終了実績もしくはtoday
関数より前なら■を書けばいいでしょう。ここで、終了実績は絶対
に明日以降の日付にならないこととexcelのmin関数は空白セルを無
視することを考慮すると、上記の条件は E$1<=min($C3,today())と
書けますね。

で、ついでなのでif関数の入れ子を見直して、
=if(and(E$1>=$B3,E$1<=min($C3,today())),"■","")
てな感じですかね。
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。
早速テストしてみました。
終了実績日を記入しない場合は何の問題もなく理想通りの結果が得られました。
終了実績日を記入したところ、終了実績日の前日までに■が表示される状態であることを確認しました。
因みに、min関数をmaxにしたところ、終了実績日の翌日まで■が表示されてしまいます。
終了実績日当日まで■を表示するのが理想なのですが、何か対策は御座いますでしょうか?
重ねての質問で大変申し訳ありませんが、上記問題を解決する方法について何卒御教授いただければ幸いです。御回答の程宜しくお願い致します。

お礼日時:2008/10/08 00:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!