• ベストアンサー

データを抽出したいのです

以下のようなデータがあり抽出したいのです(エクセルもしくはアクセス)。実際は何千件もあります。 2007年生まれで、その子どもの続柄が「3」ならば世帯主(1)または妻(2)以外の1987生まれ以前の人がいる世帯。 またはその子どもの続柄が「子の子」ならばその世帯。 この例の場合、世帯番号で2、5、8が該当世帯です。 よろしくお願いします。 1:世帯主 2:妻 3:子 4:子の子 5:その他 世帯番号  生年  続柄 1 1967 1 1 1972 2 1 2001 3 1 2007 3 2 1948 1 2 1950 2 2 1972 3 2 1974 3 2 2005 4 2 2007 4 3 1968 1 3 1973 2 3 2007 3 4 1974 1 4 2007 3 5 1968 1 5 1973 2 5 2007 3 5 1940 5 6 1975 1 6 2003 3 6 2007 3 7 1970 1 7 1974 2 7 2007 3 7 1995 5 8 1949 1 8 1969 3 8 1974 3 8 2007 4 9 1974 1 9 1975 2 9 2006 3 10 1949 1 10 1950 2 10 1970 3 10 1975 3 10 2005 4

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

  • ベストアンサー
回答No.1

accessの場合、元データが、T_データだったとします。 以下のクエリ1からクエリ4までをクエリのSQLビューで打ち込んでください。 クエリ4以外はデザインビューで読めるようになるはずです。 2007年生まれで、その子どもの続柄が「3」の世帯 クエリ1=SELECT 世帯番号 FROM T_データ WHERE (生年=2007) AND (続柄=3) その世帯で、世帯主(1)または妻(2)以外の1987生まれ以前の人がいる世帯。 クエリ2=SELECT T_データ.世帯番号 FROM クエリ1 LEFT JOIN T_データ ON クエリ1.世帯番号 = T_データ.世帯番号 WHERE (生年<1987) AND (続柄<>1) And (続柄<>2) 2007年生まれで、その子どもの続柄が「子の子」ならばその世帯 クエリ3=SELECT 世帯番号 FROM T_データ WHERE 生年=2007 AND 続柄=4 クエリ2とクエリ3の世帯 クエリ4=select 世帯番号 from クエリ2 UNION select 世帯番号 from クエリ3 クエリ4が結果になると思います。 クエリ4のUNIONの所は、一応これで良いと思うのですが、間違ってたら誰か指摘してください。

jyouhoukan
質問者

お礼

遅くなって申し訳ありません。助かりました。ありがとうございました。

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

その他の回答 (5)

回答No.6

excelのVBAです。 元データはsheet1にあるとします。 抽出結果はsheet2のA列の2行目からに表示します。 checkを実行してください。 Sub check() Sheet2.Cells.Clear Dim lastRow As Integer Dim sRow As Integer Dim eRow As Integer Dim i As Integer lastRow = Sheet1.Cells(Sheet1.Rows.Count, 1).End(xlUp).Row sRow = 2 For i = 2 To lastRow If Sheet1.Cells(i, 1) <> Sheet1.Cells(sRow, 1) Then eRow = i - 1 checkFamily sRow, eRow sRow = i End If Next checkFamily sRow, lastRow End Sub '1世帯チェック Sub checkFamily(sRow As Integer, eRow As Integer) Dim 子2007年生まれ As Boolean Dim 子の子2007年生まれ As Boolean Dim 世帯主または妻以外の1987生まれ以前の人 As Boolean Dim i As Integer For i = sRow To eRow If (Sheet1.Cells(i, 2) = 2007) And (Sheet1.Cells(i, 3) = 3) Then 子2007年生まれ = True End If If (Sheet1.Cells(i, 2) = 2007) And (Sheet1.Cells(i, 3) = 4) Then 子の子2007年生まれ = True End If If (Sheet1.Cells(i, 3) <> 1) And (Sheet1.Cells(i, 3) <> 2) And (Sheet1.Cells(i, 2) < 1987) Then 世帯主または妻以外の1987生まれ以前の人 = True End If Next If ((子2007年生まれ = True) And (世帯主または妻以外の1987生まれ以前の人 = True)) Or (子の子2007年生まれ = True) Then Sheet2.Cells(Sheet2.Cells(Sheet2.Rows.Count, 1).End(xlUp).Row + 1, 1) = Sheet1.Cells(sRow, 1) End If End Sub

