いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Excel)入力が完了した行をグレーアウトする方法

 Excelで、表のうち入力が完了した行をグレーアウトする方法についてです。グレーアウトについては「セルを灰色にする」と「変更を禁止する」の2つの要素がありますので、その両方のやり方を紹介します。

完了した行の背景色をグレーにする方法

 次のような表があります。
 この表のF列の値が「完了」ならばその行全体の背景色がグレーになるよう設定するものとします。

 


 まずは対象範囲であるB3:F7の範囲を選択し、「ホーム」タブにある「条件付き書式」→「新しいルール」を選択します。

 


 ダイアログが現れますので、中段の「数式を使用して、書式設定するセルを決定」を選択します。
 そして数式欄に次の数式を入力し、「書式」ボタンをクリックします。

 数式欄の数式

=$F3="完了"

 これは(設定範囲であるB3:F7セルの)各セルからみて「同じ行にあるF列のセル値が『完了』だったら(以下で設定する)書式の内容を適用する」という意味です。「$」という絶対参照を使用することで、各セルからF列が参照されるようにすることがポイントです。



 「書式」ボタンをクリックすると次のダイアログが現れますので、ここでは「塗りつぶし」タブにある背景色からグレーを選択します。もちろん他の色を選択することもできますし文字色の設定等も可能です。
 OKをクリックしてさらに最初のダイアログのOKをクリックすれば設定完了です。

 


 F列の値が「完了」である行がグレーに塗りつぶされました。
 もちろんF列の値が変化すればそれに応じて塗りつぶしも変化します。

 


 なお、上記の数式欄に入力する数式を「=$F3<>""」を変えれば「F列に何か値が入っていたら行を塗りつぶす」ということができます。
 次の画像はその結果で、F列に日付が入っている行がグレーアウトされています(数式以外は上記の手順と全く同じ)。ただし日付以外の値を入れてもグレーアウトされます。

 数式欄の数式

=$F3<>""

複数の列の値をチェックして背景色をグレーにする例

 ここでは、F列とG列の値がともに「完了」ならばその行全体の背景色がグレーになるよう設定してみます。

 


 B3:G7の範囲を選択した状態で上記の例と同様に「ホーム」タブから「条件付き書式」→「新しいルール」と選択します。
 そしてダイアログでの操作も同様ですが、数式欄に入力する数式を次のようにします。

 数式欄の数式

=AND($F3="完了",$G3="完了")

 これは「(B3:G7の各セルからみて)同じ行のF列とG列の値がともに『完了』ならば書式を適用する」という意味です。
 ちなみにスピルが有効なバージョンならば次のようにもできます。チェックすべき列が多数あっても簡単に記すことができます。

=AND($F3:$G3="完了")

 


 「書式」ボタンをクリックして塗りつぶし色を設定し、OKして設定を終えると期待どおりの結果となりました。

設定が拡張されないようにする方法

 次の画像は、最初の例の設定を終えた後でG6セルに値を入力したところです。
 このG6セルは条件付き書式を設定した範囲の外側のセルですが、値を入力したときに隣のF5セルの設定が拡張されて条件付き書式が適用されてしまいました。

 


 こうなるといちいち修正するのが厄介なので、あらかじめ設定が拡張されないようにしておくのがよいです。
 「ファイル」タブを選択して下部にある「オプション」を選択し、ダイアログ左側の「詳細設定」を選択して「データ範囲の形式および数式を拡張する」のチェックを外せばこのような自動拡張を防ぐことができます。

完了した行の値の変更を禁止する方法

 次の画像は、上記の手順により「完了」した行の塗りつぶし色がグレーになるよう設定したところです。
 ここではさらに「完了」した行の値の変更を禁止するものとします。
 ただしF列にまでその設定を適用してしまうと、(設定を変更しない限り)F列の値を「完了」以外に戻すこともできなくなるので、B~E列だけに設定を行うものとします。

 


 まずはB3:E7セルの範囲を選択し、「データ」タブにある「値の入力規則」のアイコンをクリックします。

 


 ダイアログが現れますので、「設定」タブにある「入力値の種類」のプルダウンから「ユーザー設定」を選択し、その隣にある「空白を無視する」のチェックを外します
 そして数式欄に次の数式を入力します。

 数式欄の数式

=$F3<>"完了"

 これは「(設定範囲であるB3:E7の各セルからみて)同じ行のF列の値が『完了』でなければ入力(変更)を許可する」という意味になります。逆にF列の値が「完了」の場合は各セルの値の変更が禁止されることとなります。
 なお「空白を無視する」のチェックを外すのは、値が入っているセルを空白にするという変更を防止するためです。チェックを残してしまうと(「完了」している行の)文字が入っているセルを空白にしても何も起こらず、阻止できません。



 これだけでも機能はしますが、ルールに抵触した際に理解しやすいよう「エラーメッセージ」タブを選択し、値が変更された場合の警告メッセージを入力します。

 


 OKボタンをクリックすると設定完了です。
 F列が「完了」ではない行の値を変更しても何も起こりません(E4セル)が…

 


 「完了」となっている行の値を変更しようとすると(E6セル)先ほどのメッセージが表示され、変更はキャンセルするしかなくなります。
 もちろんF列の「完了」を他の値に変更すれば、各列の値も変更可能となります。

 理想を言えばB~E列のセルにフォーカスしない(disable)ようにしたいところですが、なるべく簡単に設定するならこのぐらいかと思います。