• ベストアンサー

エクセルでファイルの比較

エクセルで二つのBOOKを比較して、 両方にあるデータを抽出する方法があれば教えて下さい。

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

  • ベストアンサー
  • saku01
  • ベストアンサー率36% (7/19)
回答No.3

>両方にあるデータ 重複してあるデータと言うことで、関数を使い(例えば)「重複」という文字を表示させ、オートフィルタで「重複」を選択すると、「両方にあるデータを抽出」できると思います。 方法(あくまで私の個人的な方法ですが・・・) 1.新しいブックを作る。 2.上の1のブックに、二つのブックのデータを貼り付ける。  ※二つのブックのデータを縦につなげて貼り付ける 3.(データをセルB2以降に貼り付けたとして)A2に以下の関数を入力する。   =IF(COUNTIF(B:B,B2)>=2,"重複","") 4.上の3の関数を全てのデータのA列にコピペする。 5.重複しているデータがあればA列に「重複」と表示される。 6.空いている1行目に項目名などを入れ、そこを選択して、メニューバーの[データ]から[フィルタ]-[オートフィルタ]と進む。 7.セルA1にあるフィルタの「▼」を押し「重複」を選択する。 8.二つのブック両方にあるデータ(=重複データ)のみが抽出される。 かなり私流なので、少々遠回りな方法ですが、お試しください。

yasu2002
質問者

お礼

ありがとうございました。 縦につなぐのは思いつきませんでした。 やってみます。

その他の回答 (2)

  • aieeen
  • ベストアンサー率12% (7/54)
回答No.2

バックアップを取ってから試して下さい。 どこに抽出するのか分からないのでとりあえず下記VBA を作ってみました。 ピッタシだと良いのですが。 貼り付け先のbookと貼り付け元のbookを同じフォルダーの中に入れます。 貼り付け先のエクセルのモジュールに下記testとEXを直して貼り付けます。 マクロの実行でsampを押すと貼り付け先のデータが指定したシートに貼り付けされます。 Sub samp() Dim wsSrc As Worksheet, WS As Worksheet Dim PasteR As Range Dim x As Long Sheets("test").Select 'test=貼り付けるシート名 Cells.Select Selection.Delete Shift:=xlUp Range("A1").Select Set wsSrc = ActiveSheet Workbooks.Open "EX.xls" 'EX=貼り付け元のエクセル For Each WS In Worksheets x = WS.Range("A1").CurrentRegion.Rows.Count If WS.Index = 1 Then Set PasteR = wsSrc.Range("A1") Else Set PasteR = wsSrc.Range("A65536").End(xlUp).Offset(1) End If WS.Range(WS.Cells(1, 1), WS.Cells(x, 44)).Copy PasteR Set PasteR = Nothing Next ActiveWorkbook.Close False Set wsSrc = Nothing End Sub

yasu2002
質問者

お礼

質問の表現が悪くてすいませんでした。 ありがとうございました。

  • PAPA0427
  • ベストアンサー率22% (559/2488)
回答No.1

はじめまして。 どのような比較をされるのか、どんな風に抽出したのか判りませんが、VBAを使えば、フレキシブルに作る事は出来ます。

yasu2002
質問者

お礼

ありがとうございます。 VBAは使った事ないので同じシートに貼りつけて 関数で対応します。

関連するQ&A