• 締切済み

アクセス初心者 エクセルファイルの同じ人を抽出したい

アクセス初心者です。 ある町の毎年の健康診断の結果をエクセルファイルに入力しています。 毎年受診される方もいらっしゃるのですが、 受付順のIDのため毎年同じIDではなく、 毎回違ったIDで受診されます。 その為、個人データの抽出が難しいのです。 それで個人個人の毎年の 検査結果が抽出されるようなアクセスをつくりたいと 思っています。 IDは毎年違いますが、名前、生年月日が同じであれば 抽出されるというアクセスをつくりたいと思っています。 アクセスは、スクールレベルの知識のみですが、よろしくご指導ください。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

業務用のニーズであり、仕組みの不完全さを内包(下記Xの点)ーー>本質的むつかさがあります。 本質問の本質は、名寄せといわれる問題です。(質問者はアクセスなどソフト関連のスキルのことばかり質問の重点を置いているがそんなものではない) 普通は過去の受診暦のある人は、初回受診時にIDを記した診察券件的なものを発行し、持ってきてもらうのだが、コスト面でそれが出来ないのでしょう。持参を忘れる人がいるし(x)。 ーー 色々やり方があると思う。全てのやり方が回答に出るわけでもなく、質問者は選択に困るだろう。 ▲絶対いえることは、プログラムだけで完全な・正確に名寄せをヤルのは難しい。人間が常識で判断して十分チェックすることを作業ステップに加える必要があるということ。 出来れば受診当日受付にパソコンを持ち込んで、氏名生年月日ぐらいで検索し、対話で本人や、新規受診者を見極め出来たらと思う。 本当に社会保険庁の年金の問題と似た点があります。 そこでは、色々の事情もあっただろうが、プロでも過去に設計にしくじった問題です。 素人同然の質問者には、処理仕様を固めるという意味でも荷が重いと思われる。 適当に正確であれば、名寄せ不完全でも結構というのか、どれほど影響のある資料を作る必要があるのか不明ですがね。 後でどんな余波が考えられるかよく考えてね。 ーー ●仕様面 私の経験では 本人確認に 氏名 生年月日 住所(一部) 電話番号 上記は3つは必須かと思う あと 年齢 申告により去年以前に受診したことがあるか問診し データ(エクセル)にサインを持つ。 などのデータで 疑わしきをチェックリストとして、名寄せする前にそのリストを徹底的に電話でも使ってつぶす(原因解明する)ことです。 例 氏名+住所同じで生年月日違いなど、2要素同じで3番要素が違うなど。生年月日記入相違や質問者側で入力ミス。 結婚して姓が変わった。住所(住居表示)か変わったや質問者側で入力ミス。 ーー それらをつぶした後 マスタ(昨年まで)とトランザクション(今年分)という考えで 整理する。 トランザクションから考えて、マスタを照合し、3要素ぐらい一致したものがあるか調べる。 あれば受診者IDをトランザクションに加え、マスタのレコードに加える。 マスタに無い場合は新しい受診者IDを採番し、マスタに、トランザクションレコードを追加する。 === ●処理プログラム(ソフト面) アクセスはSQLとかで更新があったりするが、ADO・VBAなどが使えないと、操作やアクセスのマクロでは難しいのでは。 どうしてもアクセスでやるならこの点に絞って勉強し、改めてその点に絞って質問すべきでしょう。 私ならエクセルでもVBAを使って、そう難しくなくて処理できる 自信があるが、質問者にはVBAも使えないだろう。 参考までに私が考えていることは マスタシートを氏名+生年月日+1要素列でソート 今年分シートも同じキー列でソート VBAで両者を、氏名+生年月日+1要素列でマッチング処理をする。 新規受診者の場合は新しい受診者IDを付加する。 そうすると第3のシートに去年+今年の融合データが出来る。 これ(第3シート)を受診者ID+受診年でソートすると、受診暦の 基本資料が出来上がる。 ソートするのはマッチング法を使うためで、シーケンシャルファイルのバッチ処理には非常に有効な方法と考える。 上記のことはエクセルVBAでなく、アクセスのADO・VBAに置き換えることがほぼそのまま可能。 色々記したが、質問者の考えていることと、方向が違い、余り参考に なら無いと思うかもしれない。先輩上司など社会経験のある方に私の言った、仕様面のことを相談してみてください。

  • soy-joy
  • ベストアンサー率37% (3/8)
