• ベストアンサー

MSアクセス 利用方法

アクセス超初心者です。 現在エクセルを利用して、5万行のデータから2千行のデータを抽出しています。 データ数が20万行くらいになりそうなので、アクセスを利用したいのですが、利用方法を教えてください。 現在の条件は3段階で、 データ 番号 名前 0001 青木 0001 青木 0002 石田 0002 赤木 0003 石田 0003 赤木 0007 澤田 :  : (1) 重複するデータを削除  0001 青木 を一行に (2) 名前に注目したときに、番号(行)がX(例2)個以上ある行を pick up  0002 石田  0002 赤木  0003 石田  0003 赤木  を残す (3) 特定の名前(別にテーブルがある:例 石田)に該当する行を削除  0002 赤木  0003 赤木  を残す  という手順です。  方針としては、 A. (1)→(2)→(3) と抽出を書けるごとにテーブルを作成して作業を進める B. アクセスでは逐次テーブルを作成しないでも出来る  どちらなのでしょうか。  つたない説明で申し訳ありません。 よろしくお願いいたします。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

エクセルからの移行時は下記の作業が必要です。 アクセス上での新規入力時には主キー(複数フィールドでの固有も有り)や固有のキー(単体のフィールドで必ず固有)で入力制限されます。 抽出をかける場合 (1)エクセルファイル(全データ)のインポート(主キーは作成しない) これで重複有りなら主キーなしのテーブル(番号・名前)ができる。 (2)主キーが(番号と名前)のテーブルを作成し、そのテーブルに追加クエリで(1)のテーブルのデータを追加する。 これで番号と名前両方が一致したデータを一つにできる。 (3)重複クエリウィザードで(2)のテーブルの番号のみを指定する。 番号が一致するすべてのデータが表示される。不要な行を削除するか、番号を変更する。 (4)重複クエリウィザードで(2)のテーブルの名前のみを指定する。 名前が一致するすべてのデータが表示される。不要な行を削除する。 (5)(2)のテーブルの主キーを番号のみにする。必要な場合は名前を固有のキーとして登録する。 ※(3)と(4)のクエリは同じ名前で登録しようとするので名称を変えてください。 抽出をかけない場合 (1)事前に番号を主キーにして、名前を固有のキーにしたテーブルを作成する。 (2)エクセルファイルのインポート先を(1)のテーブルに指定する。(重複データはインポートしない) この時点で番号または名前が重複するデータは行が前のものを残すことになります。 例に揚げられたデータだと0002 石田が残ります。残りの3つははじかれる。 (1)の作業で名前を固有にしなければ0003 石田も残ります。 0003 赤木はなくなりますので必要なら新規の追加か変更が必要になります。

selfishgene2005
質問者

お礼

ご指導いただきありがとうございました。 その後、他の方の助けもあり、ようやく抽出することが出来ました。 心より感謝しております。

selfishgene2005
質問者

補足

mshr1962 様、 お礼のメッセージを入力したつもりでしたが、(初めての為利用方法が良くわからず)入力できておりませんでした。 失礼いたしました+大変ありがとうございました。 現在、逐次テーブルを作成しながら、 (1) 重複するデータを削除 (2) 名前に注目したときに、番号(行)がX(例2)個以上ある行を pick up まで出来ました。 初心者の為大変時間がかかってしまいました。 しかし、 (3) 特定の名前(別にテーブルがある:例 石田)に該当する行を削除 を作業するときにやり方がわかりません。 データのテーブルには苗字と名が連続したテキスト(例: 石田光成)があるのですが、別テーブルには苗字だけ(例: 石田)が存在してます。 別テーブルの行数は200行程度です どのようにすればよいのか、ご教授いただけると大変助かります。 どうぞよろしくお願いいたします。 

その他の回答 (1)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>A.B.・・どちらなのでしょうか。 (1)~(3)の処理はどちらでも出来ます。 敢えて言えばクエリで全て処理できるので余分なテーブルはいりません。元になるテーブルをExcelからインポートさせて作れば後はクエリで出来ます。 処理途中で必要なテーブルがあるようならそのテーブルはクエリを使って作れば良いと思います。 概ね#1の方が書いてありますが・・ (1)はテーブルを作り番号と名前を複数フィールドの主キーとして設定します。そのテーブルに元になるExcelのシートをテーブルにリンクしてデータのみをコピーするかExcelからエクスポートすれば重複するデータを削除できます。 (2)(3)は重複クエリを作り抽出条件に他テーブルに名前がある(別にテーブルがある:例 石田)レコードとすれば出来ます。そのクエリを元に削除クエリを作れば完了です。 SQLを使っても出来ます。

selfishgene2005
質問者

お礼

ご指導いただきありがとうございました。 その後、他の方の助けもあり、ようやく抽出することが出来ました。 心より感謝しております。

selfishgene2005
質問者

補足

O_cyan 様、 お礼のメッセージを入力したつもりでしたが、(初めての利用の為方法がわからず)上手く入力できておりませんでした。 大変失礼いたしました。 また、教えていただきありがとうございました。 #1の方への補足投稿にも書きましたが、 (3) 特定の名前(別にテーブルがある:例 石田)に該当する行を削除 で、データのテーブルには氏名、別テーブルには氏だけがある場合にはどのような方法で出来るのか、教えていただけると大変助かります。 どうぞよろしくお願いいたします。

関連するQ&A

専門家に質問してみよう