• ベストアンサー

下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 ・    ・       ・    ・    ・       ・  

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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

oshietecho-dai
質問者

お礼

こんばんわ。 ご回答、誠に有難うございました。 おっしゃられる通りです。VBAだけしか頭にありませんでした。 ご詳細、大変に恐れ入ります。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

書式ー条件付き書式ー数式がで 対象セル範囲C,D列を範囲指定して、 =VALUE(RIGHT($C2,4))>$D2 #1のご回答と似てますが、範囲指定して、条件付書式を指定する場合は、$が要るようです。 ーー Range("C2:D2").Select この質問はエクセルVBAの質問ですか。それならそれを明確にしないと。

oshietecho-dai
質問者

お礼

ご回答、誠に有難うございました。 VBAだけしか頭にありませんでした。 ごていねいに有難うございました。

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.1

「条件付書式」で、「式が」を =VALUE(RIGHT(C2,4))<=D2 で、どうでしょうか

oshietecho-dai
質問者

お礼

ご回答、誠に有難うございました。 バッチリです。 皆様が満点でした。 未熟な者が採点しますことを、ご了承下さいませ。

関連するQ&A