- ベストアンサー
下4桁を比較し、小さい値のセルだけを赤色に塗りつぶすには?
"C2:D2" から下へ、 「 連続したデータがあるセル 」 を選択してから、 C列 と D列 の 「 各値の下4桁だけ 」 を 行ごとに 比較し、 「 D列の値が 同じ か 小さいセルだけ 」 を 「 赤色に塗りつぶす 」 にはどのように記述すればよろしいでしょうか? 下記例の場合、 ”D2” と ”D4” のセルだけが 「 赤色に塗りつぶす 」 ことになります。 どうか、ご教示くださいませ。 -------------------------- Range("C2:D2").Select Range(Selection, Selection.End(xlDown)).Select ・ ・ -------------------------- C列 D列 1 あ い 2 た112222 1111 3 ち114444 5555 4 つ116666 6666 ・ ・ ・ ・ ・ ・
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 私も、このレベルのものは、条件付き書式でよいと思います。 マクロがご指定のようにも思えます。 >Range("C2:D2").Select >Range(Selection, Selection.End(xlDown)).Select oshietecho-daiさんの VBAも、もう始めてからかなりの期間が経ちますから、そろそろ、Select で、指定してつなげる方法は、卒業してもよいかもしれませんね。私の持論ですが、VBAの基本(上級文法まで)は、だいたい3ヶ月で終わります。 ただ、以下のように書くのは、また別問題です。エラー処理を限りなく施すというのは、相手の状況が見えていないからです。後々、エラーが出て、継ぎ足していくのは避けたいからです。本来は、もっと簡単でよいと思います。 '標準モジュール Sub TestRng1() Dim c As Range Dim i As Variant Dim j As Variant Dim rng As Range Set rng = Range("C2", Range("C2").End(xlDown)) rng.Interior.ColorIndex = xlNone For Each c In rng If Not IsEmpty(c) Then i = Right(c.Value, 4) j = Right(c.Offset(, 1).Value, 4) If IsNumeric(i) And IsNumeric(j) Then If CLng(i) >= CLng(j) Then c.Interior.ColorIndex = 3 ' 赤 End If End If End If Next c Set rng = Nothing End Sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
書式ー条件付き書式ー数式がで 対象セル範囲C,D列を範囲指定して、 =VALUE(RIGHT($C2,4))>$D2 #1のご回答と似てますが、範囲指定して、条件付書式を指定する場合は、$が要るようです。 ーー Range("C2:D2").Select この質問はエクセルVBAの質問ですか。それならそれを明確にしないと。
お礼
ご回答、誠に有難うございました。 VBAだけしか頭にありませんでした。 ごていねいに有難うございました。
- ASIMOV
- ベストアンサー率41% (982/2351)
「条件付書式」で、「式が」を =VALUE(RIGHT(C2,4))<=D2 で、どうでしょうか
お礼
ご回答、誠に有難うございました。 バッチリです。 皆様が満点でした。 未熟な者が採点しますことを、ご了承下さいませ。
お礼
こんばんわ。 ご回答、誠に有難うございました。 おっしゃられる通りです。VBAだけしか頭にありませんでした。 ご詳細、大変に恐れ入ります。