回答No.3

accessをどうしても使用したいのでしょうか? excelでの管理もピボットを使えば可能となります。 (1)個人情報のリストをピボットにかけます。 (2)ピボット枠の左に氏名と住所をプロットしましょう。  これで氏名と住所が同じ人が集計されました。 (3)このピボットの知りたい人の氏名をダブルクリックすればその人の検査結果が一覧で別シートに出力されます。 ※あらかじめ(1)でリストに対するピボットの範囲を指定するときにかなり行を多めに選択しておけば、そのリストに打ち込んでいった内容は、ピボット右クリックででてくる「更新する」で更新されていきます。 ※個人情報のリストにあらかじめ氏名のよみがな頭文字をフィールドとしても作っておけば、ピボットによみがな頭文字プロットすることで あいうえお順になります。 参考までに。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

例えば去年受信したであろう人を今年のデータから抽出するには 今年の受信テーブルの名前の抽出条件欄に In (select 名前 from 去年の受信テーブル) 生年月日の抽出条件欄ににも In (select 生年月日 from 去年の受信テーブル) 2つの条件はANDになるよう同じ行に書きます ただしこれでヒットする可能性は100%ではありません 今話題のどこかのお役所がやっていることと同じですね

  • jo-zen
  • ベストアンサー率42% (848/1995)
回答No.1

アクセス(データベース)では、リレーションの鍵となる「主キー」が必要となりますし、項目が正規化されている必要があります。2つの項目を結合した「連結キー」も主キーとして使えますが、名前+生年月日で連結キーを使用したくとも、場合によっては複数該当する場合がないとはいえませんのでお勧めできません。なんらかの「個人ID」が必要になってくると思います。

