• 締切済み

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を使うはずだと個人的に思っているのですが見当違いであればご指摘願います。

みんなの回答

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

レコード処理なのでADOでやってみました。 考えかたは素直で、氏名が変わるごとに書き出し。氏名が同じなら 何もしない、読み飛ばし。 例データ 所持品テーブル ID 氏名 住所 所持 1 山田 Å市 X 2 山田 Å市 Y 3 山田 Å市 Z 4 鈴木 B市 U 5 鈴木 B市 V 6 田中 C村 L 7 田中 C村 M 8 田中 C村 N ーー 同じフィールド構成の、所持品Bテーブルを作っておく。 ーーー モジュール Sub test09() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim rs2 As ADODB.Recordset Set cn = CurrentProject.Connection Set rs = New ADODB.Recordset Set rs2 = New ADODB.Recordset rs.Open "所持品", cn, adOpenKeyset, adLockOptimistic rs2.Open "所持品B", cn, adOpenKeyset, adLockOptimistic '--第1レコード処理 rs.MoveFirst MsgBox rs!氏名 m = rs!氏名 rs2.AddNew rs2!氏名 = rs!氏名 rs2!住所 = rs!住所 rs2!所持 = rs!所持 '---- While Not rs.EOF 'レコード数分ループ If m = rs!氏名 Then '何もしない Else rs2.Update MsgBox rs!氏名 rs2.AddNew rs2!氏名 = rs!氏名 rs2!住所 = rs!住所 rs2!所持 = rs!所持 End If m = rs!氏名 rs.MoveNext '次のレコードへ DoEvents Wend rs2.Update '-----終わり処理 rs.Close rs2.Close cn.Close Set rs = Nothing Set rs2 = Nothing Set cn = Nothing End Sub ーー 所持品Bテーブル ID 氏名 住所 所持 9 山田 Å市 X 10 鈴木 B市 U 11 田中 C村 L

全文を見る
すると、全ての回答が全文表示されます。
  • Hachi5592
  • ベストアンサー率36% (252/698)
回答No.2

ACCESSで 1)テキストファイルをインポートで読み込んでテーブルを作成します。 2)集計クエリを指定します。   建物を「グループ」   住所を「先頭」   装置名を限定するのであれば、それを一致条件にし、関係なけれ   ば「先頭」でいいです。 以上でデータを絞り込めます。

naonaoma
質問者

補足

ご回答ありがとうございます。 再びお聞きして申し訳ございませんが 「先頭」という意味は 建物でグループ化した中で 一番上のレコードを指すのでしょうか? 私が質問の中で記した例から行くと 山田荘でグループ化した場合、 住所・装置名で一番上のレコードは それぞれA市、装置Aなので 山田荘|A市|装置A が抜き出される という理解でよろしいでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

