• ベストアンサー

excel:日付け処理

Excelの表で、 B列には、C列のデータがある申請処理が済んでいる(1)か済んでいない(0)かのデータ、1,0が入っています。 C列の2行目から、所属期間が次のように入っています。 処理(B列):所属期間(C列) 1:2006/1/1~2/28 0:2006/1/1~3/1 1:2006/12/1~2006/1/31 0:2006/1/1~2/28 1:2006/1/1~3/1 1:2005/12/1~2006/1/31 1:2006/1/1~2/151:a~b(と説明のため表記) ------------------------- などの所属期間情報が日付の属性として入っているものとします。このときB列の値が0のものに対して、現在日を元に、(現在日-14)≦b値≦(現在日+14)を満足していれば、処理しなければいけないということでセルを黄色に表示するようにしたい。なおもし以上の処理をする前に色の付いたC列のセルがある場合は、いったん色をクリアしてから黄色付けするようにする。 以上をマクロで書くには、どうすればよいか。もしC列に対する処理が大変ならC列のa~bというデータが、最初からC列,D列に分離されているとしてもいいです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

=AND($A2=0,$B2+14>=TODAY(),$C2-14<=TODAY()) こんにちは。KenKen_SP です。久々のカキコで緊張気味です。 えーーと、確認です。 >(現在日-14)≦b値≦(現在日+14) このb値というのが良く分かりません。所属期間が本日の前後14日以内 であれば着色ということですか? VBA でもできるけど、条件付き書式の方が手軽で良いと思いますよ。 データはご質問の文末でご自身が仰ってますが、分離した方が良いでしょ う。例えば、C 列に文字列として 2005/12/15~2006/1/31 と入力するのはあまりオススメできません。データ入力の作業者によっ てバラツキがでそうですね。例えば上記の例では年をまたいでますが、 2005/12/15~1/31 と入力されたら場合はどうでしょう?人間の目で判定する分は問題ない ですけど、PC に計算させるなら、1/31 が 2005年なのか2006年なのか 不明瞭になりエラーの原因になります。 また、このような文字列を日付として再計算するのはエラー処理が必要 ですが、それでも完全に誤動作の予防は難しいでしょう。手間がかかる だけです。したがって、 処理  所属期間(自)  所属期間(至) のように列を分けて、日付として入力してもらった方が良いと思います。 状況がイマイチ掴めてませんので参考程度ですが、以下の様な数式を条件 付き書式に設定すれば良いかと思います。 =AND($B2=0,$C2+14>=TODAY(),$D2-14<=TODAY()) 恐らくこうだろうという推測で書きました。はずしてたら、すみません。

taktta
質問者

お礼

この通りです.おかげで解決しました。どうもありがとうございました。

その他の回答 (1)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

C,D列に分離してるならマクロでなくてもできると思いますよ。 C2:D2を選択して「書式」「条件付書式」 「数式が」「=AND($B2=0,$C2<TODAY()+14,$D2>TODAY()-14)」 で書式のパターンで黄色を選択 Bが0で且つ、C~Dの期間が今日から2週間前後の範囲のC,Dのセルを黄色く塗りつぶします。

taktta
質問者

お礼

おかげで解決しました。どうもありがとうございました。

関連するQ&A

専門家に質問してみよう