- 締切済み
エクセルで複数のシートからデータを抽出したい
例えば、 シート1 シート2 シート3 新しいシート あんず めろん あんず あんず いちご なし もも → いちご みかん りんご かき りんご かき なし みかん めろん もも りんご という感じで、シート1から3を同じデータはダブらず新しいシートにまとめたいのです。ひとつひとつ見ていくのは大変なので、手っ取り早くできる方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17070)
関数では難しいとおもい、VBAでやってみました。 寄せ集めるシート名をSheet4にしてますが、自分のケースに合わせて下記の数箇所を変えてください。 ForNextの3重ループになってます。 一番外側は各シートの数だけの繰り返し 中は各シートのセルの上行から最終下行への行数分の繰り返し 最後はSheet4の中にすでに同じものがないか上のセルのから最下行セル(追加の度に下へ下がる)へのチェックの繰り返しです。 下記をVBEの標準モジュール(ALT+F11キー)に貼り付けて、実行(F5キー)します Sub test01() Dim sh As Worksheet k = 2 For Each sh In ActiveWorkbook.Worksheets 'MsgBox sh.Name If sh.Name = "Sheet4" Then Exit Sub ' sh.Activate d = sh.Range("A65536").End(xlUp).Row ' MsgBox d For i = 2 To d For j = 1 To k If Worksheets("Sheet4").Cells(j, "A") = sh.Cells(i, "A") Then GoTo p1 Next j Worksheets("Sheet4").Cells(k, "A") = sh.Cells(i, "A") k = k + 1 p1: Next i Next End Sub データが多いと処理完了時間が心配ですが、まあやってみてください。 A列以外がある時は Worksheets("Sheet4").Cells(k, "A") = sh.Cells(i, "A") の下行に(B列なら) Worksheets("Sheet4").Cells(k, "B") = sh.Cells(i, "B") を加えます。C列以下も同じです。
- OsieteG00
- ベストアンサー率35% (777/2173)
「統合」機能を使うのが一番簡単かと。