関連するQ&A

  • Access 日付での抽出

    初めまして、Access初心者です。 ネットで探しましたが、見つからなかったので、教えて下さい。 Access2010を使用しております。 テーブルの受付日(年月日)の項目で、抽出したいと考えております。 抽出方法は、検索フォームにあるテキストに「年月」を入力して、ボタンを押すと、 帳票フォームで表記されるようにしたいと思っております。 また、IDをクリックすると単票フォームで表記されて編集できるようにしたいと 思っております。 なるべくVBAは使わないで、できればと思っておりますが、 ご教授いただけないでしょうか。 よろしくお願いします。

  • Access2000でテキストボックスから文字列抽出

    Access2000のフォーム上でのデータの抽出で困っています。 [生年月日年]には、生年月日の年(和暦:2桁)が格納されています。 ここから、[生年月日年1]に生年の上1桁を抽出したいのですが、何も抽出 されません。 下記のようなコードを記述してみたのですが、うまくいきません。 どうしたらよいでしょうか? Private Sub 生年月日年1_Enter() Me![生年月日年1] = MidB([生年月日年], 1, 1) End Sub ちなみに、LeftB もやってみましたが、結果はやはり何も抽出されませんでした。 Mid や Left は固定文字列からの抽出にしか使えないのでしょうか? おわかりになるかた、できるだけ簡単なコードをご教示いただければ、幸いです。

  • アクセスについて、初心者です教えてください!

    初心者でお恥ずかしい質問ですが、本当に悩んでします。 どうか教えてください!! (1) アクセスのクエリです。    AテーブルとBテーブルを表示し、うち1つの項目を結合プロパティでむすんだところ、   抽出結果が重複します。 AAA BBB  と表示される筈が、 AAA AAA BBB BBB  となります。クエリの種類が違うのか、結び方がおかしいのか、教えてください!! (2) アクセスクエリの抽出結果をエクセルにエクスポートしたく作業し 「保存済のエクスポート操作」に保存したのですが、どのようにすれば ボタンにむすびつけられますか? 私にもできるマクロで、作業できるようにするには 、どんな項目を使ってマクロを作ればいいですか? マクロでは無理なのでしょうか。 ご指導のほどよろしくお願します!!

  • アクセス 抽出日時をレポートに表示したい

    アクセスで在庫表を作っています。クエリでBetween [開始年月日を入力] And [終了年月日を入力]という形で抽出、そのクエリを元にレポートで毎月月末〆で入庫分、出庫分をだしているのですが、『いつからいつまでの分』をレポート上に自動入力させたいのです。(Between [開始年月日を入力] And [終了年月日を入力]に実際に入力した「12/1」「12/31」のこの「」に入力した日付が、レポートヘッダー等に自動的に入る設定とか組み込めたらいいなと思いまして。今は毎回抽出した日付を手書きで書き足しています。簡単なよい方法がありましたら教えていただきたいです。宜しくお願いします。

  • C#でアクセスからデータを抽出できません。

    アクセスのデータを部分一致の検索で抽出しようとしていますが、結果が0件になってしまいます。 作成したSQL文は以下のように作成しております。 string selectcommand = string.empty; string testid = "1"; selectcommand = string.Format("select * from TastTable where ID like '*{0}*'", testid); ・アクセスを開いて、結果が0件になるSQL文を直接入力して実行すると正しい結果が返ってきます。  (IDに1が含まれている行が全てヒットします。) ・上記SQL文の「'*{0}*'」を「'{0}'」とすると、ちゃんとIDが1の人のみヒットするので、*がいけない?  でもアクセスに直接SQL文を打ち込むと正しい結果が返ってくるのは何故でしょう・・・ 基本的な質問でしたら申し訳御座いませんが、宜しくお願い致します。

  • AccessでログインIDを抽出条件に指定したい

    いろいろなサイトを参考にアクセスを勉強しはじめたところです。 個人情報保護のためにログインユーザのみが自分の情報を閲覧できるようにしたいと思っています。 (商品テーブルがあったとして、八百屋さんがログインしたときは八百屋さんのデータだけを、、という感じに) 今のところはユーザ毎にログインしたIDが抽出条件になっていてそれをサブフォームに表示させたいと思っております。 VBAでログインIDを取得することまではできたのですが、それを抽出条件にする方法がわかりません。 例えばVBAで取得した結果をクエリの抽出条件に代入することは可能なのでしょうか? 抽象的な質問の仕方になってしまっているかと思いますが、、よろしくお願いします。

  • Access 誕生月データの抽出

    お世話になります。飲食業の顧客管理をアクセスにて管理しようと奮闘していますが、ひとつ大きな壁に当たっているのでどなたかご指導いただけたらと思います。 内容はWinXP-Access2000で、顧客生年月日を西暦(例1978/9/8 1965/10/8)にて格納していますが、これらの西暦のデータの中から例えば8月生まれの顧客データだけ取り出す方法(関数)等はあるのでしょうか。手間はかかりますが各年ごとに各月のデータを抽出しそれを切り貼りしていくぐらいしか思いつきません。 簡単な方法があれば是非教えてください。 よろしくお願いいたします。 

  • Accessのクエリ

    すみませんが教えて下さい。 Accessのクエリで、重複したレコードがある場合 例) ID  生年月日  区分1 001 1977/01/23 22 001 1977/01/23 22 002 1985/02/05 23 002 1985/02/05 23 * * * * * 結果を 001 1977/01/23 22 002 1985/02/05 23 だけの表示したいのですがどのような方法がありますか。

  • Accessのクエリ(初心者)

    Access超初心者です。 クエリで悩んでいるので、お教えください。 テーブル1に CODE(商品ID)_NAME(名前)_SUU(数量)_DAY(日付)の4項目があり、 クエリを使って、最も大きいSUUを抽出したい (かつ最も大きいSUUのデータが重複している場合、その中で最も古い日付のデータのみを抽出したい)のですが・・・ たとえば、 テーブル内容: CODE(商品ID)_NAME(名前)_SUU(数量)_DAY(日付) A_あめ_600_0517 A_あめ_900_0518 A_あめ_400_0618 B_ガム_120_0217 B_ガム_060_0319 B_ガム_180_0718 B_ガム_180_0518 抽出結果: A_あめ_900_0518 B_ガム_180_0518 ということです。 デザインビューを使うとして、どのような方法がありますでしょうか? どうかご教授お願いします!

  • access2000でデータの抽出をする時の条件設定?

    PC自体の素人ですが、お願いします。 access2000で名簿を作っているのですが、人を選ぶ時に50音か、あかさたな…を入力して抽出するのを早くしたいのです。 これが出来れば、それを応用して住所とか、その他の条件設定をして抽出できるようになるかなぁと思って…。 今は、個人情報のテーブルのフリガナで並べ替え(A→Z)をして探しているような状態です。今は500人ほどなので大した苦労じゃないけど、これから増えることを考えると…。 どうかご指導のほど、よろしくお願いします。

専門家に質問してみよう