海外旅行から帰ってきたら、まず何を食べる?

一列の中を条件によって3色に色分けする方法を教えてください。

以下の条件で色分けをしたいと思っています。
======
1、空白のセルは無色(なにもしない)
2、文字の入っているセル 及び それに続く↓の入っているセルは同じ色
3、特定の文字 及び それに続く↓のセルは同じ色で条件2とは違う色
======

条件付書式の設定で、
*文字の入っているセルに色をつける、空白のセルには色をつけない
 ⇒条件1と2はクリア
*特定の文字が入っているセルに条件2とは別の色をつける
 ⇒条件3の半分はクリア
まではできたのですが、”特定の文字に続く↓のセルに特定文字と同じ色をつける”方法が
わかりません。

・特定の文字以外は全くのランダムな文字になります
・文字に続く↓のセル数は時々でバラバラです

VBAはスキルがなくわかりません。
条件付書式でこのような設定は可能でしょうか。

完成は添付のイメージです。

宜しくお願いします。

「Excelの表で、条件により一列を3色に」の質問画像

A 回答 (9件)

解決しないようですね。


他に回答も出ていますが、「特定の文字」で、どの回答もうまくいかないように思います。
繰り返しになり恐縮ですが、この規則を固持するのであれば、やはり作業列を使わないと出来ないと思います。どんなアプリにも出来る事の限界がありますので。
右の見えない部分を作業列にして非表示にするか、もしくはこの際マクロにするか、どちらかしかないのでは。
マクロであれば表に何かを書き込むのではないので「万一壊れる」と言った心配はしなくていいと思います。
    • good
    • 0
この回答へのお礼

jmuinyさん

やはり作業列が必須になってしまいますね。
ありがとうございました。

お礼日時:2016/07/12 11:36

No.8の補足です。

作業列の挿入が難しいようですが、同じシートでの挿入が難しい場合は、
下記のC列の部分だけを別シートに切り出してしまいましょう。
で、見た目が悪いと思うので、そのシートを非表示にしてしまえば良いかと思います。

がんばってくださいね☆
    • good
    • 0
この回答へのお礼

Kikukohasodatuさん

回答、ありがとうございます。
確かに、↓の一つ上は必ず同じ色です。

ヒントをありがとうございました。

お礼日時:2016/07/12 11:37

シンプルに考えましょう。



まず↓の元の色は何個も上かもですが、↓の一つ上は必ず同じ色です。
なので、行数のところをROW()-1でにするという考え方です。

じゃあ色の取得はどうすんの?という部分ですが、
ここは素直にもう1列、C列を追加しましょう。

んで、C2には=IF(B2="↓",B1,B2)を入力して、あとは下に全部コピーしておきましょう。
※関数が一つ上のセルが存在することが前提なのでC1だけは空で。

こうすると、たとえばC3からC5がが全て"ア"になりますよね?

あとはこれまでの条件付き書式のみで、参照先だけをC列に移動してあげれば
期待通りの結果が得られると思います。
    • good
    • 0

>数式を入れてみたのですが、どうしても“A”に続く↓に赤色をつけることができませんでした。


XL2003では、条件1が成立すると条件2、3は判定しません。
XL2007以降は、そのチェックがあったはずなので確認してください
また、条件付き書式を設定するとき、必ずB1セルから選択して、B1セルがアクティブセルとなっていることを確認してください

=LOOKUP("ーー",IF(B$1:$B1<>"↓",B$1:B1))="A"
の部分をC1セルに入れて、[Ctrl]+[Shft] +[Enter] で確定、配列数式。{ }で挟まれる
下へオートフィルし、どのような結果が得られるかを
確認しておくと動きも分かりやすいかと思います
    • good
    • 0
この回答へのお礼

CoalTarさん

早速の補足をありがとうございました。

お礼日時:2016/07/12 11:36

xl2003なので操作が違うかとは思いますが、



