記事本文
Excel 2003 で、数行ごとにセルを色塗りして区別したい
今回も Excel 2003 のメモです。 別に昨日今日 Excel を使い出したわけではないんですが、本格的に使い出したのは今年になってからなので 。
Excel に限らず、表中の行を交互に色塗りして視認性を高めるというのは一般的な手法ですよね。 ですよね ? その手法の名称があったような気もするのですが思い出せません。
1 行ごとに交互に色塗りをするなら、Excel の場合は条件付き書式を用いて、行番号が奇数・偶数のどちらかを判断して色塗りするという方法があり、また Web ページでは行ごとに class を指定して CSS で色塗り ( ただし、この方法では行の追加・削除があると HTML 側で class の書き換えを行わねばならず、メンテナンス性が低下します ) したり、 CSS3 の nth-child() 疑似クラスで色塗り ( 実装しているブラウザはまだ一部ですが、行の追加・削除があっても HTML 側での変更は不要です ) したりという方法があります。
今回は、 4 行ごとに色分けをする必要があったので、その方法を考えてみました。
行番号を ROW 関数で求め、 2 とか 4 とか 8 とかで剰余を求めてみる
1行おきに色を変える-MOD関数・ROW関数:Excel エクセルの使い方-条件付き書式では、行番号を 2 で割った際の余りが 0 であれば偶数、行番号を 2 で割ったときの余りが 1 であれば奇数、というような考え方をしています。
( また、 ISODD 関数と ISEVEN 関数という奇数・偶数を判別する関数もあるようです。
ただし、 Excel 2003 では、 ISODD 関数と ISEVEN 関数は
分析ツール アドインを組み込む必要があります。
)
さて、奇数・偶数を考える前に、 Excel で割り算の余りを求める関数をおさらいしてみます。
MOD 関数という関数で、
=MOD(a,b)
という記述になります。
これは「 a を b で割った場合の余り」を表示しますので、例えば
=MOD(9,4)
と入力すれば 9 を 4 で割って、 2 余り 1 となるため、セルには 1 が表示されます。
まず行番号を求めます。使用する関数は ROW 関数です。これは引数を何も指定しなければ、 Excel の一番左に表示されている行番号をそのままセル上に表示します。 ( サンプル 01: A 列 )
ROW 関数で求めた行番号を、 MOD 関数を用いて 2 で割った際の余りを表示します。 =MOD(ROW(),2)と記述します。 ( サンプル 01: B 列 )
行番号を 2 で割った際の余りが 0 であれば「偶数」、行番号を 2 で割ったときの余りが 1 であれば「奇数」を表示します。 =IF(MOD(ROW(),2)=0,"偶数","奇数")と記述します。 ( サンプル 01: C 列 )
行番号を 4 で割って余りを求めてみます。 =MOD(ROW(),4)と記述します。余りの数が 1,2,3,0 の順番で繰り返されました。これだと「 1,2 」と「 3,0 」の組み合わせで 2 行ずつの色分けはできそうです。 ( サンプル 01: D 列 )
じゃあ、ということで行番号を 8 で割って余りを求めてみます。 =MOD(ROW(),8)と記述します。余りの数が 1,2,3,4,5,6,7,0 の順番で繰り返されました。これなら「 1,2,3,4 」と「 5,6,7,0 」の組み合わせで 4 行ずつの色分けができそうです。 ( サンプル 01: E 列 )
数学での記述なら 0<n<5 と書けば「 1,2,3,4 」の組み合わせを指定することができますが、 Excel の場合は AND 関数を用いた指定になります。行番号を 8 で割った際の余りが 1,2,3,4 であれば「 A グループ」、行番号を 8 で割ったときの余りが 5,6,7,0 であれば「 B グループ」を表示します。 =IF(AND(MOD(ROW(),8)>0,MOD(ROW(),8)<5),"A グループ","B グループ")と記述します。 ( サンプル 01: E 列 )
実際には 1 行目にはヘッダ行を書くことが多いので、先ほどのサンプルの ROW()をROW()-1に変更して「行番号 -1 」の数にします。 ( サンプル 02.xls)
「行番号 -1 」の数を 8 で割ったとき、余りが 1,2,3,4 の行だけ色塗りする
さて、何とか 4 行ずつのグループに分ける条件を見つけ出しました。 ( もっとスマートな条件があるかもしれませんが、とりあえず私はこの方法にたどり着いた、ということで。 ) 次はその条件を使って、条件付き書式で色分けをしましょう。
ということで、「 n 行ごとに色分けをしたい場合」は、行番号を n*2 で割り、その余りを条件にして区別することでうまくいくようです。







