• ベストアンサー

エクセルでデータ抽出

エクセル初心者です。 エクセルでに次のような表を作っております。 (Sheet1) 担当 会社 郵便番号 住所 菊地 A社 0000000 ○○○○ 菊地 B社 0000000 ○○○○ 菊地 C社 0000000 ○○○○ 田中 D社 0000000 ○○○○ 田中 E社 0000000 ○○○○ 山本 F社 0000000 ○○○○ 山本 G社 0000000 ○○○○        ・        ・        ・ と800件くらいあるのですが、 これを 別シート(Sheet2)で名前を菊地と入力すると菊地のデータが一覧で出るようにしたいのですが、どうしたらよいでしょうか。 できれば、マクロを使わずに関数でやりたいです。 VLOOKUPかな?と思い、いろいろ調べたのですが、抽出したいデータが複数あるので、悩んでおります。 すみませんが、どなたかご指導お願い致します。

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

  • ベストアンサー
  • sakenomo
  • ベストアンサー率52% (35/67)
回答No.6

式を修正しました。表はA列からD列までとしています。式をB1に入れた後、下と右方向へオートフィルしてください。 =INDEX(Sheet1!$A$1:D$1010,IF(COUNTIF(Sheet1!$A$1:$A$1000,$A$1)>=ROW(),MATCH($A$1,Sheet1!$A$1:$A$1000,0)+ROW(A1)-1,1010),COLUMN()-1) 該当データが無い場合は、各列の1010行のセルの内容が表示されます。0を消す方法を#4に書きましたが、データ中に0があることが考えられる場合は、スペースを使った方法の方がいいかもしれません。

noname#5598
質問者

お礼

回答ありがとうございます。 おお!できました!感謝です! とりあえずコピペしてやっただけなんですが、これから式のほうも、研究させていただきます☆ わがままにつきあっていただきありがとうございました。

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

その他の回答 (5)

  • sakenomo
  • ベストアンサー率52% (35/67)
回答No.5

#4です。m(__)m すみません。#4のは、名前しか抽出しませんね。寝起きの頭で考えていて、ボケてました。ああ、恥ずかしい。

すると、全ての回答が全文表示されます。
  • sakenomo
  • ベストアンサー率52% (35/67)
回答No.4

表はあらかじめ担当名をキーに、ソートしてあるものとします。また、表の最終行は1000行としています。 Sheet2のA1に検索する名前を入力するものとして、 B1に以下の式を入れて、下へ必要分だけオートフィルしてください。 =INDEX(Sheet1!$A$1:$A$1010,IF(COUNTIF(Sheet1!$A$1:$A$1000,$A$1)>=ROW(),MATCH($A$1,Sheet1!$A$1:$A$1000,0)+ROW()-1,1010),0) 名前が入らないセルには0が表示されますが、この0はSheet1のA1010の内容を表しています。 0を表示したくない場合は、A1010にスペースを入力するか、式を入れたセルの書式の表示形式を、ユーザー定義で#にしてください。

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

関数は、条件に合った行の抜き出しが不得手です。 だからマクロはいや、操作がいやというのは考えを改めるべきと思います。 本質問コーナーで関数式に拘る方が多いのですが、関数式の得手不得手を考えないと。 関数の回答を上げますが、正直のところ技巧的だと思います。 (データ)サンプルとして、Sheet2のA1:B11に 東田 大分市 大川 別府市 菊地 下関市 大川 防府市 三田 三原市 河野 新見市 大川 倉敷市 山田 姫路市 西野 明石市 浜野 尼崎市 大川 長岡京市 (質問では、同名は同一営業マンのケースですが、変えてますがよろしく) (条件) 探す人の名前をSheet3のA1セルに「大川」と入れます。 (関数式) Sheet3の B1セルに=IF(Sheet2!A1=$A$1,1,"")といれB11(最下行)まで複写します。 C1セルに=COUNT($B$1:B1)といれ最下行まで複写します。 D1セルに=IF(ROW()<MAX($C$1:$C$11)+1,OFFSET(Sheet2!$A$1,MATCH(ROW(),$C$1:$C$11,0)-1,0),"") といれ最下行まで複写します。 E1セルに=IF(ROW()<MAX($C$1:$C$11)+1,OFFSET(Sheet2!$A$1,MATCH(ROW(),$C$1:$C$11,0)-1,1),"") といれ最下行まで複写します。(D列と1字違いだけです。) D,E列のような式をFG・・列に項目(フィールド)数だけ作ります。 (結果)Sheet3のD1:E4に 大川 別府市 大川 防府市 大川 倉敷市 大川 長岡京市 (その他) Sheet3のBとC列は(楽屋裏のデータで)邪魔なので、見え難いX、Y列などに持っていくのがよいかも。 上記を理解し、自分のケースではどこをどう変えるべきか を会得してください。

noname#5598
質問者

お礼

回答ありがとうございます。 >だからマクロはいや、操作がいやというのは考えを改めるべきと思います。 すみません。色々わけありでして、このデータを私本人が管理するのであれば、マクロでも操作でも問題ないのですが、上からとにかく使いやすくしろとのことで。。 こんなわがままにつき合わせて申し訳ありません。m(_ _)m これから回答の方試してみます。 まずは、御礼だけ先にさせていただきます。

すると、全ての回答が全文表示されます。
回答No.2

[データ]->[フィルタ]->[フィルタオプション]で、抽出先をSheet2の任意の場所、リスト範囲をリスト全体、検索条件範囲をSheet2の任意の場所(上の方がよい)二設定します。 抽出条件は、 担当 会社 郵便番号 住所 菊地 のようにします。 AND条件のときは、同じ行に OR条件のときは、別の行に 条件を設定します。

noname#5598
質問者

お礼

回答ありがとうございます。 すみません。できればメニューの機能などは使わずに、別シートに名前を入力すると一覧が表示されるというような設定にしたいのですが。。

すると、全ての回答が全文表示されます。
  • fiva205c
  • ベストアンサー率43% (234/533)
回答No.1

同じシートになりますが、フィルターを使えば菊地分だけ抽出できますけど、それはもうご存知でしたか? http://homepage1.nifty.com/kenzo30/ex_kisosyo/ex_ks_syokyu9_2.htm

参考URL:
http://homepage1.nifty.com/kenzo30/ex_kisosyo/ex_ks_syokyu9_2.htm
noname#5598
質問者

お礼

回答ありがとうございます。 フィルターは知りませんでした(^^; しかし、やはりメニューの機能などは使わずに、別シートに名前を入力すると一覧が表示されるというような設定にしたいのですが。。

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

関連するQ&A

専門家に質問してみよう