Help us understand the problem. What is going on with this article?

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朝)

wingedtw
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away