- ベストアンサー
エクセルデータのレコード重複修正
7000件程度のレコード数があるエクセルデータで、一部(およそ500件程度)レコードが重複していることがわかりました。 本来ないはずの重複レコードを削除するにはどのような方法があるでしょうか? ご存知の方ご教授ください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
フィルタ→フィルタオプションの選択で「重複するレコードは無視する」にチェックを付け、抽出しては如何でしょうか。
その他の回答 (4)
- merlionXX
- ベストアンサー率48% (1930/4007)
IDがA列、DataがB列、StatがC列なのであれば、以下の手順をおためしください。 1.Alt+F11キーでVisualBasicEditorを呼び出します。 2.メニューから挿入、標準モジュールで出てきたコードウィンド(右側の白い広い部分)に以下のコードをコピペします。 Sub test3() Dim ws1, ws2, myDic, i, n Set ws1 = ActiveSheet Set ws2 = Worksheets.Add(After:=ActiveSheet) Set myDic = CreateObject("Scripting.Dictionary") With ws1 For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row If myDic.Exists(.Cells(i, "A").Value) = False Then n = n + 1 ws2.Range(ws2.Cells(n, 1), ws2.Cells(n, 3)).Value = _ .Range(.Cells(i, "A"), .Cells(i, "C")).Value myDic.Add .Cells(i, "A").Value, "" End If Next i End With Set myDic = Nothing End Sub 3.Alt+F11キーでワークシートへもどり、現在のデータのシートを表示させます。 4.メニューから、ツール、マクロ、マクロで出てきたマクロ名(test3)を選択して実行 これで挿入された新しくいシートに重複しないデータが転記されます。
- ぜ り~(@-Jelly-)
- ベストアンサー率34% (132/383)
SELECT * FROM テーブル Where 重複発見に至った条件 これで、重複があれば2~件、なければ1件になりますよね。 件数をCount(*)などでカウントし、 If カウント > 2 then DELETE FROM テーブル WHERE 重複してるレコード End if で良いかとおもいます。 全く同じレコードで、レコード番号もないという場合はつかえませんが。 その場合は、 SELECT時にORDER BYして並び替えて、 Do Until レコード.EOF = True IF 前のレコード = 今のレコード then DELETE FROM テーブル WHERE 今のレコード End if 前のレコード = 今のレコード レコード.MoveNext Loop で、できるとおもいます。
あくまで方法論です。 もっと手早い方法があるかもしれませんが・・ 1.まず、データをソートして下さい。 2.IF文節で上位セルと同じデータなら空白に、上位セルと異なるデータならそのままコピーする内容の式を別の列に作成して下さい。 ※重複データの欄は空白としてデータが取り出せます。 3.取り出したデータを範囲指定で全てコピーし、エディタに貼り付けましょう。 4.エディタの文字変換機能を使用して2回続きのEOFをEOF(1回だけ)に変換 ※この作業で空白行を削除出来ます 5.再度エディタのデータ全てをコピーしてエクセルに戻しましょう。 面倒でしょうが、これ以上の方法は私には思いつきません。 7000件程度のデータでしたらマクロ組むより早いかと思いますよ。
- pamsd
- ベストアンサー率18% (39/209)
>一部(およそ500件程度)レコードが重複していることがわかりました。 重複しているのが どれがというのが わかったんですよね? だとすると 次は 片方を削除するだけです。 なんら難しいことはありません。
補足
以下のような状態なのですが、マクロやクエリなどで機械的に重複データを見ないようにフィルタして、重複のないデータを抽出できないでしょうか? (以下の例ではIDはユニークで重複しないはずのデータになります。) ID data stat ------------------------------------ 10001 a s 10002 b f 10002 b f 10003 a s 10004 r s 10004 r s 10005 b f 10005 b f :
お礼
たくさんの方に回答していただいて、大変うれしく思います。 mu2011さんにご教授して頂いた方法で、残したいデータを抽出しコピペであたらしいシートに貼り付けて加工しました。 わたしにとっては一番簡単な方法でたすかりましたので、個人的な主観で良回答とさせていただきます。