• ベストアンサー

エクセルの条件付き書式で、超過の予定日のみに色を付ける方法について

現在の表は次のように作成されています。 一行に7段階ある作業予定の各段階に予定日が入っています。 全てのセルに前段階の何日後というように計算式を入れ、予定日を自動的に表示するようにしており、確定の場合はその予定日の入っていたセルに直接確定日を入力しています。 この状態で昨日以前の日付を赤字にするよう条件付き書式の設定をすると、確定した日付も赤字になってしまいます。 予定日として計算式の入ったセルの日付のみ、赤字にする方法を教えていただきたいのです。 また、予定日の計算式が入っているセルは青字にしているのですが、確定日として直接日付を入力した時に自動的に黒字になる方法もあわせてお教え頂けるとありがたいです。 どうぞよろしくお願い致します。

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

  • ベストアンサー
noname#52504
noname#52504
回答No.5

ご要望の動作を実現するためには、 対象のセルの値が「数式で入っているのか」「定数で入っているのか」 を判定する必要がありますが、 残念ながら、数式と定数を区別する組み込み関数はありません。 マクロを使えば正直どうにでもなるのですが、 運用に漕ぎ着けるまでが長くなりそうなので、 以下、かなり無理矢理ですが、マクロを使わない代替案を。 ----------------------------------------------------------- ●数式で入れる値と、定数で入れる値をわずかにずらす 例えば、A1セルが【2008/2/23】のとき、 =A1+3 とすれば3日後の【2008/2/26】となりますよね。 このとき、非常に小さい値、例えば10^-6(100万分の1)を余分に加えて、 =A4+3+10^-6 としても、やはり表示は【2008/2/26】となります。 (10^-6は1/10秒ぐらいに相当します) >前段階の何日後というように計算式を入れ とありますが、このとき、それぞれの数式で、 上記のように微小値を加えるようにしておけば、 数式が入っているセルには小数以下の端数がつきます。 一方、手打ちで確定したセルは1できっかり割り切れるはずですから、 【1で割ったときの余りがゼロかどうか】で、 数式か定数かを判定することができます。 条件1:セルの値が定数なら黒字にする  =MOD(A1,1)=0 条件2:セルの値が数式で、日付が昨日以前であれば赤字にする  =AND(MOD(A1,1)<>0,A1<TODAY()) 条件3:セルの値が数式で、日付が今日以降であれば青字にする  =AND(MOD(A1,1)<>0,A1>=TODAY()) ただし、確定日を入力するときに、 手打ちではなくコピー>値貼り付けを使われると、 数式の値がそのまま入ってしまいますからアウトです。 以上ご参考まで。

mou-mie
質問者

お礼

ありがとうございます! 出来ました!!! ”無理矢理”なんてことはなく、ちょっと視点を変えて考えれば”応用”ができるということを再認識致しました。 教えていただき、本当にありがとうございました m(_ _)m

その他の回答 (4)

  • Bubuca
  • ベストアンサー率59% (532/898)
回答No.4

>「名前定義」とは、どのアイコンに入っているのかお教え頂けますでしょうか。 説明不足でごめんなさい。 「挿入」メニューの中に「名前」というのがあります。 そこにマウスポインタを合わせると横に「定義...」というのが出てきます。 「定義...」を選ぶとダイアログボックスが出てきます。 一番上の名前の段にhanteiとタイプしてください。これが定義される名前になります。 下の参照範囲のところに、=GET.CELL(48,B1)+NOW()*0 をタイプします。 これでOKをクリックして、名前定義は終りです。 条件付き書式で判定したいセルと名前定義が適用されるセルが同じなので、どのセルを選んでいる状態で設定するかが重要です。 説明が上手ではないものですから、わかりにくかったら、懲りずに補足してください。

mou-mie
質問者

お礼

再度にわたり、ありがとうございました。 今回は#5の方の方法で工程表を完成させることができましたが、 Bubucaさんに教えて頂いた方法も他の場面で利用させていただきたいと思います。 ありがとうございました。

  • Bubuca
  • ベストアンサー率59% (532/898)
回答No.3

マクロ関数を名前定義で使うとできます。 エクセル2007、2008でもマクロ関数はサポートされましたから、まだしばらく使えると思います。 自動的に予定日が入るセルをB1として、B1を選んだ状態で「名前定義」で 適当な名前(hanteiにしておきましょうか)をつけて、参照範囲には次の式を入れます。+now()*0をつけておくと自動的に再計算されるので楽です。 =GET.CELL(48,B1)+NOW()*0 get.cell(48)はセルの内容が数式のときにtrueを返します。 つぎに条件付き書式の設定で、判定したいセル範囲を選んで、 選択範囲の中のアクティブセルがB1にあることを確認して、 「数式が」=and(b1<today(),hantei) こうして書式を設定してください。 うまくいくと思うのですが、どうでしょうか。

mou-mie
質問者

お礼

ご回答ありがとうございます! 回答を頂いてから何度か試してみたのですが、セルにそのまま教えていただいた数式を入れてもエラーになってしまいます(T_T) マクロ関数を使用した事がないため、私の処理方法が違うのかもしれません。 折角教えて頂いたのに申し訳ございません。 >マクロ関数を名前定義で使うとできます。 この最初の言葉からつまづいてしまいました。 「名前定義」とは、どのアイコンに入っているのかお教え頂けますでしょうか。(「名前ボックス」というものと一緒でしょうか?) 現在 エクセル2007使用中です。よろしくお願い致します。

  • kokuramon
  • ベストアンサー率18% (101/551)
回答No.2

ごめんなさい。No.1で回答した通り、直接入力時に黒字にするには、手動で指定しなおすしか思いつきません。 下の行に「確定日」の項目を別途追加して書き込む代案しか見当たりません。 誰か他に画期的な方法知ってる人の回答を待っててm(_ _)m

mou-mie
質問者

お礼

再度ありがとうございます! あまり横長の表にしたくなかったのですが、やはり欄を追加するしかないかもしれないですね.............。 kokuramonさんが仰って下さったとおり、『画期的な方法』を待ってみます!

  • kokuramon
  • ベストアンサー率18% (101/551)
回答No.1

予定日の範囲を指定し、条件付書式で「セルの値が」「次の値より小さい」「=TODAY()」として、「書式(F)」ボタンをクリックします。 「フォント」タブの中央右にある「色」で赤を指定すればOKです。 直接入力時に黒字にするには、手動で指定しなおすしか思いつきません。

mou-mie
質問者

お礼

早速ありがとうございます。 お教え頂いた方法ですと、確定した日も赤字になってしまうのです。 予定日として数式の入っているセルだけ 「予定日が過ぎたのに確定が遅れている」 という事がわかるように赤字にしたいのですが......。

関連するQ&A