- ベストアンサー
高速で重複データを削除するには?
Excelにて.csvの重複データーを高速で削除するには どのようにしたら良いでしょうか? 下記のように複数の.csvファイルのA列に数万とURLリストが御座います。 A 1 http://rank-one/tako/ 2 http://rank-one/tako/ 3 http://rank-one/asdd/ 下記の方法も試しましたが、.csvファイルの量も半端ではないので マクロか何かを出来ないものでしょうか? B2: =COUNTIF($A$2:A2,A2) とオートフィルターを使った方法ですと時間もそれなりにかかってしまいます。 マクロを使ったご回答などもいただければとても助かります。 他に良い方法があれば、どなたかご教授いただければ幸いです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
フィルタオプションで重複データを表示しないように出来ます。 結果(範囲)をコピーして別シートに貼付ければ完了です。 http://www.asahi-net.or.jp/~ef2o-inue/kihon/sub01_05_19.html 上記の操作を記録マクロなどに残して呼び出して使えば良いかも知れません。
その他の回答 (4)
- nicotinism
- ベストアンサー率70% (1019/1452)
恥も外聞も無く、再度しゃしゃり出てきました A 1 http://rank-one/tako/ 2 http://rank-one/tako/ 3 http://rank-one/asdd/ となっているのを A 1 address 2 http://rank-one/tako/ 3 http://rank-one/tako/ 4 http://rank-one/asdd/ と一行ずらして空いた所へ Address と入れて下さい で下記を標準モジュールへ 並べ替えは出来ませんが抽出は出来てると思います。。。多分 ごみレスかもしれませんがご容赦を。 Sub test2() Dim cnXL As Object Dim rsXL As Object Dim wS As Worksheet Const adOpenDynamic = 2 Set wS = Worksheets("sheet1") Set cnXL = CreateObject("ADODB.Connection") With cnXL .Provider = "MSDASQL" .ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _ "DBQ=" & ThisWorkbook.FullName & "; ReadOnly=True;" .Open End With Set rsXL = CreateObject("ADODB.Recordset") rsXL.Open "select address from [sheet1$] group by address", _ cnXL, adOpenDynamic 'wS.Cells(1, 1).CopyFromRecordset rsXL 'A列に上書き wS.Cells(2, 2).CopyFromRecordset rsXL rsXL.Close: Set rsXL = Nothing cnXL.Close: Set cnXL = Nothing End Sub
お礼
どうもありがとうございました。
補足
いえいえ、とんでもございません。 ご回答ありがとうございます^^ 下記のアドレスはどのような拡張しで保存・使用すればよいのでしょうか? 下記の文字の使い方がいまいち分からなくて、申し訳御座いません。 Sub test2() Dim cnXL As Object Dim rsXL As Object Dim wS As Worksheet Const adOpenDynamic = 2 Set wS = Worksheets("sheet1") Set cnXL = CreateObject("ADODB.Connection") With cnXL .Provider = "MSDASQL" .ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _ "DBQ=" & ThisWorkbook.FullName & "; ReadOnly=True;" .Open End With Set rsXL = CreateObject("ADODB.Recordset") rsXL.Open "select address from [sheet1$] group by address", _ cnXL, adOpenDynamic 'wS.Cells(1, 1).CopyFromRecordset rsXL 'A列に上書き wS.Cells(2, 2).CopyFromRecordset rsXL rsXL.Close: Set rsXL = Nothing cnXL.Close: Set cnXL = Nothing End Sub どうかよろしくお願い致します。
- nicotinism
- ベストアンサー率70% (1019/1452)
No.3 です 先ほどのは『ゴミ』です。忘れて下さい (^^ゞ
お礼
どうもありがとうございました。
- nicotinism
- ベストアンサー率70% (1019/1452)
1行に行を挿入しA1に Address と入れてください、以下アドレスが連なっているとして シート名を、Sheet1 とした場合 標準モジュールでこんな風では? ※バックアップは必ず!!!!!!!!!!!!!!!とってから。お願い! Sub test() Dim cnXL As Object Dim rsXL As Object Dim wS As Worksheet Const adOpenForwardOnly = 0 Set wS = Worksheets("sheet1") Set cnXL = CreateObject("ADODB.Connection") With cnXL .Provider = "MSDASQL" .ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _ "DBQ=" & ThisWorkbook.FullName & "; ReadOnly=True;" .Open End With Set rsXL = CreateObject("ADODB.Recordset") rsXL.Open "select address from [sheet1$] group by address order by address", _ cnXL, adOpenForwardOnly 'wS.Cells(1, 1).CopyFromRecordset rsXL 'A列に上書き wS.Cells(1, 2).CopyFromRecordset rsXL rsXL.Close: Set rsXL = Nothing cnXL.Close: Set cnXL = Nothing End Sub
お礼
どうもありがとうございました。
補足
ご回答ありがとうございます。 上記のアドレスはどのような拡張しで保存・使用すればよいのでしょうか? どうかよろしくお願い致します。
- Cupper
- ベストアンサー率32% (2123/6444)
記録マクロで作業手順を覚えさせては如何ですか。 マクロにショートカットキーを割り付ければ、以後ボタン一発で終ります。 マクロを書き起こしたり、他の方の回答を待つ間に作業が終るかもしれませんよ。
お礼
どうもありがとうございました。
お礼
どうもありがとうございました。
補足
ご回答ありがとうございます。 私が希望しているものとは少し違いますね(^^; 上記の方法も結局は時間がかかってしまいます。 1度の作業で重複データは削除といったようなのが、理想だと思っています