Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2016)
条件付き書式のコピーが上手くできない
投稿日時: 20/07/27 18:37:06
投稿者: Yoasn_3218

メンバー1〜5がいるチーム内の毎月のレポートの提出確認表を作ろうと思います。
 
提出期限を経過したら、その月のセルの塗りつぶし色を変えて督促の代わりとしたいので
 
A列 →  A1 表タイトル
B列 → メンバー名1〜5をB2〜B6に 
C1〜F1の各セルに各月の設定期日(yyyy/mm/dd 形式)を入力
 
C2〜C6に”〇”を選択するプルダウンを入力規則で設定 (提出したら〇を記入するよう設定)
D列〜F列のセル2〜6も同様に設定
 
各月毎の設定期限 (例)C1と現在の日付 NOW() との差(期日を経過した日数)
 によってセルの塗りつぶし色を変更する
 
 条件付き書式の条件:式によって設定
 
 IF(NOW()-C1>=3)           :  3日以上経過なら、黄色でC2〜C6を塗りつぶす
 IF(AND(NOW()-C1>3,NOW()-C1<=7 :   3日経過かつ7日経過未満なら、赤色でC2〜C6を塗りつぶす
 IF((C2:C6)<>” ”)     :  C2〜C6が〇で埋まったら(空欄がなくなったら) 灰色でC1〜C6を塗りつぶす
 
のように設定
 
(Q1)これらの式が正しいか否かのご指導を頂きたいと思います。
 
このC列の条件付き書式のルールを D〜F列にコピーしたいと思うのですが、
(各月の期日と現時点との差で各列2〜6セルを塗りつぶし)
C列を他列に書式コピーしても相対ではなくC列のセル参照の式のままとなってしまい、
各月ごとの期限との経過日数でその月のセル2〜6の塗りつぶしの相対式になりません。
 
また各月ごとの参照範囲を変更しようとすると何故か他の設定した部分が条件式が消えてしまったりします。
 
(Q2)どのようにしたら目的の各月設定期日と現時点との日数差によって指定範囲のセル色を塗り分ける
条件付き書式の設定ができるのでしょうか?
 
 
迷路にはまってしまったようで困っています。
ご指導よろしくお願いします。
 
 
 

回答
投稿日時: 20/07/27 20:05:18
投稿者: んなっと

説明がわかりにくいので、こちらで条件を変更します。
以下、C2:C6の塗りつぶしについて
1. ○で埋め尽くされたら灰色(最優先)
2. 上の1.に当てはまらず、C1からの経過日数が7日以上なら赤色
3. 上の1.2.に当てはまらず、C1からの経過日数が3日以上7日未満なら黄色 
とし、さらにそれをD:F列にも適用したい場合で書きます。
 
C2:F6を選択して、以下の順に条件付き書式→数式〜を設定しましょう。
 
●経過日数が3日以上は黄色
=TODAY()-C$1>=3
●経過日数が7日以上は赤色
=TODAY()-C$1>=7
●○で埋め尽くされたら灰色
=COUNTIF(C$2:C$6,"<>○")=0
 
これで「条件付き書式ルールの管理」を見ると、上から順に
灰色
赤色
黄色
になります。
念のため「条件を満たす場合は停止」のチェックをするのもいいと思います。

投稿日時: 20/07/28 08:48:18
投稿者: Yoasn_3218

んなっと さん
 
 
回答どうもありがとうございました。大変助かりました(^^;
 
 
動作確認できた上で追加質問させて頂きたいのですが
 
 
C列に設定した条件付き書式の式などを他列にコピー(書式のみコピー)しました。
すると提出期限を記入していない月(列)の部分が赤色になってしまいます(経過日数が7日以上は赤色)
 
提出期限のセルが空欄であると、Today()との日数差が無限大のように認識してしまうのか?
期限設定していない列は色無しの初期状態にしておきたいのですが、どう工夫すればよいでしょうか?
 
(とりあえずの暫定で、ここを空欄でなく=Today() を設定、文字色を白にして空白に偽装しています)
 
 
ご回答よろしくお願いしますm(_ _)m

回答
投稿日時: 20/07/28 09:37:29
投稿者: んなっと

C$1<>""を追加するだけです。
 
=AND(C$1<>"",TODAY()-C$1>=3)
=AND(C$1<>"",TODAY()-C$1>=7)
=AND(C$1<>"",COUNTIF(C$2:C$6,"<>○")=0)

投稿日時: 20/07/28 16:14:53
投稿者: Yoasn_3218

んなっと さん
 
ブランクでなければ..とすれば良かったわけですね。
簡単なIF関数の使いこなしもまだまだの自分で恐縮です。
 
どうもありがとうございました!