- ベストアンサー
[Excel]2つのファイルの異なる点を抜き出す方法を教えてください
久しぶりにお邪魔します。 エクセルの操作について、詳しい方教えてください。 2つのエクセルファイルがあります(AAA.xlsとBBB.xlsとします) どちらにも同じような商品名がずらっと並んでいますが、AAA.xlsにはあってBBB.xlsにはない商品名だけを抜き出したファイルを作成したいのです。 例えば 「AAA.xlsの内容」 りんご みかん バナナ なし ぶどう もも 「BBB.xlsの内容」 なし みかん りんご ぶどう ⇒「バナナ、もも」を抜き出したい AAAには3万個ほどの商品名が入っていますので、手動ではとても(泣)。 よろしくおねがいします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
'マクロの例です。 'AAA.xls / BBB.xls 両方開いた状態の例です。 '両方とも、商品名は Sheet1のA列にあるとして '存在しない商品名は、AAA.xls の Sheet1のB列に「○」を表示及び、C列に名称を展開する ' Sub 選別() Dim wAsht As Worksheet Dim aMR As Long Dim editR As Long ' Application.ScreenUpdating = False Set wAsht = Workbooks("AAA.xls").Worksheets("Sheet1") ' editR = 0 With wAsht aMR = .Range("A" & Rows.Count).End(xlUp).Row For wR = 1 To aMR If Chk_Find(.Cells(wR, 1)) = False Then '存在しない .Cells(wR, "B") = "○" editR = editR + 1 .Cells(editR, "C") = .Cells(wR, 1) End If Next End With Application.ScreenUpdating = True End Sub ' 'BBB.xlsブックの存在チェック Function Chk_Find(wNm As String) As Boolean Dim wBsht As Worksheet Dim c ' Set wBsht = Workbooks("BBB.xls").Worksheets("Sheet1") ' Set c = wBsht.Columns("A:A").Find(What:=wNm, LookIn:=xlValues) If Not c Is Nothing Then Chk_Find = True Else Chk_Find = False End If End Function '< マクロ貼付方法 > '(1) Alt+F11 (ツール → マクロ → Visual Basic Editor) →「挿入」→「標準モジュール」で表示される画面に貼り付け '(2) 実行は、(F5を押す)又は、シート画面に戻って Alt+F8を押してマクロ一覧からマクロ名を選択して実行
その他の回答 (2)
- FEX2053
- ベストアンサー率37% (7991/21371)
まず、各々のレコード(行)全部を指定して無条件で「データ」「フィルタ」 「フィルタオプションの指定」で別の場所に「重複したデータを無視する」 で抽出を掛けます。 http://www.eurus.dti.ne.jp/yoneyama/Excel/filter3.htm http://www.eurus.dti.ne.jp/~yoneyama/Excel/jituyou/jyufuku.htm こうすると、両方のデータに「存在するレコード」が各々1件ずつ抽出 されますね。種類が少なければ、後は1件づつ目視すれば済みます。 種類が多い場合は両方のレコードを同一シートに並べ(例えばA、B列 に並べたとします)、各々昇順か何かでソートしておいて =IF(A1=B1,1,0) としてコピーしてやれば、合わないデータのところで「0」に変わります ので、適宜手作業で引っ張り出せば済むかと。 合わないデータが100件程度なら、経験上こんなやり方でも、そんなに 時間は掛からないはずです。
お礼
ご回答ありがとうございました。 各シートにある商品名にはシート内では重複はありません。 また、AAAとBBB内での商品名の数が違うのでIF・・・では求められないような気が。。。 合わないデータの件数が多分1万くらいはありそうなので、手作業は死にます(泣)
- kokorone
- ベストアンサー率38% (417/1093)
ファイルの差分を求めるのであれば、 1)http://diffdoc.add-soft.jp/download/ など有料のソフト を使用する 2)フリーで同様のものがありますが、制限があり使えない場合が あります。 3)各々をテキストファイルまたはCSV形式のファイルに出力・ 保存した後、 http://www.vector.co.jp/soft/win95/prog/se110171.html などのフリーのテキスト差分ツールを使用する。 ※AにあってBにないものの一覧ということであれば、マクロ(VBA)でプログラミングするのが一番かと。
お礼
ご回答ありがとうございました。 テキストファイルのDiffを求めるソフトの存在は知ってましたが、テキストに落とすのが面倒なので(汗)最後の手段に取っておきます。
お礼
ご回答ありがとうございます。 マクロってまったく使ったことがなかったんですが、こういうことが出来るんですね。。。 ちょっとファイルに細工が必要そうなので(今は価格やら何やらの他のデータもゴチャゴチャ入っているので)、時間ができたら試してみます!