VBA教えてください。重複データの削除
エクセルからエクセルへのデータ取り込み、重複データ削除の方法について、とても時間がかかっており、ご教授いただきたいと思い、質問させていただきます。
よろしくお願い致します。
台帳(エクセル)とシステムから出力するcsvファイル(エクセル)があります。
csvファイル(エクセル)のデータを、台帳(エクセル)で管理します。
‘csvファイル:商品コード、商品名、注文日、納期、などなどA~AZ列まで、1行目は項目名で、その後、1行1商品で2000行ほどデータがあります。
現在進行形のデータが全て出力されるため、台帳にあるデータと重複するものと、新規データがあり、新規データのみを台帳に追加していきたいです。
重複かどうかの判断は、A列の通し番号で判断しています。
台帳:シート4つで進捗を管理しています。
シート(1);csvファイルからデータを取り込むシート
一度出力データ全てを取り込み(※1)、シート(2)、(3)に重複があるデータを削除します(※2)。
シート(2):(1)から次工程にデータを送ったらこちらに移動(0~500行ほどあります)
シート(3):(2)から次工程にデータを送ったらこちらに移動(5000行ほどあります)
※1は3秒ほどで完了するのですが、※2は1分近く時間を要しています。
もう少し短くならないかと思うのですが、いかがでしょうか。よろしくお願い致します。早ければ早いほどいいですが、10秒以内を目標にしています。
今は、csvファイルから全データをエクセルに取り込んでから(3秒ほど)、重複削除していますが、csvファイルから取り込むときに、重複データを取り込まないほうがいいのでしょうか。
現状、このような感じです。
Sub 重複削除()
Dim i As Long
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
‘BA列にある重複チェックが2以上のとき、削除
For i = 5000 To 5 Step -1
If Worksheets("(1)").Cells(i, 53).Value > 1 Then
Rows(i).Delete
End If
Next i
‘BA列に重複チェックを再設定
Application.Calculation = xlCalculationAutomatic
Cells(5, 1).Select
Range("BA5") = "IF(A5="""","""",COUNTIF($A$4:$A5,A5)+COUNTIF((2)!$A:$A,A5)+COUNTIF((3)!$A:$A,A5))"
Range("BA5").Select
Selection.Copy
‘関数を値へ変換
Range("BA6:BA2000").Select
ActiveSheet.Paste
Application.CutCopyMode = False
‘行幅を整える
Rows("5:5").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.RowHeight = 15.75
Range("A5").Select
Application.ScreenUpdating = True '画面描画を静止
End Sub
お礼
mu2011さん、ありがとうございます。 ご指摘の通りスペースが入っているものがあったので、教えていただいたTRIM関数を使って解決することができました。 早速のご回答ありがとうございました。大変助かりました!