[[20160919234750]] 『条件付き書式について』(どんべい) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『条件付き書式について』(どんべい)

    Range("a2:a100").Select
     Selection.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
        Formula1:="=$a1*1.5", Formula2:="=$a1*1.99"
    Selection.FormatConditions(1).Interior.ColorIndex = 37

A列にランダムに数字が入っており、それに上記のような条件付き書式を設定しました。直上のセルを参照して色をつけています。質問は0の入ったセルの下に色がついてしまうのでつかないようにしたいのです。ご教示をお願いします。

< 使用 Excel:Excel2007、使用 OS:Windows7 >


 >質問は0の入ったセルの下に色がついてしまう

 どうして、一概にそう言えるのですか?

 直上のセル値の1.5〜1.99倍ですから、
 直上のセル値が0なら 0〜0倍 なので、

 自セルが「0か未入力」以外だったら、色は付かないでしょう?

(半平太) 2016/09/20(火) 08:16


一例です。

    Sub 一例()
    With Range("a2:a100")
     .FormatConditions.Delete
     .FormatConditions.Add Type:=xlExpression, _
     Formula1:="=AND($A1*1.5<=$A2,$A1*1.99>=$A2,$A1<>0)"
     .FormatConditions(1).Interior.ColorIndex = 37
    End With
    End Sub

(x-ab) 2016/09/20(火) 08:45


x-abさん回答ありがとうございます、が、うまくいきませんでした。半平太さん私もそう思ったんですがなぜか色がついてしまうのです
(どんべい) 2016/09/20(火) 23:33

コードを載せるのではなく条件を具体的に文章で提示する方が間違いが無いと思いますが。

(?) 2016/09/20(火) 23:44


?さん回答ありがとうございます、うまく説明できるかわかりませんがやってみます。
セルA1からセルA100までA列にランダムに数値が入っており、0も入ります。これに条件付き書式を使って色をつけます。

条件その1 直上のセルを参照して1.5倍以上1.99以下なら青色をつける(セルA5ならセルA4の1.5倍以上1.99以下あればセルA5に青色がつきます)

条件その2 直上のセルを参照して2倍以上なら青色をつけ、かつ太字で強調する

条件その3 直上のセルを参照して直上のセルより小さい数値の場合赤色をつける

以上なのですが、ここまでは私もできました。質問は0の入ったセルの下に青色がついてしまうのでつかないようにしたい、ということです。直上セルが0ならば何を掛けても0なので色はつかないはずなのですが、ついてしまうのです。ひきつづきご教示をお願いします
(どんべい) 2016/09/21(水) 00:27


これでできると思います。
※条件1を満たす、自身のセル値の最大値を
(直上セル値の1.99倍以下)から
(直上セル値の2倍未満)に変更しています。

Sub マクロ()

    With Range("a2:a100")
     .FormatConditions.Delete

     .FormatConditions.Add Type:=xlExpression, _
     Formula1:="=AND($A1*1.5<=$A2,$A1*2>$A2,$A1<>0)"

     .FormatConditions.Add Type:=xlExpression, _
     Formula1:="=AND($A1*2<=$A2,$A1<>0)"

     .FormatConditions.Add Type:=xlExpression, _
     Formula1:="=$A1>$A2"

     .FormatConditions(1).Interior.ColorIndex = 37
     .FormatConditions(2).Interior.ColorIndex = 37
     .FormatConditions(2).Font.Bold = True
     .FormatConditions(3).Interior.ColorIndex = 3
     End With

End Sub

(x-ab) 2016/09/21(水) 01:57


 条件を数式で与えてはいかがでしょう。

    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=AND(A1<>0,A2>=A1*1.5,A2<A1*2)"

(β) 2016/09/21(水) 06:07


 おはようございます。

 解決策は他の皆さんから数式での条件指定方法が出てるので省きますが、青色になる理由だけ説明します。

 >条件その1 直上のセルを参照して1.5倍以上1.99以下なら青色をつける(セルA5ならセルA4の1.5倍以上1.99以下あればセルA5に青色がつきます) 
 >条件その2 直上のセルを参照して2倍以上なら青色をつけ、かつ太字で強調する 

 条件1条件2どちらも同じ理由ですが、
 Type:=xlCellValue,Operator:=xlBetween,Formula1:="=$a1*1.5",Formula2:="=$a1*1.99"
 の条件指定方法では、計算式の結果と比較します。
 A1*1.5 は、A1が0の時は、0*1.5=0になります。
 この結果の0と比較してるので、0や空白の下のセルが0や空白だった場合青色になります。

 もう一つA1が0以外と言う条件を与えてあげなければいけません。

(sy) 2016/09/21(水) 07:13


こんにちは。

>条件その1 直上のセルを参照して1.5倍以上1.99以下なら青色をつける
(0以上0以下なら青色、つまり0なら青)

>条件その2 直上のセルを参照して2倍以上なら青色をつけ、かつ太字で強調する
(0以上なら青色太字、つまり正の数なら青太)

負の数はないのでしょうかね。
で結局つねに青色になっているかと。



素朴な疑問です。
たとえば1の下に3があったら、2倍以上で青の太字、
でも0の下に3の場合は色づけなし?
1が3になるより0が3になるほうがジャンプアップなのに
構わないのでしょうか。 ちょっと不思議な感じです。

