dポイントプレゼントキャンペーン実施中!

先日別の質問に回答いただいた方、お礼の補足をせずに締め切ってしまいましたのでここでお礼をさせていただきます。無事、解決いたしました!本当にありがとうございました!

今度は条件付き書式について質問させていただきます。
同じ値のセルに塗りつぶしをする条件付き書式をVBA でつけたのですが、同じ値のセルに色をつけたものが連続してしまったときに別の色で塗りつぶされるようにしたいです。
今の状態とコードを貼りますのでアドバイスいただけたら助かります!
よろしくお願いします。

「VBA 条件付き書式について」の質問画像

質問者からの補足コメント

  • 事情があって画像は撮影したものですので見えにくかったら申し訳ありません。

    「VBA 条件付き書式について」の補足画像1
      補足日時:2017/02/21 12:48

A 回答 (1件)

こんにちは



回答がないようなので・・・

画像はパターンしかわかりませんし、コードはまったく読み取れませんね。
ご質問文のほうもよくわからないところがあるので、回答が付きにくいのではないかと推測します。
わたしも具体的な内容はさっぱりなので、想像による方法のみの回答しかできませんが、何かのヒントにでもなれば。


>条件付き書式について質問させていただきます
>条件付き書式をVBA でつけたのですが~
通常のエクセルの「条件付き書式」の設定の話であれば、VBAでも手作業でも1回だけ設定してしまえばよいので、わざわざVBAで行う意図がよくわかりません。

とりあえず、以下は「条件付き書式」の話してとして記述しています。

>色をつけたものが連続してしまったときに別の色で~
データのセットが行単位なのか列単位なのか不明ですが、行単位のことが多いと思いますので、「連続している」とは「連続した行に条件付き書式で塗色が設定された時」と解釈しました。(列単位の場合も要領はおなじです)

想像するところ、現状は『その行が条件に合えば、塗色(色A)を設定』という設定になっていると思いますが、条件付き書式は複数の条件を設定することができますので、連続を判断するには『その行が条件に合致し、かつ、前の行が条件に合致する場合は、異なる塗色(色B)を設定』という条件を追加すればよいです。
仮に、直接セルの塗色を指定したとしても条件付き書式の方が優先されますので、上記のように条件付き書式で処理をしきるか、あるいは条件付き書式をはずして塗色を直接指定するかのどちらかの方法になると思います。

ただし、上記は「連続していたら色Bにする」という指定になりますので、複数行で連続するブロックがあった場合、その先頭行は色A、次行以降は色Bになります。
(ご質問文からはこのあたりが読み取れませんでしたので)

そうではなくて、3行目も連続していたら色C(または色A)にしたいという意味でしたら、さらに前の行の条件合致状態も付け加えて・・・・
としていけば不可能ではありませんが、何行連続するのかわからない場合は、煩雑すぎますし、実用的とは言えません。


連続する行を複数の色(例えば2色とか3色)で順に繰り返したいというご質問であるのなら、上記の方法ではうまくいきませんので、簡単な方法として、作業列(または行)を用いるのが良さそうです。(直接設定できる方法もあるかもしれませんが、式が相当に面倒そうなので)

空いている列を作業列にします。(ビジュアル上見えたくなければ、設定後に列を非表示にすればよいでしょう)
作業列のセルに「その行が条件に合致しなければ0、合致した場合は(前の行+1)」となるように式を設定します。
これをオートフィルすると、合致が連続する行のブロックがあれば先頭行から順に1、2、3…と表示されるはずです。(合致しない行は0表示)

条件付き書式の設定では、
 作業列の値が0ではなく除余が1なら色A
    〃          2なら色B
     ・・・・・・
という設定にしておくことで可能になります。


ご質問文の「条件付き書式」というのはミスディレクションで、ご質問の内容がVBAで直接塗色を設定している場合という意味でしたら、上記の作業列に該当することをプログラムで行えばよいでしょう。

VBAの処理の場合は、想像するところ、各行を順にループで処理しているものと思いますので、
例えば、合致の連続を数えるカウンタ(=変数)を用意しておいて、
 条件に合致しなければカウンタをクリア
 条件に合致しているときはカウンタをインクリメント
するようにしておきます。
塗色を決める際に、カウンタの数値に対する(色数の)徐余を求め、その値で色を決めるようすることで、連続する行の塗色が順に変わることになります。


※ 現状が実際にどうなっているのかわからないので、とりあえず、思いつくままにいろいろ書いてしまいました。
可能性がいろいろ考えられるので、長文になってしまい、失礼いたしました。
    • good
    • 0
この回答へのお礼

ありがとう

色々と分かりにくい質問で申し訳ありません。わざわざVBAにしたのは他の作業も一気に行いたかったのとブックが毎月違うものになるためです。

今は条件付き書式で色をつけているのですが、他の方法でもできるのではと思いましたので調べて試してみようと思います。
回答いただきありがとうございました!

お礼日時:2017/02/22 18:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!