• ベストアンサー

エクセルでシート間のデータを照合して相違箇所を知りたいです。

エクセル2000です。 たびたびの質問ですみません。 非常に大きな表なので、手作業では大変そうなのでよろしければアドバイスお願いします。 シート間のデータを照合して相違箇所を知りたいと思います。 初心者なのでマクロは使ったことがありません。 初心者でも出来るやり方はありますでしょうか? すみませんがよろしくお願いします。

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

  • ベストアンサー
  • tizzy
  • ベストアンサー率51% (115/224)
回答No.7

たびたびどうも(笑) >シート1、2で同一だったデータも表に書き入れる というのは 「相違が無ければ、元データをそのまま表示する」 ということですか? シート1のA1に 50という数字 シート2のA1に 50という数字があるとして シート3のA1にも 50と表示させたい ということでしょうか? その場合でしたら チョッと式を変更して =IF(Sheet1!A1=Sheet2!A1,Sheet1!A1,"違います") という具合でどうでしょう? シート1と2のA1を比較して、同じなら シート1のA1を表示する 違っていれば 違います と表示する という意味の式になります。 こういうことで宜しいのでしょうか??

99blues
質問者

お礼

おはようございます! 昨日はどうもありがとうございました。 今朝一番に作業をしました。とても見やすい表になりました。 エクセルってすごいですね。感動です。 tizzyさん、またきっとお力を借りるときがくると思いますが、その時はよろしくお願いします!!!(^-^) (慣れ慣れしくてごめんなさい)

すると、全ての回答が全文表示されます。

その他の回答 (6)

  • 78tch
  • ベストアンサー率31% (50/157)
回答No.6

> データが700行のEZ列まであるのでどうしようかと。。。 →まさか。 コピーとペーストは分かりますか?「編集」というところにありますよ。 ・1行目に式を入れた後、2行目に移って、また1行目に戻ってから、式をコピー(ctrlを押しながらcキーを押す)します。 ・再度2行目に移って、shiftを押しながら、↓キーか、PageDownキーを押して、2行目から700行目まで選んで、ペースト(ctlキーを押しながらvキーを押す)してください。 もしくは、 ・700行目になにかデータを入れます。なんでもいいです。 ・1行目に式を入れた後、2行目に移って、また1行目に戻ってから、式をコピー(ctrlを押しながらcキーを押す)します。 ・再度2行目に移って、shiftとctlを押しながら↓キーを押すと、2行目から700行目まで一気に選ばれますから、ペースト(ctrlキーを押しながらvキーを押す)してください。

すると、全ての回答が全文表示されます。
  • tizzy
  • ベストアンサー率51% (115/224)
回答No.5

No.2です。 「シート1と2のデータのある範囲と同じ範囲のセルにコピー」 というのは、シート1.2のデータが 例えば、A1からH20までの中に記入されているとすると シート3のA1からH20のセルすべてに 先程の式を入れるということです。 ひとつずつ入れると大変ですので はじめのひとつのみを入力してあとは コピー、貼り付けをします。 先程提示した式の中のA1という部分は 貼り付けられるセルの位置によって 自動で変わりますのでご安心を。 1. A1に =IF(Sheet1!A1=Sheet2!A1,"",1) と入力してEnter。 2. A1のセルをコピーします 3. A1からH20までのすべてのセルを選択します 4. 選択したものの上で右クリック>>貼り付け という手順です。 ひとつ忘れていましたが 表示される文字を「1」などの数字以外のものを 指定したい場合には =IF(Sheet1!A1=Sheet2!A1,"","違います") というように " " で囲むようにしてください。 上の式ですと違いが見つかったセルに 「違います」と表示されます。 説明がわかりにくかったようで申し訳ないです。 また分からなければ再度お尋ねください。

99blues
質問者

お礼

tizzyさん 丁重なお返事ありがとうございます!! おかげさまで、想像していたとおりにできました!! 本当にありがとうございました。 これで充分なのですが、ちょっと欲がでて(^^;) 今は相違データのみ書き出されているのですが、シート1、2で同一だったデータも表に書き入れるのは難しいですか? しつこく質問してすみませんm--m

すると、全ての回答が全文表示されます。
  • 78tch
  • ベストアンサー率31% (50/157)
回答No.4

#1です。横入りで恐縮ですが > 「シート1と2のデータのある範囲と同じ範囲のセルにコピー」と言う意味 →シート1のA1セルと、シート2のA1セルを比べた結果であるところの「同一/相違」なり「Yes/No」なりという表示をどこかにしなければならないでしょう? それを、シート3に表示させるとして、ではシート3のどのセルにそれを表示させればわかりやすいですか? やっぱりA1でしょう?という意味ですよ。 もしくは、相違のあるセルの番地を列挙させたかったですか?それはVBA使わなきゃツラすぎます。

99blues
質問者