クエリで集計(メニューの表示にあります)を使ってください。 建物名と装置名をグループ化、住所を先頭にすればいいでしょう。 あとは検索条件で装置B・装置Cを除外してください。 クエリ デザイナを使用した集約とグループ化について http://office.microsoft.com/ja-jp/access/HP030839241041.aspx?pid=CH063655191041

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルで重複データ(行)を両方削除

    エクセルで重複データ(行)を両方削除    A         B       C 1  山田さん   090-111-   東京 2  鈴木さん   090-222-   埼玉 3  高橋さん   090-333-   茨城 4  山田さん   090-111-   東京 となっていた時、重複した行を削除して 以下のようにしたい場合はどうしたらいいでしょうか?   A         B       C 2  鈴木さん   090-222-   埼玉 3  高橋さん   090-333-   茨城

  • VBAのマクロで、複数行を1行に集計

    お世話になります。VBA初心者です。 下記のような表があった場合、請求書番号が同じものをVBAで1行に集計するにはどうしたらよろしいのでしょうか? 請求書No.|顧客名|摘要|金額 111111  |鈴木 | A |100 111111 |鈴木 | S |160 222222 |佐藤 | F |500 555555 |山田 | A |150 555555 |山田 | D |200 888888 |鈴木 | S |160  ↓下記のように集計 請求書No.|顧客名|摘要|金額 111111 |鈴木 | A |260 222222 |佐藤 | F |500 555555 |山田 | A |350 888888 |鈴木 | S |160 摘要は各請求書番号の最初の行を使います。重複は2行とは限りません。また、最終的に何枚の請求書があるのかも計算させたいのです。ただしこれはどこかに関数"=counta()"を使えばVBAでなくても出来るのですが。 よろしくお願いいたします。

  • アクセス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条件で出力できるのかがわかりません。 初心者で初歩的な質問で申し訳ありませんが教えていただけると助かります。

  • ACCESSの同一テーブル内の重複データ行の削除

    ACCESS2007で、同一テーブル内の重複データ行を、削除or除外抽出して、重複のないデータを残したいと考えています。(EXCEL2007の重複削除のイメージ) ●データサンプル <会社名><〒><住所><電話番号><FAX><業種><@@@@@> 山田商事|100-123|東京都千代田区@@@|03-2456-1111|…………………… 河野商会|200-123|大阪府枚方市@@@|072-556-1111|…………………… 佐野商店|500-123|愛知県名古屋市@@@|052-456-1111|…………………… 山田商事|100-123|東京都千代田区@@@|03-2456-1111|++++++++++++++++ 佐野商店|500-123|愛知県名古屋市@@@|052-456-1111|================= 大戸屋|800-123|福岡県福岡市@@@|03-2456-1111|……………………    ↓ ↓ ↓ ↓  ↓  ↓  ↓  ↓  ↓ 山田商事|100-123|東京都千代田区@@@|03-2456-1111|…………………… 河野商会|200-123|大阪府枚方市@@@|072-556-1111|…………………… 佐野商店|500-123|愛知県名古屋市@@@|052-456-1111|…………………… 大戸屋|800-123|福岡県福岡市@@@|03-2456-1111|…………………… ●今回、重複判定に使う列は、<電話番号>で、上の方に存在するデータが行が優先して残るようなイメージです。 クエリを使用するのか、SQL文を書かなきゃいけないのか、その辺りの判断もつかない初心者ですが、よろしくお願い致します。

  • エクセルSheet1,2を使っての行ごとでの値の返し方

    Sheet1にデータを行ごとに入れていきます。 Sheet2にSheet1のデータを行ごとに返します。 例えば下記のようなデータがSheet1にあります。 行/列  A     B     C    D     登録番号 申込み日  氏名   住所  1  h1234  15年2月  山田太郎 東京都品川区   2  k0022  14年8月  田中次郎 千葉県浦安市   3  m3651  15年1月  鈴木三郎 埼玉県川口市   4  g7890  13年6月  佐藤四郎 神奈川県横浜市 Sheet2のA1にSheet1の行3のデータを返すため3と入れます。登録番号を入れたいので、次のような関数を入れてみましたがうまく出来ませんでした。 =IF(ISNUMBER(A1),INDIRECT(Sheet1!A3&A1),"") 何がいけないのかわかりませんでした。 それに、出来れば登録番号の数字(全て4桁です)返したいのですが、さらに、MIDを使えばよいのですか?説明が十分かどうかわかりませんがアドバイス宜しくお願い致します!

  • 該当リストにない行を削除させる方法

    以下のようなファイル構成で、ワークシート2に記載した該当リストを参照して、該当しない行をワークシート1から削除させるマクロを教えて下さい。 【ワークシート1】 A列 B列 C列 ・・ X列 1組 山田 10 ・・ 10 1組 田中 10 ・・ 15 2組 鈴木 15 ・・ 20 3組 高木 20 ・・ 15 【ワークシート2】 山田 鈴木 ↓↓↓ 実行結果 A列 B列 C列 ・・ X列 1組 山田 10 ・・ 10 2組 鈴木 15 ・・ 20

  • SQLの書き方

    テーブルA CODE NAME ------------- 0001 山田 0002  斎藤 0003 宮下 テーブルB CODE NAME ------------- 0002  斎藤 0004 加藤 上記のテーブA,Bから下のような結果を 返すSQL分を書きたいのですが何かよい方法はないでしょうか? (重複する行は一行として返したいです。) CODE NAME ------------- 0001 山田 0002  斎藤 0003 宮下 0004 加藤

  • excelまたはaccessで重複行を数字に変換する方法

    下記のようなデータがあります。 A A A B C C これを、 A 3 B 1 C 2 というふうに、重複している行を数字に変換したいのですが、方法を教えていただけないでしょうか。 excelまたはaccessのどちらでも構いません。 よろしくお願い致します。

  • エクセルのデータ並べ替え(抽出)の方法

    エクセルのデータ並べ替え(抽出)の方法 を教えてください。 下記のようなデータがあるとします。   A    B    C   D 1 田中  東京  千葉  福岡 2 山田  京都  滋賀 3 佐藤  奈良  青森  USA 4 鈴木  カナダ 愛媛 A列は名前、B列以降は文字列です。B列以降はC列までの行、D列までの行とさまざまです。重複セルはありません。 これを下記のように並べ替えたいです。   A    B    C   D 1東京  田中 2千葉  田中 3福岡  田中 4京都  山田 5滋賀  山田 6奈良  佐藤 7青森  佐藤 8USA   佐藤 9カナダ 鈴木 10愛媛  鈴木 こういうことは可能でしょうか??? 教えてください。 よろしくお願いします。

  • エクセルで初心者で困っています。こんな事できますか?

    ・シート1のA列には「装置番号」、B列には「装置名」、C列には「顧客名」、D列には「住所」、E列には「電話番号」が入っています。「装置番号」と「装置名」は重複することが無いように設定されています。因みにデーター数は5000件位です。   このときシート2のA1に「装置番号」、B1に「装置名」を入れるとシート1の該当する行の「顧客名」、「住所」、「電話番号」がシート2のC1,D1,E1に自動的に出るようにしたいのですがなかなか出来ません。  本も買ってきて、関数を勉強中ですが旨く行きません。又、エクセルで難しい様なら、他の方法も教えていただければ幸いです。よろしくお願いします。

専門家に質問してみよう