- ベストアンサー
複数条件を満たすVLOOKUP関数
Excel独習者です。 次の3つのシートがあります。 「入力窓口」「M1組」「M2組」「M3組」 シート「M1組」「M2組」「M3組」には各クラスの生徒の出席番号(B列)と氏名(C列)が名票としてあります。 シート「入力窓口」のcells(C,6)にクラス名を入力します。 シート「入力窓口」のcells(H,7)に出席番号を入力するとcells(I,7)に該当クラスの該当番号の氏名が 表示されるようにcells(I,7)に次の式を入力しましたがエラー表示でうまくいきません。 =IF(H7="","",IF(C6="M11",VLOOKUP(H7,'M11'!$B$4:$C$11,2,IF(C6="M12",VLOOKUP(H7,'M12'!$B$4:$C$11,2, IF(C6="M13",VLOOKUP(H7,'M13'!$B$4:$C$11,2,))))))) どのような式を入力すべきかご助言いただけたら幸いです。 なお、OSはVISTA、Excelは2007です。 よろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 一例です。 M1~M3組のSheetそれぞれの範囲を名前定義します。 当方使用のExcel2003での場合になりますが、 メニュー → 挿入 → 名前 → 定義 アルファベットや数値を名前欄に当てはめられないと思いますので アンダーバーを付けて _M1 のようにそれぞれのSheet別にVLOOKUPの範囲を名前定義します。 そして、↓の画像のI7セルに =IF(OR(C7="",H7=""),"",VLOOKUP(H7,INDIRECT("_"&C7,0),2,0)) という数式を入れています。 これでクラス名欄と出席番号欄にそれぞれ入力すれば 希望の表示ができると思います。 お使いのExcel2007にも同様の操作方法ができるはずですので お試しください。 以上、参考になれば幸いです。m(__)m
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
質問の書き方が適当でなく判りにくい。 シートの簡単な実例を挙げて何をしたいのか説明すること。 どんな検索表があるのか書かないとよくわからない。 cells(C,6)はVBAで似たような書き方をするので、ここでは不適。 VBAのCellsなら順序が逆だ。 セルI7などとすべき。 >出席番号 生徒に付けた生徒番号ではないのか。 >名票としてあります 何の意味?クラスでそういう語句を使うの?業界用語は使わないで。 >複数条件を満たすVLOOKUP関数 これと本文の関係が良くわからない。 2列にわたる条件で、VLOOKUP関数を使えないはず。 だから2列の値を各行で結合した列を作り、そこを検索表として使うのだが、そんな質問ですか。そのとき単純に2列を&で結合してはダメなのはわかるかな。
お礼
imogasi様 いろいろ不備な点をご指摘いただき感謝いたします。 ご指摘いただいたすべての点がおっしゃる通りだと納得しました。 >2列にわたる条件で、VLOOKUP関数を使えないはず。 だから2列の値を各行で結合した列を作り、そこを検索表として使うのだが、そんな質問ですか。 複数ののシートを統合するシート上でVLOOKUP関数を適用し、それら複数のシート(すべてのシートは同じ形式の表でクラスごとの生徒の番号と氏名が書いてあります)から一つのシートを選んで該当クラスの入力した生徒番号の氏名を表示させたいというのが私の意図でしたが書き方が分かりにくく、大変ご迷惑をおかけしました。 これも十分わかりにくいと思いますが、お礼には画像が添付できないのですみません。 統合シート上には該当クラス名を入力するセルがあります。 該当クラス名を入力した後で、同じ統合シート上の生徒名簿の表に生徒番号を入れると該当クラスの生徒氏名が表示されるようにしたいのです。 このようなことができるのでしょうか。 何回も申し訳ありませんがアドバイスをいただけたら大変助かります。 よろしくお願いいたします。
- tom04
- ベストアンサー率49% (2537/5117)
No.3です! たびたびごめんなさい。 名前定義の変更ですが、簡単にできると思います。 Excel2007の場合はどのような画面が出るか判りませんが、 2003ですとメニュー → 挿入 → 名前 → 定義 で↓の画像のような画面が出ますので 名前定義したものが並んでいるところでクリックすると その名前定義のものが選択されますので、「削除」を選べば 間違って範囲指定したものは解除できます。 Excel2007も同じような感じでできないでしょうか? どうも何度も失礼しました。m(__)m
お礼
tom04様 再度のていねいなご回答感謝いたします。 添付してくださった画像とExcel2007は若干異なりますが、やってみます。ありがとうございました。
- hallo-2007
- ベストアンサー率41% (888/2115)
シート名は 「M1組」「M2組」「M3組」? 「M1」「M2」「M3」? シート名が「M1組」「M2組」「M3組」で C6セルに「M1組」「M2組」「M3組」とシート名を入力するのであれば INDIRECT関数を使って =VLOOKUP(C8,INDIRECT(H7&"!A:B"),2,FALSE) M1とか組だけを省略して入力するのであれば =VLOOKUP(C8,INDIRECT(H7&"組!A:B"),2,FALSE)
お礼
hallo-2007様 ご回答感謝いたします。 シート名は「M1」等で、組はついていません。 失礼いたしました。INDIRECT関数についてすこし勉強してみます。 ありがとうございました。
- ruushii
- ベストアンサー率31% (25/80)
VLOOKUP(H7,'M11'!$B$4:$C$11 ・シート名の指定には'不要 ・シート名の相違 以上を改善して下記でうまくいくのでは? VLOOKUP(H7,M1組!$B$4:$C$11
お礼
ruushii様 ご回答ありがとうございます。 いただいたアドバイスを参考にもうすこしやってみたいと思います。
お礼
tom04様 画像までついた丁寧なアドバイスを頂いて感謝しております。 Excel2007にも「数式」というところに「名前の定義」がありました。 「範囲」で「M1」、「参照範囲」でvlookupの選択範囲、「名前」で 「_M1」とすればいいのかと思ってやってみましたが「参照範囲」をはじめ間違って別のところを指定して「_M1」と名前をつけてしまいました。正しい範囲に「_M1」をつけようとすると、「もう使われているのでその名前は使えない」とメッセージがでます。 書いてくださった式をみると、「_○○」という形が必要のように思えます。 無知のためせっかく教えてくださったことがなかなか使えない状態ですが、もうすこしやってみます。 とりあえず、御礼の言葉を述べさせていただきます。