B1セルから下へ範囲選択して [Alt]+[O] → [D]条件付き書式
条件(1) セルの値が 次の値に等しい =""
 書式設定なし
条件(2) 数式が =LOOKUP("ーー",IF(B$1:$B1<>"↓",B$1:B1))="A"
 書式 赤
条件(3) セルの値が 次の値に等しくない ="A"
 書式 青

ただし、範囲が広いと計算速度が遅くなる可能性があります。
「Excelの表で、条件により一列を3色に」の回答画像5
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
数式を入れてみたのですが、どうしても“A”に続く↓に赤色をつけることができませんでした。
“A”が常にトップにあるわけではないのですが、そこが原因でしょうか。

お礼日時:2016/07/07 11:48

=AND(LOOKUP(1,0/(SUBSTITUTE(B$1:B1,"↓","")<>""),B$1:B1)="A",B1<>"")



とすればいい気がしますけど B列が手入力なら

=AND(RIGHT(SUBSTITUTE(PHONETIC(B$1:B1),"↓",""))="A",B1<>"")

でもいいかと思います。 Excel2016なら PHONETICの代わりに CONCAT関数
を使えば 数式の結果だったとしても問題ありません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
教えて頂いた数式を当てはめてみたのですが、うまくいきませんでした。
私の表の記入方法が悪かったのですが、“A”が常にトップにあるわけではないので、そこが原因でしょうか。
今回は他の方法でやってみようと思います。

お礼日時:2016/07/07 11:39

作業列を使わなくてはできないのであれば、ママチャリ様の作業列式の方が、その後の設定数式が簡単になりますね。



一応、修正してみたものを書いておきます。

C1 は =B1
C2 =IF(B2="","",IF(B2<>"↓",B2,C1)) 下へコピー

条件付き書式設定は2個だけになります。

=COUNTIF($D$1:$D$3,C1) ピンク
=AND(B1<>"",COUNTIF($D$1:$D$3,C1)=0) ブルー

どうしても作業列NGならマクロになるかと。
マクロでもいいならコード書きますが。
    • good
    • 0
この回答へのお礼

jmuinyさん、早速のご回答、ありがとうございます。
作業列の使用という方法は“なるほど”と思いました。
ただ、今回に関しては作業列の使用は難しい状況です。

マクロは知識が全くないので、使用する自信がありません。
今回の表は頻繁に更新するもので、なおかつ更新者も限定されていないので、万が一、崩れてしまった時に対応ができないと思うので・・・

次回以降の参考にさせていただきます。
ありがとうございました。

お礼日時:2016/07/04 10:49

No.1 jmuinyさんのおっしゃる通り、関数で行うには作業列を使わざるを得ないと思います。


C1セルに次の数式を入力して、下に引っ張れば、"↓"が直前の文字で表示されます。
表示された文字を条件付き書式の判定にご使用下さい。

C1セル =IF(B1="↓",OFFSET(C1,-1,0),B1)
    • good
    • 0
この回答へのお礼

ママチャリさん、ご回答、ありがとうございます。
今回は作業列の使用が難しいので、次回の参考にさせていただきます。

お礼日時:2016/07/04 10:49

作業列を使わないと難しいと思います。


急ぎとの事なので、一応回答します。他の回答がなければ参考にして下さい。

特定の文字というのはD1~D3に入っているとします。
C列を作業列にします。
C2
=IF(B2<>"↓","",IF(OR(C1=1,COUNTIF($D$1:$D$3,B1)),1,2))
下へコピー

条件付き書式は4つです。いずれも数式

範囲B1~下
=COUNTIF($D$1:$D$3,B1) ピンク
=AND(B1<>"",B1<>"↓",COUNTIF($D$1:$D$3,B1)=0) ブルー

範囲B2~下
=AND(B2="↓",C2=1) ピンク
=AND(B2="↓",C2=2) ブルー
    • good
    • 0

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


おすすめ情報