補足

アドバイスありがとうございます。 せっかくアドバイスを頂いているのに、初心者の私が使いきれてないので申し訳ないです。。。 やりたいことはこの方法でいけそうなのですが、これはセルにひとつずつコピーをしていかないといけないのでしょうか? データが700行のEZ列まであるのでどうしようかと。。。

すると、全ての回答が全文表示されます。
  • absurd0rt
  • ベストアンサー率23% (4/17)
回答No.3

マクロでよければ一例として・・・ 使い方 ・データ検証 "Sheet1"と"Sheet2"に検証データを貼り付ける "Sheet1"の一番左上のセルをクリックして「データ検証」を実行 終われば終了メッセージが出ます "Sheet1"と"Sheet2"の違う箇所の文字の色が赤くなり、赤くなった列の一番上のセルも赤くなる 時間がかかって検証範囲を狭めたかったら65535(Const lngRow As Long = 65535)と 255(Const lngCol As Long = 255)を変更する ・ジャンプ 「データ検証」を実行した後 一番上の行で赤い文字のセルをクリックして「ジャンプ」を実行 その列の次の赤い文字のセルに"Sheet1"と"Sheet2"共に移動します。 赤い文字のセルが他になければメッセージが出ます 下のがマクロ Const lngRow As Long = 65535 Const lngCol As Long = 255 Sub データ検証() Dim lngCnt1 As Long Dim lngCnt2 As Long Worksheets("Sheet1").Activate For lngCnt1 = CLng(ActiveCell.Column) To lngCol For lngCnt2 = CLng(ActiveCell.Row) To lngRow With Worksheets("Sheet1").Cells(lngCnt2, lngCnt1) If .Value = Worksheets("Sheet2").Cells(lngCnt2, lngCnt1).Value Then .Font.Color = vbBlack Else .Font.Color = vbRed Worksheets("Sheet1").Cells(1, lngCnt1).Font.Color = vbRed End If End With Next lngCnt2 Next lngCnt1 MsgBox ("Finish!") End Sub Sub ジャンプ() Dim lngCnt1 As Long Dim lngRet1 As Long Dim lngCol1 As Long Worksheets("Sheet1").Activate lngCol1 = CLng(ActiveCell.Column) For lngCnt1 = CLng(ActiveCell.Row) + 1 To lngRow With Worksheets("Sheet1").Cells(lngCnt1, lngCol1) If .Font.Color = vbRed Then Worksheets("Sheet2").Activate Worksheets("Sheet2").Cells(lngCnt1, lngCol1).Select Worksheets("Sheet1").Activate .Select Exit For End If End With Next lngCnt1 If lngCnt1 > lngRow Then MsgBox ("There is nothing!") End If End Sub

99blues
質問者

お礼

アドバイスありがとうございます。 マクロは使ったことがないのですが、(超初心者で。。。)本を見ながらこの式を貼り付けましたが。。。 まだまだ勉強がたりませんね(^-^) これを機にもっとがんばろうと思いました。 そして、いつかマクロでこれを使います! どうもありがとうございました。

すると、全ての回答が全文表示されます。
  • tizzy
  • ベストアンサー率51% (115/224)
回答No.2

99bluesさん まったく同じ形の表があるシート二つの照合として ひとつの案ですが シート1とシート2があるとして もう1枚シート3を用意してそのシートのA1に =IF(Sheet1!A1=Sheet2!A1,"",1) と式を入れてシート1と2のデータのある範囲と 同じ範囲のセルにコピーします。 1と2で同じデータなら空欄になり 違いがあると1が表示されます。 表示する文字は式の最後の「1」の ところで決められますので×とかcheck などお好きなものでお試しください。 こういったことで宜しいのでしょうか? お尋ねになっていることと違っていたら ごめんなさいm(__)m

99blues
質問者

補足

どうもありがとうございます。 アドバイスどおりにやっているのですが、「シート1と2のデータのある範囲と同じ範囲のセルにコピー」と言う意味がよくわからなくて。。。 お忙しいところすみませんが、お時間があればもう一度アドバイスよろしくお願いします。

すると、全ての回答が全文表示されます。
  • 78tch
  • ベストアンサー率31% (50/157)
回答No.1

3枚目のシートを用意して、 =EXACT(Sheet1!A1,Sheet2!A1) としていけばどうですか。VBAを使わず、という場合だいたいはワークシート関数を使うんですが、「fx」というボタンを押すと一覧が出てきて、一つ選ぶと簡単な説明が出来てきます。分類もされていますから、「自分がやりたいことに使える関数はないかなー」とそこから探すクセをつけましょう!

99blues
質問者

お礼

アドバイスどうもありがとうございます。 ワークシート関数をもう少し勉強します。 エクセルがもっと便利になりますよね(^-^)

すると、全ての回答が全文表示されます。

関連するQ&A