• ベストアンサー

表から指定した行のみを別シートに抽出するには

エクセル2002 ある表から、集計表として別のシートに行を抽出できる関数をおしえてください。 【シート1】      O列  P列  Q列  R列  S列  T列  U列    行9  種類  厚さ   w    H  枚数  か所   計 行10    行11 AAA  t6.8  1500  2000   3    3     9   | | 行15 AAA   t3   1000  2000   2    1     2 行16 bbb   t6.8  500   1500   1    3     3  : : という表から別のシートに 集計表として 【シート1】集計表AAA     O列  P列  Q列  R列  S列  T列  U列    行3  種類  厚さ   w   H   枚数 か所   計 行4  AAA  t3   1000  2000   2    1    2 行5  AAA  t6.8  1500  2000   3    3    9  | | 行15 AAA   t3   1000  2000   2    1    2 行16    : のように抽出する関数を教えてください。 出来れば集計表の横に種類ごとに選択したら、種類ごとに表示が変わるようならばよいのですが。。。  関数初挑戦のため大変なことになりそうな気もします。。。   皆様、ご教授のほどよろしくお願い致します。

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

>関数初挑戦のため大変なことになりそうな気もします。。。   ご希望の表示を関数で行うにはきわめて複雑な配列数式を使う必要があります。 初心者には数式を理解することが無理と思いますが、エクセルではこんなこともできるということで参考までに提示します。 元データがSheet1にあり、集計表シートのO1セルに抽出条件の種類の「AAA」などが入力されているなら、O4セルに以下の式を入力してCtrl+Shift+Enterで確定します。 =IF(COUNTIF(Sheet1!$O$10:$O$1000,$O$1)<ROW(A1),"",INDEX(Sheet1!O:O,SMALL(IF(Sheet1!$O$10:$O$1000=$O$1,ROW($10:$1000),""),ROW(A1)))) *このようなケースでは抽出条件を入力したフィルタオプションの設定を利用するのがお勧めです。

co-kichi
質問者

お礼

使用時間に制限がありお礼が遅れまして申し訳ありません。 回答ありがとうございます ほんと 複雑そうですね。。。 参考にさせていただきます。 今後 ぼちぼちと関数を理解できるようがんばっていきます。 もし、さし使いなければ今後のため、お手すきの時にでも解説いただければ 幸いです。 重ね重ねで申し訳ありません。  よろしくお願いしますm(_ _)m

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.3です! たびたびごめんなさい。 前回の回答の中で文章に誤りがありました。 >一番簡単な方法はオートフィルだと思います。 の部分の 「オートフィル」 → 「オートフィルタ」 に訂正してください。 どうも何度も失礼しました。m(__)m

co-kichi
質問者

お礼

重ね重ねありがとうございますm(_ _)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 間違っていたらごめんなさい。 質問を読ませてもらうと、ガラスの種類と寸法みたいですね! t6.8 の部分が網入りガラスだと思います。 (余談ですが、当方もその道の仕事をしています。) ところで本題ですが、 種類を指定すればその行だけを抽出できれば良いという事ですよね? 一応そういうことだと解釈しての回答になります。 一番簡単な方法はオートフィルだと思います。 その回答はすでに出ていますので 他の方法の一例です。 ↓の画像で説明させていただくと Sheet1の元データがあり、Sheet2のN3セルに品名を入力すると 必要部分のみ表示するようにしています。 Sheet1のN列を作業用の列とさせてもらっています。 N10セルに =IF(OR(Sheet2!$N$3="",Sheet2!$N$3<>Sheet1!O10),"",ROW(A1)) という数式を入れ、オートフィルのフィルハンドルでずぃ~~~!っと下へコピーします。 Sheet2の数式が1000行まで対応できるようにしていますので そのくらいまでコピーしても構いません。 次にSheet2のO4セルに =IF(COUNT(Sheet1!$N$10:$N$1000)<ROW(A1),"",INDEX(Sheet1!O$10:O$1000,SMALL(Sheet1!$N$10:$N$1000,ROW(A1)))) という数式を入れ、列方向と行方向にオートフィルでコピーすると 画像のような感じになります。 以上、参考になれば幸いですが、 的外れなら読み流してくださいね。m(__)m

co-kichi
質問者

お礼

使用時間に制限がありお礼が遅れまして申し訳ありません。 回答ありがとうございます。 そうーなんです。がらすの集計表なんです~! 同じ道の方からとはびっくりしました~。。 ざんねんながら、画像が見えませんが貼り付けしてがんばります!! 丁寧にありがとうございましたm(_ _)m

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

関数ではなくオーソドックスにフィルタオプションを使う方法を提示します。 まず、元データの項目名を含む範囲を選択し、画面左上の名前ボックス(セル番地が表示されているところ)に、たとえば、「リスト」と入力し、Enterで確定してその範囲に「リスト」という名前をつけておきます。 次に、抽出したデータを表示するシートのA1セルにO列からU列の項目名をコピーしておきます。 たとえば種類が「AAA」の行を抽出するなら、このシートのA2セルに「AAA」と入力して条件をセットします。 「データ」「フィルタ」「フィルタオプションの設定」でリスト範囲に「=リスト」、検索条件範囲に「A1:U2」(種類だけの条件ならA1:A2でよい)を選択して、指定した範囲に表示する適当なセルを選択し、OKします。 この操作を新しいマクロの記録で記録し、ボタンなどに登録すれば、条件入力後、ボタンをクリックするだけで抽出されたデータを表示することができます。

co-kichi
質問者

お礼

使用時間に制限があり御礼が遅れまして申し訳ありません。 回答ありがとうございます やはり 関数は大変のようですね。。。 フィルタオプションの設定でがんばってみます。 ありがとうございましたm(_ _)m

関連するQ&A