(Excel)表の罫線を自動的に引く方法

 Excelで、表にデータが追加されらその行に自動的に罫線を引き、データが削除されたら消えるようにする設定方法についてです。
 テーブル機能を使うという方法も考えられますが、ここでは条件付き書式を使う方法を紹介します。

値が追加された行に罫線を追加する方法

 グレーの目盛線だけで、罫線が引かれていないデータだけの表があります。
 この表に条件付き書式を設定し、値がある行に自動的に罫線が引かれるようにしてみます。

 


 設定範囲はB2:F12とします。
 まずはこの範囲を選択して……

 


 「データ」タブにある「条件付き書式」をクリックして、さらに「新しいルール」を選択します。

 


 ダイアログが現れますので、中央付近にある「数式を使用して、書式設定するセルを決定」をクリックします。

 


 するとダイアログが少し変化します。
 ここで下の方に現れた数式欄に次のような式を入力し、「書式」をクリックします(ここでOKをクリックすると何も起こらず終わるので注意)。

 数式欄内の式

=OR($B2:$F$12<>"")

 絶対参照($)の位置に注意してください。3つあり、異なると意図しない結果となります(下記備考参照)。
 式の意味ですが、各セルからみて下方のセル(設定範囲B2:F12内で自身のセルを含む)のいずれかに値があれば真とする(以降の設定を適用する)、というものです。



 (前の画面で「書式」をクリックしたところ)次のダイアログが現れます。
 ここで「罫線」タブを選択して「外枠」をクリックします。
 これでセルの四方に罫線を引く設定となりますが、水平方向にのみ罫線を引くといった設定ももちろん可能です。


 そして「OK」をクリックします。
 前のダイアログに戻りますが、そこでも「OK」をクリックすると設定完了です。

 


 さしあたり、値がある行に罫線が引かれました。

 


 さらに新しい値を追加すると(設定範囲内のどの列でもOK)、その行に罫線が追加されます。

 


 途中に値がない行があっても上方とつながるように罫線が引かれます。
 ちなみに値がない行に罫線を引きたくない場合は上記の式を「=OR($B2:$F2<>"")」としてみてください。

 


 もちろん、値を消すと罫線も消えます。

備考

自動拡張機能の影響

 値を追加していくと次の画像のように13行以降(設定範囲外)に1セル単位で罫線が引かれていく場合があります。
 これは条件付き書式ではなく自動拡張の機能によるものです。停止する場合は「ファイル」タブの「その他」→「オプション」→「詳細設定」→「データ範囲の形式および数式を拡張する」のチェックを外す、でOKです。

「$」が足りない場合

 上記の数式欄に記す式ですが、絶対参照の「$」を2つにする方法もよくみられます。
 たいていの場合それでも問題なく機能するのですが……

 


 これだと設定範囲外の値を参照して罫線が引かれてしまいます。また、罫線が乱れた形状になる場合もあります。
 設定がB2:F12の範囲内で完結しているように見えて、実は絶対参照の縛りが甘いため(意図した)設定範囲外を参照してしまうことが原因です。
 実用的には列全体に設定する例が多いと思われるのであまり気にする必要はなさそうですが、列方向への拡張(下記参照)を行うときにうまくいかない恐れがあります。

値が追加された列に罫線を追加する方法

 ここでは列方向に罫線を追加していく設定をしてみます。
 設定範囲はB2:I7とし、この範囲を選択します。

 


 あとは上記の設定例と同様ですが、数式欄に記す式を次のようにします。

 数式欄内の式

=OR(B$2:$I$7<>"")

 各セルからみて右側のセル(設定範囲B2:I7内で自身のセルを含む)のいずれかに値があれば真とする(書式設定の内容を適用する)、というものです。
 最初の例(行に罫線を引く)とは参照範囲だけでなく「$」の位置も異なるのが注意点です。



 これで値を追加した列に罫線が追加されます。あとは備考も含めて上記例と全く同様です。

値が追加された行と列に罫線を追加する方法

 ここでは行方向と列方向の両方に罫線を追加していく設定をしてみます。
 設定範囲はB2:I12とし、この範囲を選択します。

 

 あとは上記の設定例と同様ですが、数式欄に記す式を次のようにします。

 数式欄内の式

=AND(OR($B2:$I$12<>""),OR(B$2:$I$12<>""))

 急に長い式になりましたが、各セルからみて下方のセル(設定範囲B2:I12内で自身のセルを含む)のいずれかに値があり、かつ、右側のセルのいずれかに値があれば真とする(書式設定の内容を適用する)、というものです。



 これで値を追加した行と列の双方に罫線が追加されます。