jyouhoukan
質問者

お礼

遅くなって申し訳ありません。回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
noname#204879
noname#204879
回答No.5

   A    B  C   D   E   F   G    H 1  世帯 生年 続柄 TMP1 TMP2 TMP3 TMP4 該当世帯 2   1 1967   1   0   0   0        2 3   1 1972   2   0   0   0        5 4   1 2001   3   0   0   0        8 5   1 2007   3   0   1   0 6   2 1948   1   0   0   0 …  …  …  …  …  …  … 10   2 2005   4   0   0   0 11   2 2007   4   2   0   0   2 12   3 1968   1   0   0   0 …  …  …  …  …  …  … 19   5 2007   3   0   5   0 20   5 1940   5   0   0   5   5 30   8 1974   3   0   0   0 31   8 2007   4   8   0   0   8 32   9 1974   1   0   0   0 38  10 1975   3   0   0   0 39  10 2005   4   0   0   0 40 D2: =$A$2:$A$1000*($B$2:$B$1000=2007)*($C$2:$C$1000=4) E2: =$A$2:$A$1000*($B$2:$B$1000=2007)*($C$2:$C$1000=3) F2: =A2*NOT(ISERROR(MATCH(A2,E$2:E$1000,FALSE)))*AND(B$2:B$1000<1986,C$2:C$1000>2) G2: =IF(D2+F2,D2+F2,"") 範囲 D2:G2 を下方にズズーッとドラッグ&コピー H2: =SMALL(G$2:G$1000,ROW(A1))   [条件付き書式]で次の設定     数式が    =ISERROR(H2)     フォント色  白 セル H2 を下方にズズーッとドラッグ&コピー

jyouhoukan
質問者

お礼

遅くなって申し訳ありません。回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • bonaron
  • ベストアンサー率64% (482/745)
回答No.4

クエリ1個でもできます。 ただ、メンテナンスが難しくなりますので SQLが得意というのでなければ、複数クエリでやる方がお勧めです。 --------------------------- SELECT 世帯番号 FROM データ WHERE (世帯番号 In (SELECT 世帯番号 FROM データ WHERE ((生年<1987) AND (続柄 In (3,4,5)));) ) AND (生年=2007) AND (続柄=3) UNION SELECT 世帯番号 FROM データ WHERE (続柄=4) AND (生年=2007);

jyouhoukan
質問者

お礼

遅くなって申し訳ありません。回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

>この例の場合、世帯番号で2、5、8が該当世帯です。 どうして10が省かれるの?

jyouhoukan
質問者

補足

遅くなりまして申し訳ありません。 単純に2007年生まれがいないからです。

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

アクセスでやるのであれば、 基礎データをテーブル(X)として 1、生年2007と続柄3で抽出、世帯番号クエリを作成、(A) 2、生年2007と続柄4で抽出、世帯番号クエリを作成(B) 3、続柄1と2で抽出、世帯番号クエリを作成(C) 4、(B)と(X)で世帯番号で関連付けをし、両方含むものの世帯番号のクエリを作成し、生年が1987以前で抽出(回答1) 5、(A)と(C)で世帯番号で関連付けをし、両方含むものの世帯番号クエリを作成し、生年が1987以前で抽出(回答2) 回答1で子の子で世帯員に1987以前のものを含む世帯番号を抽出できる。 回答2で子で続柄が1か2のものが1987以前のものを含む世帯番号を抽出できる。 回答1と2を合体させて完了です。

jyouhoukan
質問者

お礼

遅くなって申し訳ありません。回答ありがとうございました。

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

