ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュの重複データの削除

  • mixiチェック
  • このエントリーをはてなブックマークに追加
A〜Tまで使っているデータが2000件ほどあります。
これを特定キーでソートしたところ、だぶりがかなりの数あることがわかりました。

自分で考えたのは、関数ですが、削除までやるような事はわかりません。また、エクセル→アクセス→エクセルのデータ移動でもしかしたら、重複データが削除されるかも…と思いましたが、やり方がわかりません。アクセスは作ってあるデータを操作する程度です。。

削除できればどのような方法でもいいので、教えてください。

また、さらに細かいところなのですが、データ項目の中に、お客様の解答欄があり、回答が入っているものと入っていないものがあり、できるなら、回答が入力されているものを残したいと考えています。

わかる範囲でかまいません。
同かよろしくお願いします。

コメント(15)

こーゆー作業ってよくありますよね。

データを
1 解答列(降順か昇順か?確認してください)
2 名前?かなにかのダブり確認対象
とかで並べ替えします。

で、ダブり確認対象をA列としたとき、
B列に=IF(A2=A1,"ダブり","")とかの式を入れて
ダブりデータを出して、
あとはオートフィルターで"ダブり"の項目を選んで削除。

こんな感じでできませんか?
この説明でわかるといいんですが・・・
so さんの方法で、
>ダブりデータを出して、
の後、今度はB列でソートして、"ダブり"のA列セルを選択してサクッと削除。というのは良くやります。
もちろんソートを最初の状態に戻せるように、別列に1.2.3.. を入れてからやるのは必須ですが..。
データが2000件といっても、今問題なのは
特定キーで重複しているレコードだけなので、
それがどの程度の件数かによっても方法は…。
実際重複するデータが少ないなら手作業でも何でも…。

でも、特定キーというのもちょっと気になります。
お客様の解答欄 ということと、アクセス側でキーの重複を認めている
ということから、アンケートや顧客調査といった
感じのデータで、特定キーというのも、名前や名前カナや〒や住所、またはそれらの組合せではないのですか?

もし特定キーが文字列だと、精度がいまいちかもしれませんね。

重複を調べるには soさんの方法か、他にも、
作業列を用意し、=COUNTIF($A$2:$D$2001,A2) のような式を
フィルで全ての行にコピーして、オートフィルタで
カウントが >1 のものを抽出すればでます。

コミュが違いますが、アクセスでも、重複クエリウィザードなどで、
比較的簡単に抽出することができます。

回答があるものを残す というのも
解答欄の数がわからないのですが、
解答欄が複数あったとしたら、
レコード1には質問1に回答、質問2には無回答
レコード2には質問1には無回答、質問2には回答
レコード3には質問1、質問2とも回答
このようなケースの組合せの場合はどうするのですか?

質問が一つしかない場合でも、
レコード1 無回答(レコードがあるが内容はない)
レコード2 無回答(レコードがあるが内容はない)
といったような場合、
無回答のレコードを一括で消去するわけにはいきません。
両方とも消えて、レコードの存在がなかったことになりますから。消したいのは「重複」分だけですよね。

そうなると、soさんのやり方で、一つ一つ目で追って行くしか
ないのかもしれません。

とにかく状況がわかりません。
注文番号が重複しているというのは…?
普通アクセス側で重複を許さないようになっていそうなもんですが…。なんだかDB設計の根幹に関わる問題ですが…。

それにキーが同じで、別々の入力を重複して行うって…。
疑問です。
話を引っ張ってしまってすみません。
キーがあるなら、アクセスで重複を消す機能はあります。
ただ、先にテーブルに入ったレコードが優先されるので、
どのレコードを選ぶか…というような器用なことを一括作業でできるか…

キーの重複を許して、重複するものを抽出する機能はありますよ。抽出して、回答がブランクのものをまとめて消すってことも可能ですね。
参考まで。
携帯からなのでちょっと苦しいですが、アクセスにインボートしてクエリを新規作成から作ります。重複クエリウィザードで画面にしたがって行けば抽出で来ます。ウィザードがなければ機能の追加が必要です。クエリでさらに絞り込むのもアクセスならおてのものでしょう。
力技ですが、これでどうですか?
添付ファイルを見てください。

とりあえずダブりは5つまでと仮定していますが、
必要であれば横に伸ばすだけです。
3列目以下は2列目をコピー。

これで各キーの一番上に回答がすべて並ぶので、
はじめに紹介した方法でダブりを削除、
その後オートフィルターで不要な0を削除。

難しいやり方はわからないですが、
この作業ならこれで十分対応できるかと。

わかりにくかったら再度ご質問ください。
では。
重複したデータの二番目以降にマークを付けるのは
どうでしょう??

【サンプル】
 A2:A11に以下のデータが入っています。

a
b
a
c
c
b
d
c
d
e

 B2:B11にA列のデータが重複している場合に、
* を表示させるようにしたい。
ただし、重複していても最初のデータの場合には、
* を表示させないようにする。

a
b
a *
c
c *
b *
d
c *
d *
e

【方法】
=IF(COUNTIF($A$2:A2,A2)>1,"*","")
をセルB2に入力して、セルB11までコピーします。

【解説】
セルB2では、 =IF(COUNTIF($A$2:A2,A2)>1,"*","") です。
=COUNTIF($A$2:A2,A2) は 1 なので、
=COUNTIF($A$2:A2,A2)>1 はFALSEとなり、
* は表示されません。

セルB4では、=IF(COUNTIF($A$2:A4,A4)>1,"*","")
となります。
=COUNTIF($A$2:A4,A4) は =COUNTIF({"a";"b";"a"},"a")
なので、2が返ってきます。=2>1 でTrueが返るので、
* が表示されます。

 $A$2:A2 のように絶対参照:相対参照という形にしておくことで、下方に式をコピーした際に、
セル範囲を最初のセルからその行のセルまでというふうに
拡張することができるのです。

 以下の式でも同じ結果になります。
=LEFT("*",COUNTIF($A$2:A2,A2)>1)

 それで並べ替えして印の付いた所だけ削除では如何ですか?
もし項目(列)が少ないなら、Excelのピボットを使えばまとまるけど、それじゃだめですか?
って、もうとじちゃったかな?

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。