Access 2010で複数のデータをまとめる方法

このQ&Aのポイント
  • Access 2010を使用して、複数のデータをまとめる方法について質問があります。現在、A、B、Cというデータがあり、それぞれには重複したデータが含まれています。特定の条件でデータをまとめる方法やOR条件でデータを出力する方法について教えていただきたいです。
  • Access 2010で3つのデータを1つのデータにまとめる方法について相談です。A、B、Cのデータがあり、重複するデータを名前でまとめて1行にまとめたいです。また、AとB、BとC、AとCの組み合わせで重複しているデータも出力したいです。現在はAND検索でしかできず、OR条件でのデータ出力方法が分かりません。初心者なので、わかりやすく教えていただけると助かります。
  • Access 2010のデータまとめについて質問です。A、B、Cというデータがあり、重複するデータを名前でまとめて1行にしたいです。また、AとB、BとC、AとCの組み合わせで重複したデータも出力したいです。現在はAND検索でデータ出力していますが、OR条件でのデータ出力方法がわかりません。初心者ですので、詳しく教えていただけると助かります。
回答を見る
  • ベストアンサー

アクセス2010 3つのデータ

アクセス2010で3つのデータを1つのデータにまとめたいと思っています。 A配布先 A名前 A住所 B配布先 B名前 B住所 C配布先 C名前 C住所 がそれぞれのデータに入っています。 3つのデータには重複しているデータがあるのでそのデータを名前でまとめて1行にまとめたいのですが、うまくいきません。 (AとBとCが同じ)名前 A配布先 B配布先 C配布先 A住所  B住所 C配布先 というふうにし、かつ名前がAとBのみ同じ、BとCのみ同じ、AとCのみ同じのものも出力したいです。 現状、AND検索でしかできず、AとBとCでデータ出力するとAとCのみなどのデータが抜けてしまうので、どうしたらOR条件で出力できるのかがわかりません。 初心者で初歩的な質問で申し訳ありませんが教えていただけると助かります。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

なるべくなら、このようなデータのまとめ方は 避けたほうが得策なのですが、まあ実際に 取り扱うデータはまったく違うものかもしれませんが。 クエリではできないのでは、という前提で、初心者ということで、 やりやすくするために以下のようにします。 (1) データがあるテーブルの名前を、   T配布先 とします。 次に、テーブルを一つ用意をします。テーブルの名前は   TT配布先一覧 フィールドを一つ設定し、フィールドの名前は、   配布先一覧 フィールドの型は「メモ型」とします。 (2) フォームを一つ用意をし、フォームにボタンを 一つ設定します。そのボタンのクリックイベントで 以下のようにします。 Private Sub コマンド0_Click()  から  End Sub までの 間のコードを貼り付ければ出来上がりです。 なお、DAOを使っているので、コード表の ツール → 参照設定 でDAOにチェックが入っているか確認して置いてください。   Microsoft DAO xx Object Library のような文字列です。 Private Sub コマンド0_Click()   Dim db As DAO.Database   Dim rs1 As DAO.Recordset   Dim rs2 As DAO.Recordset   Dim rs3 As DAO.Recordset   Dim strSQL As String   Dim strName As String   Dim strTo As String   Dim strAdd As String      '名前の名寄せをします   strSQL = "SELECT T配布先.名前 FROM T配布先 GROUP BY T配布先.名前;"   Set db = CurrentDb   Set rs1 = db.OpenRecordset(strSQL)   Set rs2 = db.OpenRecordset("T配布先")   Set rs3 = db.OpenRecordset("T配布先一覧", dbOpenDynaset)   rs1.MoveFirst   Do Until rs1.EOF     strName = ""     strTo = ""     strAdd = ""     '名前の検索をします     rs2.MoveFirst     Do Until rs2.EOF       If rs1!名前 = rs2!名前 Then         strName = rs1!名前         If strTo = "" Then           strTo = rs2!配布先         Else           strTo = strTo & " " & rs2!配布先         End If         If strAdd = "" Then           strAdd = rs2!住所         Else           strAdd = strAdd & " " & rs2!住所         End If       End If       rs2.MoveNext     Loop       'テーブルに書き込みます       rs3.AddNew         rs3!配布先一覧 = strName & " " & strTo & " " & strAdd       rs3.Update     rs1.MoveNext   Loop   rs1.Close: Set rs1 = Nothing   rs2.Close: Set rs2 = Nothing   rs3.Close: Set rs3 = Nothing   db.Close: Set db = Nothing End Sub 以上ですが、わからないところがあれば補足してください。

CUNE01
質問者

お礼

補足を書いた後、アクセスを起動しなおしたら表示されました! アクセスがおかしくなっていたようです。 無事にできそうです。 データ量が多かったので大変助かりました。 本当にありがとうございました。

