12/04/2021

Excel。条件付き書式。日付が入力されている行だけを塗りつぶすようにしたい【Conditional formatting】

Excel。条件付き書式。日付が入力されている行だけを塗りつぶすようにしたい

<条件付き書式>

日付が入力されているデータがある行だけを塗りつぶすようにしたい場合はどのようにしたらいいでしょうか?

次のデータを用意しました。


この表だけだとしたら、一番古い提出日以降という条件なら、どうなるのでしょうか?


E2に一番古い日程を算出する数式を設定しました。


これ以上ならば、行全体を塗りつぶすように、条件付き書式を設定すればいいはずです。


ホームタブの条件付き書式にある「新しいルール」をクリックします。

新しいルールダイアログボックスが表示されます。


「数式を使用して、書式設定するセルを決定」を選択して、「=$C2>=$E$2」と設定したら、OKボタンをクリックします。


結果はどうなるのでしょうか?


残念ながら、C9の空欄は塗りつぶされていませんが、C3の「未提出」という文字が入力されている行にも塗りつぶしされてしまっています。


なぜ、このようになってしまったのかというと、日付はシリアル値で管理されていることが原因です。

日付は数値な訳ですから、その数値よりもさらに、「未提出」という「文字」に割り振られている文字コードが大きいので、条件に合致してしまったわけです。


それと、E2に、資料のたびに日付を算出させるのも、効率が悪いといえます。


そこで、条件付き書式のルールを次のように変更してみます。


新しいルールダイアログボックスを表示して、条件を次のように変更します。


「=$C2/$C2=1」

それでは、OKボタンをクリックします。


C3の未提出という文字の場合でも、セルの塗りつぶしがされていないことが確認できました。


ところで、この数式の条件。

=$C2/$C2=1


日付の場合、シリアル値ですから、元は数値な訳です。


自分自身を除算すれば、数値の場合は、「1」と算出されるというわけです。


「未提出」のような文字の場合ですが、文字を除算すること自体できませんので、エラーが発生するわけですね。


なので「1」とならないわけですし、空白の場合も「1」にはなりません。

よって、日付がある行のみが、セルの塗りつぶしの対象となるわけです。


今回のように、条件付き書式は、ちょっとしたアイディアで、色々な条件にも対応することができますので、色々と使ってみると、意外な使い方が見つかるかもしれませんね。