- ベストアンサー
sheetの比較処理
(条件)エクセルでsheet1、sheet2とsheet3があります。 なおsheet3はsheet1のコピーです。 (処理) sheet1、sheet2を(100行×7列)の範囲で各セルを比較し、 もし内容が違うのであれば、対応するsheet3セルを黄色で色付けしたい。 処理どうすればいいか。以上宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
条件付き書式ではその条件式で他のシートを参照することができないので、実現手段はマクロになると思います。 以下のマクロをALT+F11でVBE画面を開き、「VBAProjectエクスプローラのシート名右クリック」→「挿入」→「標準モジュール」で表示される画面にペーストして下さい。実行はシート画面に戻って、ALT+F8を押してマクロ一覧からマクロ名を選択して実行します。 実際のシート名が違う場合はマクロの3~5行目を修正して下さい シート名が合っていない場合はエラーとなりますが、そのエラー処理までは組み込んでいません Sub Macro1() Dim rng As Range Const sh1 As String = "Sheet1" '実際のシート1の名前 Const sh2 As String = "Sheet2" '実際のシート2の名前 Const sh3 As String = "Sheet3" '実際のシート3の名前 Sheets(sh3).Activate For Each rng In ActiveSheet.UsedRange If Sheets(sh1).Range(rng.Address).Value = _ Sheets(sh2).Range(rng.Address).Value Then rng.Interior.ColorIndex = xlNone Else rng.Interior.ColorIndex = 6 End If Next rng End Sub
その他の回答 (1)
- merlionXX
- ベストアンサー率48% (1930/4007)
VBAで行なう方法です。 以下をお試しください。 1.Altキー+F11キーでVisualBasicEditorを呼び出します。 2.メニューから挿入、標準モジュールで出てきたコードウィンド(右側の白い広い部分)に以下のコードをコピペします。 Sub test01() For c = 1 To 7 'A列からG列まで For r = 1 To 100 '1行目から100行目まで If Sheets("Sheet1").Cells(r, c) <> Sheets("Sheet2").Cells(r, c) Then '各セル比較 Sheets("Sheet3").Cells(r, c).Interior.ColorIndex = 6 '違ったら黄色に End If Next r '行を進め繰り返す Next c '列を進め繰り返す End Sub 3.Altキー+F11キーでワークシートへもどります. 4.メニューから、ツール、マクロ、マクロで出てきたマクロ名(test01)を選択して実行します。
お礼
目的にあった適切なご回答ありがとうございます。 おかげで解決いたしました。
お礼
目的にあった適切なご回答ありがとうございます。 おかげで解決いたしました。