プロが教えるわが家の防犯対策術!

Excelに関する質問です!

過去と現行の2枚のシートを比較して、異なるセルを手っ取り早く見つける方法はないでしょうか?
具体的な要望は下記の通りです。

1現行のシートには、過去のシートにはない新規のセルがあるため、そのセルのみ赤でハイライトしたい
2過去のシートには、現行のシートからは削除されたセルがあるため、そのセルのみ青でハイライトしたい
※各値は4列×2行で記載されているものとします!
※イメージはこんな感じです。間違い探しみたいなことを自動的にやりたいです!

現行シート
青木 佐藤 山田 田中
川井 鈴木 山村 三島
過去シート
渡部 青木 佐藤 山田
田中 川中 山村

目視でやりたいところですが、それには量が多いため、しんどいです。また、ルーティンワークになる可能性が大なので、いつか間違えそうです…。
どなたか良い方法をご存じであれば教示いただきたいです。
尚、目視しかないという回答でも大丈夫です。宜しくお願いします!

質問者からの補足コメント

  • 補足させてください!
    2行4列と申し上げましたが、実際にはこれを1テーブルと数えると20個近くあります。

      補足日時:2016/04/16 00:00
  • 補足させてください!
    2行4列とは申し上げましたが、これを1テーブルと数えると、各シートに20テーブルほど存在する前提でご回答いただけますと幸甚です(/´△`\)

      補足日時:2016/04/16 00:02

A 回答 (3件)

こんばんは!



>各シートに20テーブルほど存在する

どのような配置で存在しているのか判りませんが、
↓の画像のように連続しているものとします。

VBAになりますが一例です。
Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)
マクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub Sample1() 'この行から//
Dim i As Long
Dim myArea1 As Range, myArea2 As Range
Dim c As Range, r As Range, myFound1 As Range, myFound2 As Range
Dim wS1 As Worksheet, wS2 As Worksheet
Set wS1 = Worksheets("Sheet1")
Set wS2 = Worksheets("Sheet2")
wS1.Range("A:D").Interior.ColorIndex = xlNone
wS2.Range("A:D").Interior.ColorIndex = xlNone
For i = 1 To wS1.Cells(Rows.Count, "A").End(xlUp).Row Step 2
Set myArea1 = wS1.Cells(i, "A").Resize(2, 4)
Set myArea2 = wS2.Cells(i, "A").Resize(2, 4)
For Each c In myArea1
If c <> "" Then
Set myFound1 = myArea2.Find(what:=c, LookIn:=xlValues, lookat:=xlWhole)
If myFound1 Is Nothing Then
c.Interior.ColorIndex = 3 '←赤
End If
End If
Next c
For Each r In myArea2
If r <> "" Then
Set myFound2 = myArea1.Find(what:=r, LookIn:=xlValues, lookat:=xlWhole)
If myFound2 Is Nothing Then
r.Interior.ColorIndex = 8 '←水色
End If
End If
Next r
Next i
End Sub 'この行まで//

※ 「青」だと文字が見えにくいので「水色」にしています。
※ 配置が1行でも異なれば全く意図しない動きになります。
※ 関数でないのでデータ変更があるたびにマクロを実行する必要があります。m(_ _)m
「Excelに関する質問です! 過去と現行」の回答画像3
    • good
    • 0
この回答へのお礼

tom04様
この度はお礼が遅れ、申し訳ございません。
まさか写真つきでマクロコードをいただけるとは思っておりませんでした。誠にありがとうございます。
実際に自分の手でコピペをしてやってみたら、見事自動で色がつきました!魔法使いになったようでとても感激です(笑)
ただ、作業したいシート自体が、tom04様に貼っていただいた写真のように行が綺麗に並んでおらず、また私自身がコードの中身を理解できていないため、今すぐこれを実践するのは難しそうです。
もっと勉強させていただきます・・・!
重ね重ねお礼申し上げます。

お礼日時:2016/04/17 22:57

条件付き書式は、範囲を決めて設定することができるのはご存じだろうか。


A1セル【から】F10セル【まで】を指定して、A1セルに入力できる状態で、A1セルに下の回答で示した数式を指定すると、F10セルまで「A1」と書いた部分はそれぞれのセルに置き換わる。
F10セルには、
=Sheet2!F10<>F10
と設定されるのだ。

すべてのセルを選択すると、A1セルからすべてのセルが選択され、A1セルに入力できる状態になる。
セルひとつ一つに対して設定する必要はない。

また、必要ならBookのコピーを作り、そのコピーの上で操作すると間違った事をしてデータを消してしまうことも無い。
あらかじめ設定されている条件付き書式を消して、新たに設定することもできる。
    • good
    • 1
この回答へのお礼

銀鱗様
この度はお礼が遅れ、申し訳ございません。
また、2度の回答誠にありがとうございます。
>すべてのセルを選択すると、A1セルからすべてのセルが選択され、A1セルに入力できる状態になる。
セルひとつ一つに対して設定する必要はない。
全く知りませんでした・・・お恥ずかしい限りでございます。
ご教示いただいた方法で上手くいきました!
今回の作業自体は引き継ぎをする必要があるため、自分自身が理解できていないことをやるわけにはいかなかったのですが、この分ならマニュアルもうまく作れそうです。
tom04様には大変恐縮なのですが、上記理由から今回は銀鱗様をベストアンサーに選ばせていただければと思います。
重ね重ねお礼申し上げます!!!

お礼日時:2016/04/17 23:03

自分なら、条件付書式で行う。


Sheet1 と Sheet2 を比較する場合、
Sheet1 または Sheet2のどちらかに条件付書式をすべてのセルに設定する。
※これはマシンパワーが必要なので、可能な限り条件付書式の範囲を決めて行うことを勧める。
Sheet1のセルの色を変えるなら、Sheet1のA1セルに
=Sheet2!A1<>A1
と数式を設定して書式にセルの色を指定する。
これで、Sheet1とSheet2で異なるセルには色が付く。

ついでに「並べて比較」を行うことで、どのように違うのかを確認することができる。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!