Edited at

Excelをしましまにする。

More than 3 years have passed since last update.


1行ごとにしましまにする方法は数あれど・・・。

「Excel しましま」で検索するとたくさんヒットします。

でも、それは1行おきにしましまにする方法で、

No.
タイトル
URL

1
Google
https://www.google.com/intl/ja/

2
Yahoo
http://yahoo.co.jp

3
Microsoft
https://www.bing.com/

:
...
...

な感じになりますよね。

ちなみに方法はたくさんあるようなのでここでは割愛します。


複数行ごとにしましまにしたい!

今回やりたいことは、意味が同じような数行をまとめて、それらごとにしましまにしたい、です。

タイトル
URL

Google
Google
Google

https://www.google.com/intl/ja/
https://www.goolgle.co.jp
https://www.google.com

Yahoo
Yahoo

https://www.yahoo.com
http://www.yahoo.com

Microsoft
Microsoft

https://www.msn.com
https://www.bing.com

みたいなイメージです。

タイトルでまとめて色付けたい!

でも行数が多くて手動でやるのはめんどくさい!!

かといってVBA書くのなんてもっとめんどくさい!!!

そんなあなたに。


Excelで機械的に頑張る

結論から言うと、数式と条件付き書式(と列非表示)で行けます。

左から順番にA,B,C,D列とします。




1. C列を挿入します。

A
B
C

1
Google
https://www.google.com/intl/ja/
= FALSE

2
Google
https://www.goolgle.co.jp
= A2=A1

3
Google
https://www.google.com
= A3=A2

4
Yahoo
https://www.yahoo.com
= A4=A3

5
Yahoo
https://www.yahoo.com
= A5=A4

6
Microsoft
https://www.msn.com
= A6=A5

7
Microsoft
https://www.bing.com
= A7=A6

C2だけ入れてしまえばあとは下へコピペです。

C1だけは手で真偽値のFALSEを入れてください。

これで次のように評価(表示)されるはずです。

A
B
C

1
Google
https://www.google.com/intl/ja/
FALSE

2
Google
https://www.goolgle.co.jp
TRUE

3
Google
https://www.google.com
TRUE

4
Yahoo
https://www.yahoo.com
FALSE

5
Yahoo
http://www.yahoo.com
TRUE

6
Microsoft
https://www.msn.com
FALSE

7
Microsoft
https://www.bing.com
TRUE

C列がFALSEになると色を切り替えるんだ!っていうのが見え見えです。



2. D列を挿入します。

A
B
C
D

1
Google
https://www.google.com/intl/ja/
FALSE
= 1

2
Google
https://www.goolgle.co.jp
TRUE
= IF(C2, D1, IF(D1=2,1,D1+1))

3
Google
https://www.google.com
TRUE
= IF(C3, D2, IF(D2=2,1,D2+1))

4
Yahoo
https://www.yahoo.com
FALSE
= IF(C4, D3, IF(D3=2,1,D3+1))

5
Yahoo
http://www.yahoo.com
FALSE
= IF(C5, D4, IF(D4=2,1,D4+1))

6
Microsoft
https://www.msn.com
FALSE
= IF(C6, D5, IF(D5=2,1,D5+1))

7
Microsoft
https://www.bing.com
TRUE
= IF(C7, D6, IF(D6=2,1,D6+1))

1.と同様にD2だけ入れてしまえばあとは下へコピペです。

D1だけは手で数値の「1」を入れてください。

これで次のように評価(表示)されるはずです。

A
B
C
D

1
Google
https://www.google.com/intl/ja/
FALSE
1

2
Google
https://www.goolgle.co.jp
TRUE
1

3
Google
https://www.google.com
TRUE
1

4
Yahoo
https://www.yahoo.com
FALSE
2

5
Yahoo
http://www.yahoo.com
TRUE
2

6
Microsoft
https://www.msn.com
FALSE
1

7
Microsoft
https://www.bing.com
TRUE
1

このD列眺めると何となくわかってくるのではないでしょうか!



3. 条件付き書式を設定します。


  1. A1~B7を範囲選択する

  2. 条件付き書式を選択する

  3. 新規ルールの追加、「数式を使用して~」

  4. “数式” の欄に「=\$D1=1」または「=$D1=2」、好きな書式を設定

    この $ を忘れるとうまくいきませんので注意。

  5. 適用!

タイトル
URL

Google
Google
Google

https://www.google.com/intl/ja/
https://www.goolgle.co.jp
https://www.google.com

Yahoo
Yahoo

https://www.yahoo.com
http://www.yahoo.com

Microsoft
Microsoft

https://www.msn.com
https://www.bing.com

目指すイメージになりました!(3分クッキング的)



後はお好みに応じてC列D列を非表示にしたり、D列を値貼り付けして、C列を消してみたりと後処理的なことをやればいいと思います。

ただ、D列を消すと条件付き書式が消えるので、そのときは非表示で我慢してください。

なお、C列とD列はそもそも式中でくっつけることが出来ちゃうのですが、そうするとちょっと式が長くなりすぎるので隣の列に切り出してます。


解説!

上記1.の「FALSEになったら色を反転する」っていうのがポイントで、反転⇒色インデックスをローテーションする、と考えると、


  • TRUE(上と同じタイトル)なら色インデックスはそのまま

  • FALSE(上と違うタイトル)なら色インデックスをインクリメント


    • 色数最大(ここだと2)の時は1にローテーションさせる



っていう処理になります。


応用としては...

任意のN色の場合はこちら~。

2.の数式のところで

 =IF(C2, D1, IF(D1=N, 1, D1+1))

って感じです。

3.の条件付き書式の設定がめんどくさいですけどね。


ぼーっと解説考えてたら、ローテーションで考えたら分かりやすいじゃん!と思って式修正してみました。(2/5朝)