• ベストアンサー

Excelでの名前検索

苗字、住所、電話番号が並んだ表があります。 苗字は当然のごとく重複してくるのですが、この苗字を検索した時に該当者全員分の住所、電話番号が出てくるようなセルを作りたいのですが可能でしょうか。 vlookupでの検索をイメージしていたのですが…。 フィルタで絞るにも200件からあるので探すのがめんどくさく、使用するときには時間がなかったりします。 という条件で、何かよい方法があったら教えて下さい。

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

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

A~C列:住所録(リスト) E2:検索する苗字(入力) F2:住所 =IF($H2="","",INDEX(B$1:B$999,$H2)) G2:TEL =IF($H2="","",INDEX(C$1:C$999,$H2)) H2:検索された場合の行数 =IF(ISERROR(MATCH($E$2,OFFSET($A$1,$H1,0):$A$999,0)),"",MATCH($E$2,OFFSET($A$1,$H1,0):$A$999,0)+$H1) F2~H2、まとめて下に適当数コピー H1は空白にすること。 最大行数は適当に変更。

その他の回答 (2)

回答No.3

私もフィルタがいちばんお手軽な方法だと思います。でもそれさえ時間がかかって面倒なのだとすると、理由があるのかもしれませんね。つまり想像ですが、重複しているデータを絞り込もうとしても、なかなかデータ数が減らないのではありませんか?「200件」とは、フィルタのボタンで出てくる一覧での件数ですか? そうだとすると、既存のデータを分割して、列の数を増やすといいと思います。フィルタは複数の列で同時に絞り込めるのだから、列数が増えれば当然、簡単に絞り込めるようになるはずですね? 文字数とか特定の文字列とか、何らかの基準で列を分ける方法はいろいろあります。「山田太郎」を「山田」と「太郎」に、「345-0012」を「345」と「-」と「0012」に、「東京都千代田区丸の内1-2-3」を「東京都」と「千代田区」と「丸の内1-2-3」に…と元々分けられていれば、絞り込みやすいですね? 分けたデータを再び 1 つにつなげることも簡単にできるので、安心してください。 そういった方法をお尋ねになりたい場合は、このご質問はいったん締め切って、新たなご質問として投稿してください。その際、具体的なデータが示されていると、回答者も答えやすいです。個人情報は伏せて。 また、No.2さんがおっしゃっている、いわゆる「あいまい検索」も、簡単ですが大事な技です。つまり「含む」ほかを使ってのフィルタによる絞込みです。例えば「田」を含むデータを探せば、「太田」とか「田中」とか「島田」とか、いろいろ同時に出せますね。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

>めんどくさくて時間が無い エクセルには該当するリストをつるつるっと並べて出してくれるような、そういった関数は一つもありません。(他の計算ソフトでは、そういう関数が用意されているモノもあります) ちょーメンドクサイ数式をダラッと書けば、まぁそういう計算も出来ます(実際ここのような質問相談掲示板の過去ログには、とてもたくさんのそういうご相談があります)が、現実的にまさに「今欲しい」時にすらすらっと出てくるようなシロモノじゃありません。 #参考 A列に苗字、B列に住所、C列に電話 D1に検索用の苗字(前方後方一致) E1に =INDEX(A:A,SMALL(IF(ISNUMBER(FIND($D$1,$A$1:$A$999)),ROW($A$1:$A$999),9999),ROW(E1)))&"" と記入し、コントロールキーとシフトキーを押しながらEnter 下にコピー、右にコピー 実際にはオートフィルタを使って、「佐藤を含む」とか「田中で始まる」といった具合に絞り出すのが、一番何も考えずにできる簡単な方法です。 #参考 手を動かすのがメンドクサイのでどーしても関数でやりたいなら、もうちょっとふつーの関数だけ使って 準備: B列に苗字、C列に住所、D列に電話 E2に検索用の苗字(完全一致) 手順: A2に =IF(B2=$E$2,COUNT($A$1:A1)+1,"") と記入、下向けにコピー F2に =IF(ROW(F1)>MAX($A:$A),"",VLOOKUP(ROW(F1),$A:B,COLUMN(B1))) と記入、下にコピー、右にコピーしてやると出来ます。

関連するQ&A