• ベストアンサー

エクセルでリストに対応するデータを別シートの表

エクセルでリストに対応するデータを別シートの表に参照したいです。 「表シート」のB2にリストを作って、 (リストは「一覧表シート」のA,B,Cが入力されているセルを参照しています。) Aを選択すると101の下の段(B11)に、 「一覧表シート」のAの列101の111が入力されるようにしたいです。 Bを選択すると222、Cを選択すると333が入力できるようにしたいです。 この「表シート」の表がややこしいのですが、 建物の部屋番号に対応しているため、3階2階1階という順になっています。 関数で対応できるものでしょうか? 分かりにくい表ですが、よろしくお願いします。

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

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

単純に規則的に並んでいるだけなので、順番に取ってくる数式でもできますが。 とりあえずエクセルの基本の練習として、VLOOKUP関数を使ってみましょう。 表シートのB7には =IF($B$2="","",VLOOKUP(B6,一覧表!$B$3:$E$11,MATCH($B$2,一覧表!$B$2:$E$2,0),FALSE)) と記入、各セルにコピー貼り付けます。 #補足 表一覧の各室ABC欄には、とりあえずすべてデータが記入されているとします。 ご相談の言葉足らずで実際には空欄があったりするときは、状況に応じて上述の関数式を =IF($B$2="","",VLOOKUP(B6,一覧表!$B$3:$E$11,MATCH($B$2,一覧表!$B$2:$E$2,0),FALSE)&"") なんて具合にしてみたりなど、応用します。

emima
質問者

補足

回答ありがとうございます。今、補足に書いて下さったの数式をコピーして試してみたところ、思った通りに動いていました。 それぞれの関数は使ったことがあるのですが、合わせ技まで持ち合わせていませんで、大変勉強になりました。 書いて下さった下記の数式の =IF($B$2="","",VLOOKUP(B6,一覧表!$B$3:$E$11,MATCH($B$2,一覧表!$B$2:$E$2,0),FALSE)&"") 関数の引用で1つ1つの意味を確認したのですが、 まず、IF関数で、論理式が$B$2=""         真の場合""         偽の場合VLOOKUP(B6,一覧表!$B$3:$E$11,MATCH($B$2,一覧表!$B$2:$E$2,0),FALSE)&"") 偽の場合のVLOOKUP(B6,一覧表!$B$3:$E$11,MATCH($B$2,一覧表!$B$2:$E$2,0),FALSE)&"")      VLOOKUP(B6,一覧表!$B$3:$E$11,MATCH($B$2,一覧表!$B$2:$E$2,0),FALSE) までは理解ができたのですが、 最後の&""の部分が理解ができませんでした。 もしよろしければ、教えて頂ければ嬉しいです。

その他の回答 (2)

  • basic_gg
  • ベストアンサー率50% (14/28)
回答No.3

あなたのやりたいことが見えません。 1)"参照したい"・"入力できるようにしたい"のどちら? 入力できるようにしたい"のならマクロしかないが、 入力する気はさらさらなさそうなので、 参照をつかって表示したいのでしょう。 2)Aを選択すると101の下の段に111、Bを選択すると222… 選択するものは A・B・C のどれか 1つ…… チョッと待ってください!! 102号室・103号室はどうなるのですか? 3階2階の各部屋はどうなりますか? ◎「表シート」をコピーしてSheetA・SheetB・SheetC を作るほうが簡単だと思います。 面倒な数式も必要ないし、 何か変更が必要なときは、入力できるし。

emima
質問者

お礼

回答ありがとうございました。 お礼が遅くなり申し訳ございません。 1)についてですが、入力したものを参照したいという事だったのですが、伝わらなかったようで、申し訳ないです。 2)についてですが、各部屋すべてにデータが入るわけではありませんが(例101、203、302のようにです)なんとなくですが、数式を組み合わせたら入力できることは分かっていましたので、他の列はコピーすれば分かるだろうと思い省略しました。 文章で質問するのは難しいですね。 反省します。 時間を割いて回答して下さりありがとうございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

お示しの表シートがシート1に有って一覧表シートがシート2にあるとしたらシート1のB11セルには次の式を入力します。 =IF($B$2="","",IF(INDEX(Sheet2!$C$3:$E$11,MATCH(B10,Sheet2!$B$3:$B$11,0),MATCH($B$2,Sheet2!$C$2:$E$2,0))="","",INDEX(Sheet2!$C$3:$E$11,MATCH(B10,Sheet2!$B$3:$B$11,0),MATCH($B$2,Sheet2!$C$2:$E$2,0)))) その後にB11セルを選択してからD11セルまで右横方向にドラッグコピーします。 また、B11セルを選択してからコピーし、B9セルに貼り付けを行い、その後にD9セルまでドラッグコピーします。 同様にB11セルを選択してからコピーし、B7セルに貼り付けを行い、その後にD7セルまでドラッグコピーします。

emima
質問者

お礼

回答ありがとうございます。 お礼が遅くなりまして申し訳ございません。 コピーして、シート名を変えて試したところ、やりたいことができました。 No.1で回答して下さった方と少し数式は違いましたが、同じように作業出来て、とても勉強になりました。 時間を割いて回答してくださってありがとうございました。

関連するQ&A