• ベストアンサー

Excelの表引き関数で複数の項目を引数にしたい場合の方法は?

(登録番号,氏名,生年月日,住所) (1,山田太郎,19800101,東京都) (2,山田次郎,19810101,大阪府) (3,山田花子,19820101,愛知県) ・ ・ ・ このような形で並んでいる表を参照して、 別表 (登録番号,氏名,生年月日,住所) ・ ・ ・ にどれか1つの項目を入れると残りの項目が出てくる方法を考えています。 (例えば登録番号を入れれば氏名、生年月日、住所が。氏名を入れれば、登録番号、生年月日、住所が) 入力する項目が1つならばVlookup関数を使えばいいというのはわかるのですが、 その場合に応じて入力する項目が異なる場合はどのような関数を使えばよいでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • mako_sea
  • ベストアンサー率47% (62/130)
回答No.2

>別表 >(登録番号,氏名,生年月日,住所) >・ >・ >・ >にどれか1つの項目を入れると残りの項目が出てくる方法を考えています。 この挙動に一番近いのは、フィルタオプション機能かと思います。 http://akubizzz.hp.infoseek.co.jp/sub40.html ただしこれは関数ではありません。 また、フィルタオプションより簡便な機能として、 オートフィルター機能があげられます。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/filter.htm オートフィルターで割り出した抽出表は、 コピー&ペーストで簡単に結果だけ別シートなどに貼り付け可能です。

bozechan
質問者

お礼

ありがとうございます。 とりあえずオートフィルターと簡単なマクロを使用して、 目的の機能をつけることができました。

その他の回答 (3)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.4

作業列案で シート 別表   A      B    C     D   1 登録番号 氏名 生年月日 住所 2                 抽出したい内容を入れる場合 3 4 シート データ   A      B    C     D    E 1 登録番号 氏名 生年月日 住所 2                 E2セルに =IF(ISERROR(FIND(TRIM(別表!A$2&別表!B$2&別表!C$2&別表!D$2),A4&B4&C4&D4)),"",ROW()) 下フィルして、条件にあうデータのみ行番号、ほかは空白 を表示させておく。 シート 別表の A4セルには =IF(ISERROR(SMALL(データ!$E:$E,ROW(A1))),"",INDEX(データ!A:A,SMALL(データ!$E:$E,ROW(A1)))) 右フィル、下フィルしてみてはいかがでしょうか。

bozechan
質問者

お礼

ありがとうございます。 今回はこれをみる前にマクロとオートフィルターで作ってしまいましたので 参考にできませんでしたが、これはいろんなところで使えそうな手法ですね…。 また何かあったらよろしくお願いします。

  • higekuman
  • ベストアンサー率19% (195/979)
回答No.3

#1さんがおっしゃる通り、VBAじゃないと無理ですね。 オートフィルタで抽出して、それをコピペするのは手間なんですか? ところで、すべての項目は重複しないのですか? 住所や氏名や生年月日の同じ人はいないのでしょうか? 生年月日が同じ人がいた場合は、どういう処理をするつもりでしょうか? VBAで作るのであれば、初歩的な知識だけで何とかなります。 オートフィルタで抽出するのが面倒なのであれば、VBAを勉強しましょう。 VBAを知らないまま誰かに作ってもらっても、修正したいときに修正できませんよ。

bozechan
質問者

お礼

ありがとうございます。 住所や氏名といった項目は例で挙げたもので、実際には 絶対に重複することのないデータで使用するつもりでした。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>どれか1つの項目を入れると残りの項目が出てくる方法を考えています。 このような事は関数ではできません。 VBAで行う必用があります。

bozechan
質問者

お礼

ありがとうございます。 やはりVBAでないと無理でしたか…。

関連するQ&A