• ベストアンサー

エクセルデータのレコード重複修正

7000件程度のレコード数があるエクセルデータで、一部(およそ500件程度)レコードが重複していることがわかりました。 本来ないはずの重複レコードを削除するにはどのような方法があるでしょうか? ご存知の方ご教授ください。

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

フィルタ→フィルタオプションの選択で「重複するレコードは無視する」にチェックを付け、抽出しては如何でしょうか。

tv_junky
質問者

お礼

たくさんの方に回答していただいて、大変うれしく思います。 mu2011さんにご教授して頂いた方法で、残したいデータを抽出しコピペであたらしいシートに貼り付けて加工しました。 わたしにとっては一番簡単な方法でたすかりましたので、個人的な主観で良回答とさせていただきます。

その他の回答 (4)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.5

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)を選択して実行 これで挿入された新しくいシートに重複しないデータが転記されます。

回答No.4

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 で、できるとおもいます。

noname#46268
noname#46268
回答No.3

あくまで方法論です。 もっと手早い方法があるかもしれませんが・・ 1.まず、データをソートして下さい。 2.IF文節で上位セルと同じデータなら空白に、上位セルと異なるデータならそのままコピーする内容の式を別の列に作成して下さい。  ※重複データの欄は空白としてデータが取り出せます。 3.取り出したデータを範囲指定で全てコピーし、エディタに貼り付けましょう。 4.エディタの文字変換機能を使用して2回続きのEOFをEOF(1回だけ)に変換  ※この作業で空白行を削除出来ます 5.再度エディタのデータ全てをコピーしてエクセルに戻しましょう。 面倒でしょうが、これ以上の方法は私には思いつきません。 7000件程度のデータでしたらマクロ組むより早いかと思いますよ。

  • pamsd
  • ベストアンサー率18% (39/209)
回答No.1

>一部(およそ500件程度)レコードが重複していることがわかりました。 重複しているのが どれがというのが わかったんですよね? だとすると 次は 片方を削除するだけです。 なんら難しいことはありません。

tv_junky
質問者

補足

以下のような状態なのですが、マクロやクエリなどで機械的に重複データを見ないようにフィルタして、重複のないデータを抽出できないでしょうか? (以下の例では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 :

関連するQ&A

専門家に質問してみよう