• 締切済み

2つの行を比較して、同一セルのみ色をつける方法

何だかお世話になりっぱなしで、申し訳ない感じなのですが、またよろしく御願いします。 シート1の1行目と、シート2の1行目を比較して、同じ数字があればそのセルに色をつけるということはできますでしょうか。 同じく2行目以降も、シート1とシート2の同じ行を比較していき、同じ数字があればセルに色を付けていくようにしたいと思ってます。 <例> シート1の1行目 「1」「2」「3」「4」「5」 と各セルに入っているとします。(セルには数字のみ入っています) シート2の1行目 「4」「5」「9」「10」「15」 と入っていた場合、「4」「5」のセルのみに色を付けると言うことです。 シート1,2の各行のセルに記入されている数字は、あらかじめ決まっている数字ではなく、あとで付け足していきます。 ですが、シート1とシート2で比較する行は同一であり、シート1の5行目であれば、シート2の5行目と比較。 ネットでいろいろと調べてみたのですが、特定の数字があった場合にセルに色をつけるというものはありましたが、私が思っているようなことはできないようでした。

みんなの回答

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

#4です。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) i = Target.Row For j = 1 To 10 For k = 1 To 10 If Sheet1.Cells(i, j) = "" Then Exit For If Sheet1.Cells(i, j) = Sheet2.Cells(i, k) Then Sheet1.Cells(i, j).Interior.Color = RGB(255, 222, 0) End If Next k Next j End Sub 済みません朝の時間がないので、十分テストできません。 SelectionChangeイベントは使うのが怖いのですが、それ以外が思いつかなくて。

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

例えば10列(A-J列)をチェックするとして 下記で良いと思います。 ただ行、列数が多くなると時間がかかるかもしれません。 Sub test01() d = Sheet1.Range("a1").CurrentRegion.Rows.Count For i = 1 To d For j = 1 To 10 For k = 1 To 10 If Sheet1.Cells(i, j) = Sheet2.Cells(i, k) Then Sheet1.Cells(i, j).Interior.Color = RGB(255, 222, 0) End If Next k Next j Next i End Sub セルに色をつけていますが、RGB値は適当にセットしてください。

cuty_girl
質問者

お礼

御回答ありがとうございます。 思うような処理ができました(^^) あと1つ質問なんですが、この処理をいつもアクティブな状態にするには、どのようにしたら良いでしょうか。 新しく数値が入力されるたびに、自動的に比較してセルに色を付けれたらいいな、と思っています。 いろいろと調べてみましたが、ユーザー定義関数を自動再計算する方法はあったのですが、この場合はユーザー定義関数を使用していないので、その方法も使えないですし。 あと少しアドバイスを頂けると助かります。 よろしく御願いします。

  • dejiji-
  • ベストアンサー率38% (327/858)
回答No.3

例えばシート1のA1からG1に参照する数値が入っているとすると シート2の使用していないセル(比較するすぐ下のセル)A1に =LOOKUP(A1,Sheet2!$A$1:$G$1) と入力して、シート2のA1からG1にコピーします。 シート2のA1に条件付書式を設定します。 「セルの値が」「次の値に等しい」「=A2」とし、書式の設定。後は、式を入力したセルを非表示にする。 この場合、参照するセルの値を必ず並べ替えで順番に並べ替えておかないと駄目です。(配列を使用しているためですのであしからず。)

cuty_girl
質問者

お礼

御回答ありがとうございます。 別シートの参照方法は、「「=Sheet1!A1」」を使用すれば簡単に出来そうです。 ですが、個別にセルを参照するにはLOOKUP関数を使用した方がよさそうですね。 アドバイスして頂き、有難うございます。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 Excel2000の場合ですが、 条件付き書式では、別のシートを参照することが出来ないので、そのままでは無理です。 方法としては、シート2のどこか使用しないところにシート1の値をリンクします。 例えば、シート2のO~S列にシート1のA~E列をリンクします。 (O1に「=Sheet1!A1」と入力して右・下へコピー) そしたら、シート2のA~E列を範囲選択して、メニューの[書式]→[条件付き書式]で、 「数式が」 「=AND(LEN(A1)<>0,COUNTIF($O1:$S1,A1)>0)」 と設定して、書式を設定します。 これ以外の方法だと、VBAを使用するしかないと思われます。

cuty_girl
質問者

お礼

御回答ありがとうございます。 シート1の値を、比較するシートの方にリンクした方が良いのですね。 先程、この方法で試してみたら思うように処理させることができました。 後は「=AND(LEN(A1)<>0,COUNTIF($O1:$S1,A1)>0)」が何を意味しているのか、調べてみるだけです。 良く「A1」と出てきますが、これはR列の1行目ということでしょうか。 エクセルは奥が深いですね。 勉強してみます。

  • rx-78gp03
  • ベストアンサー率43% (138/314)
回答No.1

ソフト名とバージョンが書いてないので適当な解答ができません。 ちなみにEXCELの2002であればメニューの書式から条件付書式で可能ですが・・・・

cuty_girl
質問者

お礼

御回答ありがとうございます。 ソフト名はエクセル98でした。 今後はソフト名をバージョンを記述するようにします。 バージョンが違うと、使えない関数やVBAはあるのでしょうか? まだまだ勉強不足の私ですが、また御質問させて頂くことがあると思いますが、その時はよろしく御願いします。

関連するQ&A