• ベストアンサー

エクセルに詳しい方、お願いします

エクセルで名簿を作成しているのですが、Aというファイルに100件あり、Bというファイルには300件あるのですが、BというファイルからAにある人だけを削除した新たなファイルCを作りたいのです。 合わせて、ソートをかけて、ダブっているのを削除するという原始的な方法ではない、計算式みたいなのがありましたら、教えてください。 お願いします。

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

  • ベストアンサー
noname#52504
noname#52504
回答No.2

#1さんのご回答のように、 数式でフラグを立て、ジャンプや並べ替えを使って、 不要な行を一度に削除するのが標準的な方法でしょうね。 ただ、ご質問のように数百件程度であれば、 処理速度を度外視して数式のみで処理することも不可能ではなさそうです。 新しいブックを作成して、 1.  Sheet1にファイルAの(見出し行を含まない)データ部分のみをA1セルから貼り付け 2.  Sheet2にファイルBの(見出し行を含まない)データ部分のみをA1セルから貼り付け 以下、重複を判定する列(名前とかIDとか)を仮にB列であるとします。 他の列で判定する場合には3の数式のBの部分を書き換えてください。 3.  Sheet3!A1セルに、   =1/LARGE((COUNTIF(Sheet1!$B$1:$B$199,Sheet2!$B$1:$B$399)=0)*(1/ROW(Sheet2!$B$1:$B$399)),ROW())  を配列数式として入力し、下方にフィル  ※通常の数式は、数式を入力した後Enterキーで確定しますが、   これは配列数式なので、CtrlとShiftを押しながらEnterで確定してください。 4.  Sheet3!B1セルに、   =INDEX(Sheet2!$A$1:$M$399,$A1,COLUMN()-1)  を普通に入力し、#REF!が返るまで右方にフィル、0が返るまで下方にフィル 5.  抽出されたデータをコピーして、ファイルCに値として貼り付け。 Excel2003で動作確認済。

その他の回答 (1)

  • lele00
  • ベストアンサー率29% (74/250)
回答No.1

1.BのシートをコピーしてシートCとします。   (データはA1~A300までに入っているとします) 2.作成したシートCのB1に、=VLOOKUP(A1,A!A1:A100,1,FALSE)の式を入力します。入力したらB300までコピーします。 この時にAシートにデータがあるものはA列と同じ内容が、データが無いものは #N/A が表示されます。 3.シート全体を選択して 編集→コピーします。その後 編集→形式を指定して貼り付けを行い、値を選択して全て値に変換します。 4.CシートのB列をキーにソートします。 5.B列に#N/A が表示されている行が必要なデータですので、残りを削除します。 これで出来ると思います。

関連するQ&A