天使と悪魔選手権

シート1のデータを抽出してシート2に表示させるにはどうしたらいいでしょうか。
各支店ごとにまとめた用紙をすべて印刷しなくてはいけないので教えて下さい!

【シート1】
 A  B   C   D
1 名前 担当 支店 グループ
2 田中 あ社 大阪 B
3 山田 い社 福岡 A
4 佐藤 う社 東京 B
5 吉田 え社 福岡 A


50くらいまでデータ有

【シート2】
 A   B   C   D
1 福岡 ←ドロップダウンリストから選ぶ  
2
3 名前 担当 グループ
4 山田 い社 A
5 吉田 え社 A


といったように、シート2のA1に抽出したい支店を表示し、A3以降にデータを表示させたいです。
似たような例は過去の質問にたくさんあるのですが、今ひとつきちんと応用できずうまくいかないので質問させて頂きました(>_<)
ちなみに、シート1のデータは全部で1000件以上ありこれからも蓄積されていくので、毎回必要なものだけ日付でオートフィルしたものが約50行となります。
また、シート1は行も列も並べ替えられません。
マクロは苦手なので、数式を教えて頂けないでしょうか。どうぞよろしくお願い致します。

質問者からの補足コメント

  • E4に入力する式が、何かうまくいきません(>。<)
    入力ミスはないと思うのですが…

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/01/17 21:54

A 回答 (2件)

シート1に列を追加できないのであれば、別のシートに抽出用のセルを作る必要がありますね。


(A3以降にデータをと書いていますが、シート2を見ると3行目ははタイトル行のようですので、A4~で書かせてもらいます)

考え方としては、シート2のA1に一致する、シート1のC列にあるセル、の行番号を抽出する。
そしてシート2にて、そのセルのタイトル(名前・担当・グループ)に一致するシート1の列から、その行番号目のセルに表示されているものを取得する。
という流れになりそうですね。

まず、シート2のE列(じゃなくてもいいですけど仮で)に該当する行番号を取得させたいと思います。
E3は空白にしといてください。(空白じゃない場合はE4の式のみ変更させる必要があります)
50程データがあるということなので、最後尾をC100としています。必要に応じて変更してください。
E4(E5以降コピー)=E3+MATCH(A1,INDIRECT("シート1!C"&E3+1&":C100),0)
これは、1つ上のセルの値をXとして説明しますが、Xに(検索値(福岡)がシート1のC(X+1)~C100の中で何番目のセルにあるか)を加えたものです。
つまり、E4であれば福岡が1番目に出てくる行番号、E5であれば福岡が2番目に出てくる行番号、…を表示しています。

次に表示したい各セルに式を入れます。
A4(A5~とB,Cにもコピーで可能です)=HLOOKUP(A$3,シート1!$A:$D,$E4,FALSE)
これは、そのセルのタイトル行(名前、担当、グループ)をシート1のA~D列で検索し、一致した列のX番目のセルデータを取得する。というものです。

これらを必要な行数分コピーすれば一覧ができると思います。
抽出する物がない場合(該当が10しかないのに11個目を探そうとした等)はエラー表示が出ます。
エラーを出さないようにするには、
=IF(ISERROR(セルの式)=TRUE(),"",セルの式)とすることで、エラーを表示するセルは空白にできます。
式の意味は、もしエラー判定(セルの式)がTRUEなら(つまりセルの式の結果がエラーになるなら)、””(空白を意味します)を、そうでないならセルの式を表示。
となっています。
この回答への補足あり
    • good
    • 1
この回答へのお礼

すごくわかりやすい説明をつけて頂いて、本当にありがとうございます!自分なりに調べても不明だった部分が理解できました(T_T)
早速頑張ってみます!

お礼日時:2017/01/16 16:14

すいません。

「”」が抜けてました。正しくは
E4(E5以降コピー)=E3+MATCH(A1,INDIRECT("シート1!C"&E3+1&":C100”),0)
です。:C100の前後に「”」がついてます。
試してみてください。
    • good
    • 0
この回答へのお礼

ありがとうございます!完璧にできました(*^_^*)

お礼日時:2017/01/17 23:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!