CUNE01
質問者

補足

ご連絡遅くなり申し訳ありません。 いろいろとありがとうございます。 やってみたのですが、ボタンを押してもTT配布先一覧に表示されませんでした。 ステップインでどこでおかしくなっているのか確認しようと思ったのですが、 デバックからステップインを選択してF8をクリックしても反応しません。 どのあたりを確認するといいでしょうか? もしご検討つきましたら教えていただけたら助かります。 たびたび申し訳ありませんが、よろしくお願いいたします。 私もこのような並びのデータは作成したくないのですが、 この並びで使用したいようです・・・。

関連するQ&A

  • 重複データの削除

    お世話になります。 現在、仕事でお客様のデータ(5万件くらい)を扱っています。 しかしデータをエクセルに取り込むシステムに難があり、同じお客様のデータを重複して取り込んでしまうことがあります。 そこで質問ですが、約5万件あるデータの中から効率よく重複データを削除する方法はありますか? 懸念事項は、同姓同名の方は削除してはいけないという点です。 データ項目は「名前」「住所」「生年月日」「性別」とあるので、 同姓同名でも生年月日や住所で判定することができます。 ちなみに私の考えは、 A列に名前、B列に生年月日とすると・・・ 1)ソート:優先順位はA列⇒B列 2)C列にIF(A1=A2,"重複","OK")として行方向へコピー   D列にIF(B1=B2,"重複","OK")として行方向へコピー   E列にIF(AND(IF(C1="重複",D1="重複")=TRUE,"重複","OK")として行方向へコピー 3)E列で"重複"でフィルタリングし、フィルタされた行の削除 スマートではないですが、私の知識では精一杯です。 何かスマートな方法はないものでしょうか? よろしくお願いいたします。

  • 別シートのデータを抽出して並べ替えたい

    シート1のA列だけに1行飛ばしで名前、住所、電話番号のデータが入っています。ついでに、次の情報との間は2行飛ばしになっています。    A         B ―|―――――|―――――― 1|名前a  | 2|     | 3|住所a  | 4|     | 5|電話番号a| 6|     | 7|     | 8|名前b  | といった感じです。 このデータを下のように、シート2に綺麗に並べ替えたいのですが…     A      B         C ―|―――――|―――――|―――――――| 1| 名前a | 住所a | 電話番号a | 2| 名前b | 住所b | 電話番号b | 3| 名前c | 住所c | 電話番号c | ひとつずつコピペで移そうと考えていたのですが、データが何百件と増えてしまったため困っています。 簡単にできる方法があれば教えてください。 よろしくお願いします。

  • 「エクセル」で重複したデータだけを呼び出したい。

    「Excel2000」を使用しています。 「重複しているデータだけ抽出する」 ということは出来るでしょうか? たとえば「A列」に名前が入っていて、 「B列」に住所、「C列」に電話番号が 入っているとします。 重複した名前だけを呼び出して、 なおかつ「B列」「C列」の データも表示させたいのですが…。

  • 「エクセル」で、「アクセス」のようにデータを呼び出したい

    「Excel2000」を使用しています。 少し、ややこしいのですが… たとえば住所録で、 「sheet1」の 1行目にリストのタイトルが入っていて、 A2、A3…に通し番号、 B2、B3…に名前、 C2、C3…に住所、 D2、D3…に電話番号 が入っているとします。 その時、「sheet2」の (たとえば)A2に 「sheet1のA2」に入っている通し番号を入力すれば、 その行に入力されている名前や住所や電話番号が、 任意のセル(たとえばD10、C8、C9)に表示される… といったことは可能でしょうか? こういったことは「Access」が 得意なんだと思いますが、なんとか エクセルで出来ないものでしょうか? マクロなどを使うのでしょうか? マクロはほとんど触ったことがないのですが、 チャレンジしてみますので お教え願えませんでしょうか。

  • 「エクセル」で「アクセス」のようにデータを呼び出したい(2)

    「Excel2000」を使用しています。 NO.608938で質問を させて頂いたのですが、 それを踏まえた新たな疑問が 出てきたので、前回の質問文を引用させて 頂きます。 >たとえば住所録で、 >「sheet1」の >1行目にリストのタイトルが入っていて、 >A2、A3…に通し番号、 >B2、B3…に名前、 >C2、C3…に住所、 >D2、D3…に電話番号 >が入っているとします。 >その時、「sheet2」の >(たとえば)A2に >「sheet1のA2」に入っている通し番号を入力すれば、 >その行に入力されている名前や住所や電話番号が、 >任意のセル(たとえばD10、C8、C9)に表示される… >といったことは可能でしょうか? …との質問に、VLOOKUPを使う方法を 教えて頂いたのですが、さらにもう一歩進んで… たとえば同一人物(名前、住所等同じ)に 同じ通し番号をつけた場合に、 その人が受け持っている 複数の得意先の名前(E2、E3…)や 住所(F2、F3…) を、Sheet2にまとめて表示させることは 出来るのでしょうか? 分かりにくい説明ですみませんが… たとえば、番号「1」番の「田中太郎」さんが A2、A3、に入力されていて、 E2に「○○商事」、E3に「○○物産」(Fに住所) となっていた場合、Sheet2に「1」と入力して 「田中太郎」さんを呼び出すと同時に、 得意先の一覧と住所も表示させることは 出来るでしょうか? 「同時に」でなくても構わないので、 何か良い方法がありましたらお教え下さい。

  • WordのテキストデータをEXELに

    Wordのデータ形式が左詰めで、 1行目 名前 2行目 住所 3行目 TEL . . . と言う様に1件のデータが3行で名前、住所、TELと規則的に並んでいます。このようなデータをEXEL等に読み込ませる時、 セルA  B    C 名前  住所  TEL . . . . . . に変換させたいのですが、どうすればよろしいのでしょうか。教えてください。

  • 重複データについて

    accessで重複しているデータを抽出したいのですが、初心者のためよくわかりません。 1列目 2列目 A   2  A   3 B   4 C   5 C   5 C   5 というデータがあった場合、1列目は重複していて2列目は重複していないデータだけを抽出したい場合、どういうクエリにすればいいでしょうか? 重複クエリではこの場合、Cも出力されてしまうためどうしたらいいのか悩んでおります。 よろしくお願いいたします。

  • Access2003で同じ行を1つにまとめたい

    例えば以下のようなデータファイル(テキストファイル)があるとします 建物名|住所|装置名 山田荘|A市|装置A 山田荘|A市|装置B 山田荘|A市|装置C 斎藤荘|B市|装置D 鈴木荘|C市|装置E      ・      ・      ・ このようなデータが100万行くらいある大きなデータを扱います。 そのデータの中で上記のように同じ建物名(住所は関係なしとする)のデータがあった場合に、それらを1つのデータにまとめて、いまの100万行あるデータ量を減らしたいと思っています(建物名が重複するのが多いデータなので) たとえば上記のデータだと山田荘に装置A・B・Cあることになっていますが、装置B・装置Cのデータを省き 建物名|住所|装置名 山田荘|A市|装置A 斎藤荘|B市|装置D 鈴木荘|C市|装置E      ・      ・      ・ というようなデータファイルを作成することは可能でしょうか? データファイルはテキストファイル(メモ帳)なのですが、これをAccessを用いて重複データを削除できますでしょうか?やり方をご教授いただければ幸いです。 ※Accessを使うはずだと個人的に思っているのですが見当違いであればご指摘願います。

  • エクセルのデータ加工

    エクセルのセルで、縦に1行目名前A、2行目住所A、3行目電話番号A、4行目名前B、5行目住所B、6行目電話番号B・・・、という具合に並んでいるデータを横に1列目1行目名前A、1列目2行目名前B、2列目の1行目住所A、2列目の2行目住所B、3列目の1行目電話番号A、3列目の2行目電話番号B、という風に加工したいのですが、一つ一つセルを移動するのではなく、なにか良い方法はありませんでしょうか?ちなみにデータは1000件ほどあるのですが。

  • ACCESS 重複データ削除の順番について

    追加クエリを使って重複データを削除する時に、削除されるデータについて質問です。 重複レコードを含むテーブルの構造のコピーを作成し、重複レコードを含むすべてのフィールドの主キーを作成して、元のテーブルから新しいテーブルへの追加クエリを実行して、重複レコードを一括削除をしています。 [操作についての参考URL] http://support.microsoft.com/kb/879852/ja =========================================== (テーブル) [ID]  [クラス]  [名前]   [時間]     1     A     ああ   11:00 ←重複 2     B     鈴木   12:00    3     C     アア   13:00     ←重複  4     A     ああ   14:00 ←重複 5     B     森    15:00   6     C     アア   16:00     ←重複  7     B     青山   17:00   8     C     アア   18:00     ←重複     9     A     ああ   19:00 ←重複 =========================================== 上記のようなテーブルで「クラス」と「名前」の2つのフィールドを主キーにした場合、 「A」の「ああ」さんと、「C」の「アア」さんが各3件ずつ重複しています。 しかし、「ID」と「時間」はそれぞれ違っています。 このような場合に、削除されないデータと削除されるデータの違いは何なのでしょうか? ACCESSの仕様でとか、レコードの若い番号順で削除されるとか、明確なルールが あれば教えていただけると幸いでございます。 御手数お掛け致しますが、何卒よろしくお願いいたします。

専門家に質問してみよう