こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

7000件程度のレコード数があるエクセルデータで、一部(およそ500件程度)レコードが重複していることがわかりました。

本来ないはずの重複レコードを削除するにはどのような方法があるでしょうか?
ご存知の方ご教授ください。

投稿日時 - 2007-07-19 12:16:40

QNo.3181004

すぐに回答ほしいです

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

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

投稿日時 - 2007-07-19 12:26:29

お礼

たくさんの方に回答していただいて、大変うれしく思います。

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

投稿日時 - 2007-07-23 12:44:36

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.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)を選択して実行

これで挿入された新しくいシートに重複しないデータが転記されます。

投稿日時 - 2007-07-19 16:29:15

ANo.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

で、できるとおもいます。

投稿日時 - 2007-07-19 12:39:10

ANo.3

あくまで方法論です。
もっと手早い方法があるかもしれませんが・・

1.まず、データをソートして下さい。
2.IF文節で上位セルと同じデータなら空白に、上位セルと異なるデータならそのままコピーする内容の式を別の列に作成して下さい。
 ※重複データの欄は空白としてデータが取り出せます。
3.取り出したデータを範囲指定で全てコピーし、エディタに貼り付けましょう。
4.エディタの文字変換機能を使用して2回続きのEOFをEOF(1回だけ)に変換
 ※この作業で空白行を削除出来ます
5.再度エディタのデータ全てをコピーしてエクセルに戻しましょう。

面倒でしょうが、これ以上の方法は私には思いつきません。
7000件程度のデータでしたらマクロ組むより早いかと思いますよ。

投稿日時 - 2007-07-19 12:30:44

ANo.1

>一部(およそ500件程度)レコードが重複していることがわかりました。

重複しているのが どれがというのが わかったんですよね?
だとすると 次は 片方を削除するだけです。

なんら難しいことはありません。

投稿日時 - 2007-07-19 12:22:05

補足

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

投稿日時 - 2007-07-19 12:23:47

あなたにオススメの質問