質問: エクセルに関する質問です。 下記表をご覧ください。 a列(ナンバー)に並んでいる同じ値のセルに同じ色 エクセルに関する質問です。 下記表をご覧ください。 a列(ナンバー)に並んでいる同じ値のセルに同じ色を付けて、一目で何種類に分かれているか知りたいです。 今までは一つずつ探してそれぞれ色付けしていたのですが、数字を入れれば自動で同じ数字別に色分けされたいです。 ご存知の方、どうかご協力お願いします(>人<;)
回答: こんにちは >自動で同じ数字別に色分けされたいです。 他の方の回答にあるように「条件付き書式」でできますが、色って似た色がいろいろあるので、どの順番でどういう色にするかとか、事前に何色の種類を用意しておくかなどといった問題があります。 この問題に関しては、どのような方法をとるにしても、付いてくるものと言えます。 それを了解の上でなら・・・ 対象シートの、「シートモジュール」に以下のマクロをコピペすれば、実現可能と思います。 ※ 色に関しては、エクセルのcolorindexのカラーパレットから適当に20色を選定してあります。 (もしもパレットを変更なさっている場合は、その色が採用されます) ※ ナンバーの種類が設定の色数を超えた場合は、最初に戻って同じ色を使用します。 ※ 色数を増減したり色を変えたい場合は、5行目のicolorの設定を変えることで可能です。 private sub worksheet_change(byval target as range) dim dic, icolor, c, txt, cindex, tindex if intersect(columns(1), target) is nothing then exit sub icolor = array(4, 6, 7, 8, 17, 19, 20, 22, 24, 33, _ 35, 37, 38, 39, 40, 43, 44, 45, 46, 50) columns(1).interior.color = xlnone set dic = createobject("scripting.dictionary") cindex = 0 for each c in range(cells(2, 1), cells(rows.count, 1).end(xlup)) txt = c.text if txt <> "" and c.row > 1 then if dic.exists(txt) then tindex = dic(txt) else tindex = cindex cindex = (cindex + 1) mod (ubound(icolor) + 1) dic.add txt, tindex end if c.interior.colorindex = icolor(tindex) end if next c end sub