• ベストアンサー

エクセルでデータを抽出したい

ウインドウズ2000でエクセル2002です。 データがあります。 会員番号、名前、住所などです。普段はCSVファイルにしています。 これらのデータが12月、11月、10月というように 3つのファイルで保管されています。 内容はその月に会員が購入したかどうか、です。 つまり 12月 Aさん 渋谷在住 Bさん 町田在住 Dさん 新潟在住 11月 Aさん 渋谷在住 Cさん 岡山在住 Eさん 埼玉在住 10月 Aさん 渋谷在住 Cさん 岡山在住 Fさん 福岡在住 となるとこの3ヶ月で購入した人はA~Fさんなわけですが 同じ名前の人がダブってくるのでどうやったら うまくダブリカットして処理できるのでしょうか。 最終的にはA~Fさんの住んでいるところを分析します。 ちなみにアクセスでなく、エクセルでお願いします。 また、もともと3ヶ月のデータ抽出をしたファイルはないのか、 ということにもなりますが、すべて1ヶ月ごとにファイルに落とされるしくみです。 よろしくお願いします。

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

  • ベストアンサー
  • 9013yagi
  • ベストアンサー率39% (15/38)
回答No.5

 一旦、全てのデータを1シートにまとめ、必要項目を1セルにまとめてからVLOOKUPで同じデータが無いか チェックを入れてみては?  VLOOKUPで拾えたデータは既に存在するという事 なので、削除対象となりますよね?  ただ、縦が余りにも多いと現実的ではないかな?

noname#14494
質問者

補足

そうなんです! vルックを使うのはデータが二つのときに、そして 両月とも購入している人を出す時に使ってました。 しかし、その拾ったデータを削除対象というのも分かります。 が、どうやって削除すればいいのでしょうか。 他にもピボットテーブルとかオート○○とかいろいろと 応用すればできるような気もしているのです。

その他の回答 (5)

  • 9013yagi
  • ベストアンサー率39% (15/38)
回答No.6

 No.5です。  VLOOKUPの計算式は、エラーの時「#N/A」にな りますよね?これを回避するのに、 =IF(ISERROR(VLOOKUP(式))=FALSE,VLOOKUP(式),"") なんてのを使うと、エラー時に、最後の""内に入れた値が 返されます。 そこでオートフィルターをかけて、この場合はエラーでな いもの(つまり重複しているもの)を手動で削除してしま う。 自動でするとすれば、マクロで一行ずつ追っていって、V LOOKUPの結果がエラーかそれ以外かで判断し、エラ ーでない場合は行を削除するというマクロでよいのでは? ちなみに、マクロ動作中の画面の動きを止めるには、 Application.Cursor = xlWait Application.ScreenUpdating = False ~ マクロ ~ Application.Cursor = xlDefault Application.ScreenUpdating = True で、マクロ終了まで画面を静止させることで、実行速度を 向上させることも可能です。それでも、遅いとは思います が。。。。。(^_^;

  • freednia
  • ベストアンサー率25% (84/324)
回答No.4

行数多いので、アクセスにインポートしてクエリ使うのが一番手っ取り早いんじゃないかと・・・ それをエクセルにエクスポートすればエクセルデータになりますし。 エクセルだとkaiuさんも言ってるようにマクロでループしながら重複行を削除していくことになるのでかなり非効率で時間かかります。

noname#14494
質問者

補足

アクセスやファイルメーカー等を使えば 簡単なのは分かります。 私以外のアクセスの使い方がわからない人間もできるようにしたい、という理由があるのです。 申し訳ありません。 でもたしかにマクロだと何回も画面変わるんでしょうね。

  • kaiu
  • ベストアンサー率20% (65/315)
回答No.3

NO.2の者です。 マクロは全シート全行をCountIf関数を使用して ループでまわして重複行があれば削除する、 という処理を書きます。 ちょっとマクロ以外ではエクセルでは 処理が思い当たりません。 行数も多いですよね、 1シートに収まらないと あまりソートとかも意味が無いような。 CSV形式で処理してしまってはいかがですか? コマンドラインや秀丸等エディタ上で grepを掛けた方が早そうです。 どちらにしろご希望であれば詳細を書きますが。

参考URL:
http://hide.maruo.co.jp/software/hidemaru.html
noname#14494
質問者

補足

なるほどなんとなく分かってきました。 エクセルでどうしてもやらなければならない事情があるもので。 詳細については決まったらお願いするかもです。 無駄足になると申し訳ないですから。

  • kaiu
  • ベストアンサー率20% (65/315)
回答No.2

1.1ファイルにまとめる 必要がありますが、 それでソートして関数や集計機能を使用する。 2.ファイルを1フォルダにまとめてマクロで 処理する(CountIf関数を使用)。

noname#14494
質問者

補足

ファイルに入っているのは 縦軸こそ長いですが(約10000人程度) 横は会員番号、住所、購入金額、名前、程度ですので 今のところ ひとつのファイルに全て入れました(別シートですが) マクロは簡単なものは使えますが カウントイフですか。カウントイフは抜き出しで使った ことはありますが、はて、応用力に乏しく、ちょっと まだ検討つきません。すみません。

  • freednia
  • ベストアンサー率25% (84/324)
回答No.1

住所を分析ということですが、 例えば、10月のファイルで「Aさん」が「東京在住」になっていて、12月のファイルでは「渋谷在住」になっているみたいな事はありますか? それとも同じ名前の人の住所欄は全く同じ文字列ですか?

noname#14494
質問者

補足

おそらくありません。 また、会員番号でうまくソートできればと思ってます。 で残った人の12月時点での住所でまとめる、みたいに使用と思ってます。 ※のこった人、というのは語弊ですね。全て残るわけですが、ダブル人をカットしたいのです。

関連するQ&A