関連するQ&A

  • データの抽出 Excel2003

    以下のA表があり、ここから該当するデータをB表のように抽出したいのですが、どすればいいでしょうか。 概要) ○田さん、△池さん、□海さんの家族がいます。 A表の世帯主欄には世帯毎に1,2,3と数字がはいっています。また、抽出した人は該当者の欄に同じく1,2,3と数字が入っています。 空白のセルはブランクの状態です。 なお、世帯主のみ時はこのサイトで教えて頂いたOFFSET関数とMATCH関数の組み合わせでできたのですが。 A表) ┌─────┬───┬───┐ │ 氏名     │世帯主│該当者│ ├─────┼───┼───┤ │○田 ○夫│    1│     │ ├─────┼───┼───┤ │      ○美│    │    │ ├─────┼───┼───┤ │     ○子│ │ 1│ ├─────┼───┼───┤ │△池 △夫  │ 2│ 2│ ├─────┼───┼───┤ │□海 □子   │ 3│ │ ├─────┼───┼───┤ │ □男   │ │ 3│ └─────┴───┴───┘ B表) ┌─────┐ │○田 ○夫│ ├─────┤ │△池 △夫│ ├─────┤ │□海 □子│ └─────┘

  • アクセスのクエリ 抽出について

    アクセスでクエリを組み、あるデーターベースから会員番号・名前を抽出しようとしています。 数万件ある会員番号から指定された500件を一度に抽出したいのですが、どのようにすればよろしいでしょうか。 この500件の会員番号はランダムで特にクエリを組める条件等もなく、抽出したい会員番号が記載されたエクセル一覧からコピーして、クエリの抽出条件に貼り付けたりしたのですが、うまくいきません。 会員番号を1件づつ、抽出条件に入れていくのも大変なので、いい方法があればと思っております。 基礎的なことかもしれませんが、どなたかご教示いただければ幸いです。 よろしくお願いいたします。

  • エクセルでの、表からのデータ抽出について

    関数を使った、表からのデータ抽出方法について教えてください。 氏名 生年月日 年齢 担当者 所属 佐藤 1973/4/5 33 加藤 営業 上田 1987/10/4 19 永田 経理 林 1978/6/8 28 永田 営業 西田 1977/7/9 29 清水 営業 長尾 1984/6/25 22 加藤 経理 上のような表がある時に、別のシートに誕生日ごとの表を出したいのですが、どのようにすれば良いか分からずに困っています。なお”別のシート”に抽出したデータは、以下のような表をイメージしています。 (抽出例) 1月生まれ 該当者なし 2月生まれ 該当者なし 3月生まれ 該当者なし 4月生まれ 5日 1973 33歳 佐藤 (加藤) 5月生まれ 該当者なし 6月生まれ 8日 1978 28歳 林 (永田) 25日 1984 22歳 長尾 (加藤) というように、誕生日を基準に月ごとに表示され、該当するデータの横軸のデータも連動して表示したいのと、可能であれば日にちの若い順に順番に表示ができれば理想的です。またできることなら、営業か経理かでシートが分けられると完璧です。 自分でできない割には欲張りな質問ですみません。方法をご存知の方に、ご教授いただければありがたいです。よろしくお願いいたします。

  • データの抽出方法

    お世話になっております。 以下のような場合で、いっぺんに抽出できる良い方法があれば教えて頂きたく、よろしくお願いいたします。 会社が運営するWebサイトの会員データ (エクセルで、レコード数は1万弱)の集計。 プレゼントキャンペーンに応募して頂いた会員の個人データで、 各自、個人情報以外に4桁の抽選番号が登録してあります。 プレゼントの当選番号に該当する全ての会員データを抽出したいのですが、 一つの抽選番号に対して何名も該当者がいるため、VLOOKUPが使えず、 当選番号も数十通り程あるので、オートフィルタも時間がかかってしまいます。。。。 宜しくお願いします。

  • エクセルの重複データの抽出

    住所録をエクセルで作ったものがあるのですが、件数が3000件ほどあり、項目数が名前、住所、電話番号とあるのですが、名前が重複している物をピックアップしたいのですが、方法がわかりません。どのようにしたら同じな前を抽出できるのでしょうか。ご回答お待ちしております。

  • 2世帯住宅の世帯主について

    今度、2世帯住宅で同居をするのですが、 親世帯・子世帯と分けて世帯主を1人ずつとしたほうがいいのか 1つの家なので世帯主は1人としたほうがいいのか メリット・デメリットを教えていただきたいです。 親世帯(父60歳会社員、母60歳専業主婦) 子世帯(夫30歳会社員、妻30歳会社員、子1人)で 子供を保育園に預けるので、世帯を分けた方が保育料が安くなりますよね? メリットはそれだけかなぁと思うのですが、他にメリット・デメリットはありますか? (住所が同一なので、保育料が安くなる・・ということはないでしょうか?) また、今はまだ親と子が別々に暮らしていて 子世帯の世帯主は、妻30歳会社員 となっているのですが 2世帯住宅で世帯主を分ける場合、妻30歳会社員 が 子世帯の世帯主となっていても問題はないでしょうか? 妻30歳会社員 は嫁です。 また、夫30歳会社員 は国民年金や、国民保険料を支払っていない期間があります。 夫30歳会社員 を世帯主にした場合、上記や税金の徴収が発生するのでしょうか? 色々と質問しましたが、教えてください。よろしくお願いいたします。

  • アクセスでデータをまとめる方法

    今エクセルで60ファイルある中からある条件を 抽出しなくてはいけないのですが、60ファイル 全部開いてフィルタをかけたりCOUNTIFを するのがあまりに手間でアクセスでできないか 考えています。ちなみにイメージは <イメージ> 番号 名前  日付 1  Aさん 10/1 2  Bさん  4/1 3  Cさん  5/1 4  Dさん  4/20 というエクセルファイルから4月は何件あったか というのを抽出したいと考えています。 こんな感じのエクセルデータをアクセスで1ファイル にしてbetween を使えばできるかとは思っているの ですが、60個のエクセルファイルをアクセスで ひとつにまとめるいい方法がわらず、困ってます。 なにかいい案がありましたら教えて下さい!

  • MSDEでデータを抽出する時の処理時間

    Accessのデータベースから、ADOを用いてExcelにデータを抽出する作業をさせているのですが、データベースのレコード件数が多すぎて(現在40万件くらいで、日々2000件くらい増加)、時間がかかって困っています。 ある本に、「MSDEはAccess(Jet)に比べると、より大規模なデータを高速に扱うことが可能になっています。」と書いてあるのですが、これはSQLでの抽出時間が早くなるということで良いのでしょうか? 初心者で、プログラムや専門用語等に詳しくありませんので、できれば簡単な表現で教えていただけたら幸いです。よろしくおねがいします。

  • VBAで期間でデータを抽出するには?(Excel2003)

    いつも助けていただきありがとうございます。 Excel2003でデータベースを作成しました。 「日付」のところには、2008/11/18という形式で入力していますが、 VBAでフォームから「○○○○年○月~○○○○年○月までを抽出」として、 該当レコードを抽出するにはどうしたらよいでしょうか? いろいろ試してはみたのですが、よい方法・アイディアができませんでした。 VBA初心者です。よろしくお願いします。

  • アクセス 同じ年生まれの者を抽出する抽出条件の入力方法

    アクセス2000 名簿テーブルに日付時刻型で生年月日を入力し、和暦で(例 S30-05-21)表示させております。クエリで同じ年生まれの者を抽出したいのですが、抽出条件に year([名簿]![生年月日])=1955 とすれば昭和30年生まれの者が抽出できることは分かったのですが、抽出条件に1955ではなく、S30を使って抽出する方法を知りたいのです。 宜しくお願いします。

このQ&Aのポイント
  • 口座番号など正しく合っていても常陽バンキングアプリからの振込ができない
  • アクセスジェイに口座登録が残っているとできないのか?
  • 今後アクセスジェイアプリは無くなるのか?
回答を見る

専門家に質問してみよう