Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7285 / 13646 ツリー ←次へ | 前へ→

【40090】2つの数字を比べてセルに色づけしたい cancan 06/7/6(木) 20:42 質問[未読]
【40092】Re:2つの数字を比べてセルに色づけしたい たけ 06/7/6(木) 20:54 発言[未読]
【40093】Re:2つの数字を比べてセルに色づけしたい cancan 06/7/6(木) 21:06 発言[未読]
【40101】Re:2つの数字を比べてセルに色づけしたい たけ 06/7/6(木) 22:09 発言[未読]
【40102】Re:2つの数字を比べてセルに色づけしたい たけ 06/7/6(木) 22:10 発言[未読]
【40100】Re:2つの数字を比べてセルに色づけしたい ichinose 06/7/6(木) 21:53 発言[未読]
【40107】Re:2つの数字を比べてセルに色づけしたい cancan 06/7/6(木) 23:06 お礼[未読]

【40090】2つの数字を比べてセルに色づけしたい
質問  cancan  - 06/7/6(木) 20:42 -

引用なし
パスワード
   こんばんは。
質問させてください。
AとBの列にしたのような値が入っています。
A   B
15%  20%
23%  25%
40%  29%
25%  24%

Bの方が+3%であれば両方のセルを青色、 -3%であれば赤色としたいです。

if Range("B1")-Range("A1")>3 then
   Range("A1").Interior.ColorIndex=34
   Range("A1").Interior.ColorIndex=34
End if
では、うまくいきませんでした。
また"3%"とも書くことができませんでした。
どなたかご教授お願いします。

【40092】Re:2つの数字を比べてセルに色づけしたい
発言  たけ  - 06/7/6(木) 20:54 -

引用なし
パスワード
   ▼cancan さん:
>こんばんは。
>質問させてください。
>AとBの列にしたのような値が入っています。
>A   B
>15%  20%
>23%  25%
>40%  29%
>25%  24%
>
>Bの方が+3%であれば両方のセルを青色、 -3%であれば赤色としたいです。

回答ではないですが、分からないことがあります。
A列B列に入っているデータはどのようなデータが入っているのでしょうか?
表示形式で%にしているとしたら、14.8%も15%と表示されていることも考えられますよね。
もしくは、計算式が入っているかもしれませんよね?

文字列として入ってるのであれば、%の前の数字部分で比較をすればいいと思います。
計算式が入っているのであれば、計算値で比較すればいいと思います。

+3%というのが、表示形式で小数点部分が丸まっている場合にどこまで見るのかもあると思います。

【40093】Re:2つの数字を比べてセルに色づけしたい
発言  cancan  - 06/7/6(木) 21:06 -

引用なし
パスワード
   わかりやすくと15%と書かせていただいたのですが
小数第2まで表示させるようにしています。
実際は14.97%と表示形式入っています。

シート上は%の表示が必要なのですが
コードではどうように書けばよいのでしょうか?

【40100】Re:2つの数字を比べてセルに色づけしたい
発言  ichinose  - 06/7/6(木) 21:53 -

引用なし
パスワード
   こんばんは。

>AとBの列にしたのような値が入っています。
>A   B
>15%  20%
>23%  25%
>40%  29%
>25%  24%
>
>Bの方が+3%であれば両方のセルを青色、 -3%であれば赤色としたいです。
>


まず、プロパティはきちんと記述する癖をつけましょう!!
3%って、0.03のことですよね?
だったら・・・、

if Range("B1").value-Range("A1").value>0.03 then
>   Range("A1").Interior.ColorIndex=34
>   Range("A1").Interior.ColorIndex=34
>End if


これで概ねは大丈夫ですが・・・。

これだとA1に31.81%  B1に34.81% なんて入力された場合でも
色が付いてしまいます。本来なら、付きませんよね?


If CDec(Range("B1").Value) - CDec(Range("A1").Value) > CDec(0.03) Then
   Range("A1").Interior.ColorIndex = 34
   Range("b1").Interior.ColorIndex = 34
End If

とすると、小数第2位の指定なら、正しく色を付けてくれます。


>では、うまくいきませんでした。
こういう曖昧な記述は止めましょう!!

 A1に31% B1に35%と入力して、
プログラムを実行してもセルに色を付けてくれません。

または、

プログラムを実行したところ、

xxxxxxxxxx
の行でエラーメッセージが「xxxxxx」と表示され、
プログラムは止まってしまいました。


とはっきりと記述してください。

【40101】Re:2つの数字を比べてセルに色づけしたい
発言  たけ  - 06/7/6(木) 22:09 -

引用なし
パスワード
   ▼cancan さん:
>わかりやすくと15%と書かせていただいたのですが
>小数第2まで表示させるようにしています。
>実際は14.97%と表示形式入っています。
>
>シート上は%の表示が必要なのですが
>コードではどうように書けばよいのでしょうか?

試してないので分かりませんが、
表示形式で小数点2位までの%で表示しているとしたら、

A列 14.968%
B列 17.974%
上記のようなデータは
A列 14.97%
B列 17.97%
と表示されますよね?

もし、range("B1").value-range("A1").value=0.03 としてIFステートメントで判定した場合、上の例ではFalseを返しますよね。
セルの表示では3%の違いかもしれませんが、実際のデータでは微妙に違うということがありえますよね?

Textプロパティだったら大丈夫なのかな??

私だったらTextプロパティで値を拾って数値化して引き算して0.03ならって感じでやると思います。

【40102】Re:2つの数字を比べてセルに色づけしたい
発言  たけ  - 06/7/6(木) 22:10 -

引用なし
パスワード
   ▼cancan さん:
>わかりやすくと15%と書かせていただいたのですが
>小数第2まで表示させるようにしています。
>実際は14.97%と表示形式入っています。
>
>シート上は%の表示が必要なのですが
>コードではどうように書けばよいのでしょうか?

ゴメンなさい。
質問の意味を間違って考えていました。
+3%以上ならって意味なんですね。
ichinoseさんの書き込みを見て理解しました。
ぴったり+3%ならって意味と思ってました。

ヘンな書き込みをして申し訳ありませんでした。

【40107】Re:2つの数字を比べてセルに色づけしたい
お礼  cancan  - 06/7/6(木) 23:06 -

引用なし
パスワード
   ご丁寧な回答ありがとうございました。
以後、書き方には気をつけます。
わかりにくい文章からご理解下さり、感謝です。

7285 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free