( 佳 ) 2016/09/21(水) 07:37


 To 佳さん

 もう電車で確認出来ないけど、条件2が2倍以上なので、
 A2>=A1*2に該当するので青と太字になると思いますよ。

(sy) 2016/09/21(水) 07:46


 説明に不備があったので補足です。

 xlCellValueの条件がダメでは無くて、以上以下の指定の場合は
 計算結果の0が含まれるので、0の回避策が必要と言う事です。

 より大きいや未満の場合は0を含まないので、回避策は必要ありません。

(sy) 2016/09/21(水) 07:53


条件の中で 1.99以下というのは 2未満では
青になってしまうのでそうしているのではないのでしょうか?

0.1 --> 0.2
1 --> 2
2 --> 4

      :

等で青くなってしまうのですが

EXCEL2013です
(?) 2016/09/21(水) 11:05


それと、実際はどんな数字を入力するのかな?

整数?
実数なら小数何桁まであるのか?

それによって 1.99 〜 2  倍までの場合の対応が変わるのかな?
(?) 2016/09/21(水) 11:13


※条件1を満たす、自身のセル値の最大値を
(直上セル値の1.99倍以下)にすると

1.99倍より大きくて、且つ、2倍より小さいデータは
塗りつぶしの対象外になります。

1倍以上、且つ、1.5倍より小さいデータ
(どの条件も満たさないので、塗りつぶしなし)と
区別ができなくなるという理由で
最大値を2倍未満としました。
(x-ab) 2016/09/21(水) 12:45


数値 、詳細な条件に関してはに関してスレ主さんから解答がないと解決しないでね。
(?) 2016/09/21(水) 13:12

こんにちは。

To syさん
コメントありがとうございます。ことばが足りなかったかもしれません。

現状仰るとおりで、質問はそれを回避したいと。
でも回避だけでいいの?
(暗黙的に)色なしは1.5倍未満では? という認識です、わたしは。

( 佳 ) 2016/09/21(水) 14:51


 To 佳さん

 こんばんわ。

 あぁ、要件は0の下が3などの時に色なしにしたいと言う事だけど、1と3の差よりも大きいので色なしにして良いのかと言う事だったんですね。

 どうなんでしょうねぇ?

 条件1・2・3どれも不具合出そうですね。

 質問者さんへ

 例えば以下のような場合、それぞれ何色になれば良いですか?

     A
  1 空白
  2 空白
  3  0
  4 空白
  5  1
  6 空白
  7  -1
  8 空白
  9  0
 10  0
 11  1
 12  0
 13  -1
 14  0
 15 1000
 16 1991

(sy) 2016/09/21(水) 19:33


こんばんは、多くの方々にご回答頂き誠にありがとうございます。
みなさんから疑問がいくつか出ていますが、例を出し、ひきつづきご教示をお願いしようとおもいます。

左の列はA1よりA10まで数値が入っています、この場合こうなって欲しいというのを右の列に書きます。
0   →ナシ
10  →ナシ(0の下なので) 
11.7 →ナシ
45.5 →青線+太字
22  →赤線
0   →ナシ
28.4 →ナシ(0の下なので)
50.2 →青線
94.6 →青線
110 →ナシ 
数値は実際と同じです、整数もしくは少数第1位までです。
(どんべい) 2016/09/21(水) 22:04


 28.4
 56.7 約1.996倍

 この場合はどうなるんですか?
 今のご提示の条件では色が付きませんが?

 後、マイナスは無いのと、0と空白はイコールと言う事で合ってますか?

 何となく条件式的には以下のような感じなのかな?
 青線の条件式 =AND(A2>=A1*1.5,A2<A1*2)
 太字の条件式 =AND(A2>=A1*2,A1<>0)
 赤線の条件式 =AND(A1>A2,A2<>0)
 皆さんから提示あるように、TypeはxlExpressionで

(sy) 2016/09/21(水) 23:36


syさん回答ありがとうございます。
↑の数値だと確かに色がつきませんでした、2倍未満としなければいけないのですね。

負の数はありません、それから0と空白はイコールと言う事で合ってますか?と、いうのはどういうことでしょうか?
私の考えでは0が入っているセルは、0という数値が入ったセルと数え、空白セルは数えません。

↑の私の例では、数値の入っているセルは10、空白セルが1つあるなら9としています。
(どんべい) 2016/09/22(木) 00:59


みなさんの回答を参考にして以下のようにしてみましたところ、うまくいきました。みなさんありがとうございました。
Range("A2:A10").Select
Selection.FormatConditions.Add Type:=xlExpression, Operator:=xlBetween, _
        Formula1:="=AND($A1*1.5<=$A2,$A1*2>$A2)"
Selection.FormatConditions(1).Interior.ColorIndex = 37
Selection.FormatConditions.Add Type:=xlExpression, Operator:=xlGreaterEqual _ 
        , Formula1:="=AND($A1*2<=$A2,$A1<>0)"
    With Selection.FormatConditions(3).Font
        .Bold = True
        .Italic = False
        .ColorIndex = xlAutomatic
    End With
    Selection.FormatConditions(2).Interior.ColorIndex = 37
Selection.FormatConditions.Add Type:=xlExpression, Operator:=xlLessEqual, _ 
        Formula1:="=AND($A1>$A2,$A2<>0)"
    Selection.FormatConditions(3).Interior.ColorIndex = 3
(どんべい) 2016/09/22(木) 01:24

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.