Excelをしましまにする。

# 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<br/>Google<br/>Google|https://www.google.com/intl/ja/<br/>https://www.goolgle.co.jp<br />https://www.google.com|
|Yahoo<br/>Yahoo|https://www.yahoo.com<br />http://www.yahoo.com|
|Microsoft<br/>Microsoft|https://www.msn.com<br/>https://www.bing.com|

みたいなイメージです。

タイトルでまとめて色付けたい！
でも行数が多くて手動でやるのはめんどくさい！！
かといってVBA書くのなんてもっとめんどくさい！！！

そんなあなたに。

# Excelで機械的に頑張る

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

左から順番にA,B,C,D列とします。
<dl>
<dt>1. C列を挿入します。</dt><dd>

|| 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になると色を切り替えるんだ！っていうのが見え見えです。

</dd>

<dt>2. D列を挿入します。</dt><dd>

|| 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列眺めると何となくわかってくるのではないでしょうか！

</dd>

<dt>3. 条件付き書式を設定します。</dt><dd>

1. A1～B7を範囲選択する
2. 条件付き書式を選択する
3. 新規ルールの追加、「数式を使用して～」
4. “数式” の欄に「=\$D1=1」または「=$D1=2」、好きな書式を設定  
この ＄ を忘れるとうまくいきませんので注意。
5. 適用！

| タイトル | URL |
|:----------|:----------|
|Google<br/>Google<br/>Google|https://www.google.com/intl/ja/<br/>https://www.goolgle.co.jp<br />https://www.google.com|
|Yahoo<br/>Yahoo|https://www.yahoo.com<br />http://www.yahoo.com|
|Microsoft<br/>Microsoft|https://www.msn.com<br/>https://www.bing.com|

目指すイメージになりました！(3分クッキング的)
</dd></dl>

後はお好みに応じて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朝)