- ベストアンサー
重複した複数のレコードを1レコードにする方法
- 重複した複数のレコードを効率的に1つのレコードにまとめる方法をご教示ください。
- テーブルAとテーブルBの内容を統合する方法について教えてください。
- テーブルAの重複するレコードを特定の条件に基づいて1つのレコードにまとめる方法について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ループによる処理方法も考えてみましたが、ちょっと面倒そうでしたので、以下の方法を 代替策として提案します。 下記のクロス集計クエリ(クエリA)とテーブル作成クエリ(クエリB)を作成して、クエリBを 実行すると、テーブルBが得られます。 クエリA: TRANSFORM First(Mid([内容],5)) AS 内容詳細 SELECT テーブルA.氏名 FROM テーブルA GROUP BY テーブルA.氏名 PIVOT Left([内容],3); クエリB: SELECT クエリA.氏名, クエリA.項目1, クエリA.項目2, クエリA.項目3 INTO テーブルB FROM クエリA WITH OWNERACCESS OPTION; ※「項目」が1~3以外もある場合は、クエリAを基にした追加クエリを新規作成して下さい。 (「項目1」が「項目I」(→アルファベットのアイ)や「個目」(→「こうもく」を「こもく」と打った) になっているなど、「項目」部分のデータ誤記をチェックする意味でも、この手順を踏む 方が無難かもしれません) なお、上記のクエリは、「:」が常に4文字目にある前提で組んでいます。 もしも「項目10:エラー」といった、「:」が4文字目以外のデータにも対応する必要がある 場合は、クエリAを以下のように変更してください: TRANSFORM First(Mid([内容],InStr([内容],":")+1)) AS 内容詳細 SELECT テーブルA.氏名 FROM テーブルA GROUP BY テーブルA.氏名 PIVOT Left([内容],InStr([内容],":")-1); 但し、こちらにすると、全てのデータに必ず「:」が含まれていることが前提になります。 (含まれていないデータがある場合、「プロシージャ呼び出しが正しくありません」との エラーが表示され、クエリAの結果が表示できず、クエリBもエラーになります) 「:」を間違えて「;」と入力しているなど、「:」を含まないデータは、以下のクエリで確認 できます: SELECT テーブルA.内容 FROM テーブルA WHERE (((テーブルA.内容) Not Like "*:*")); ・・・以上です。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
これはエクセルの質問ですか。書いてないのでは。 質問の例は丁寧なんだが何を言っているか判らない。 >例えばテーブルAのID1番の「項目1:契約」を「項目1:」以降の文字列をテーブルBの項目1に更新したいと言った・・ など。 氏名と見出しを付けたら、山田とか鈴木としたらどうです。 氏名が試験やテストとは見るものが混乱する。 更新というのもプログラム用語でわかりにくい。 表現として、「同じ氏名の複数行のデータについて、氏名以外の情報を1行にまとめたい」というのはどうかな。 VBAでやるのが一番簡単な考え方になると思う。 行的に、同じ氏名が続く限り、右列に順次項目を追加すればよいのでしょう。 >アイディアが思いつきません。 プログラム経験が非常に少ないからだよ。
補足
ありがとうございます。 >これはエクセルの質問ですか。書いてないのでは。 失礼しました。ACCESSとなります。 >質問の例は丁寧なんだが何を言っているか判らない。 申し訳ありません。 例えばテーブルAの「ID」1番の内容にあります「項目1:契約」「項目2:解約」「項目3:不明」をテーブルBの項目1に「契約」を項目2に「解約」を項目3に「不明」を1行にまとめたいと考えて考おります。 しかし、VBAを書きたいのですがイメージが湧かないという状態です。 >氏名と見出しを付けたら、山田とか鈴木としたらどうです。 >更新というのもプログラム用語でわかりにくい。 確かにそうですね。 以後、気をつけさせて頂きます。 >プログラム経験が非常に少ないからだよ。 仰るとおりです。 経験を積んで行きたいと思っております。 よろしければご教示下さいませ。
お礼
DexMachinaさま ありがとうございます。 自分もループを考えていたのですがややこしくて困っておりました。。。 クロス集計は思いつきませんでした。 助かりました!ありがとうございます。 うまく期待通りの動きになりました。 エラーまで予測に入れて頂き、ご丁寧なご教示を頂きました事感謝致します。 ありがとうございました。