- ベストアンサー
エクセルの関数式について教えてください。
エクセルで12個のシートに各月の勤務シフトを作成しています。13個目のシートは社内で使用しているカレンダーになっていて、プルダウンで月を選べるようになっています。 カレンダーの4月をプルダウンで選んだら4月のシートから反映、5月を選んだら5月のシートから反映するようにしたいのですが、式がわかりません。。単体だと反映するのですが…。 ちなみに、式はこんな感じです。 IF(B1="4月",VLOOKUP(A5,'4月'!B5:AG5,2,FALSE),"") カレンダーシートは1つでプルダウン選択し、各シートから反映させるにはどうしたらいいでしょうか? よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
要するに VLOOKUP(A5,'4月'!B5:AG5,2,FALSE) の'4月'のところがB1になればいいのだから VLOOKUP(A5,B1!B5:AG5,2,FALSE) としたいところだけれど,これではうまくいきません。 VLOOKUP(A5,INDIRECT(B1&"!B5:AG5"),2,FALSE)
その他の回答 (2)
- f272
- ベストアンサー率46% (8528/18252)
#1です。 > シート13で4月を表示し、上記の式を入力すると4月はよいのですが、シート13の5月では1日の位置が変わってしまいうまくいきません。 各月の1日の位置はどのように決まっているのでしょう?それがわからなければ式など作れませんよ。
お礼
ご連絡ありがとうございました。 うまく説明できず申し訳ありません。 どうもありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
質問がよく分かりません。説明が荒っぽい。 質問では、シート名とそのセル番地をはっきりさせて、説明するべきと思う。 ーー 質問者が、INDIRECT関数を知らないだけの質問だろう。 「indirect 関数 別ブック(または別シート)参照」などで照会すれば済むはなし。有名な課題ですよ。 ーー >プルダウンで選んだら >正確には、「データの入力規則」の「リスト」の利用を指すと思われる。 リストは、どのシートに置いているのか? 「元の値」の入力個所で、リテラルで定義か? >式はこんな感じです 問題の式を入れるのは、>13個目のシート、ですか? ーーー セル(下記ではA5)にシート名(文字列。下記では文字列「5月」)があるとき B1セルの入力規則のリストで、選んだ値が「5月」だった時、 =VLOOKUP(A5,INDIRECT(B1&"!B5:C23"),2,FALSE) のような書き方になります。INDIRECT関数を用いることが必要です。 INDIRECT関数を用いて、=VLOOKUP(A5,'5月'!B5:C23,2,FALSE≫のような 効果を出すには、この関数を使わなければならず、 =VLOOKUP(A5,B1!B5:C23,2,FALSE)などでは、うまくゆきません。 Sheet2のシート名が「5月」として、そのセル範囲のB5:C23にテーブルがあり検索値はB列にある場合です。また求める値の列は、隣の(=2)のC列にある場合です。 === 質問のB5:AG5は正しいですか。 同じ行の1行(=5)を対象にして、列だけ32列分を指定してますが? 場合によってはVLOOKUPではなく、HLOOKUPを使うべきケースかと 思ったが、質問ではよくわからない。
お礼
ご回答ありがとうございました。 知識不足のため説明が下手で申し訳ありませんでした。丁寧なご回答、感謝申し上げます。
お礼
ご回答ありがとうございました。 教えていただいた式を入力したところ、 ちゃんと反映されました。ありがとうございます。 丁寧なご回答に感謝申し上げます。
補足
大変恐縮なのですが、もう1つよろしいでしょうか? VLOOKUP(A5,INDIRECT(B1&"!B5:AG5"),2,FALSE)で うまく反映はされたのですが、シート1は4月のシフト、シート2は5月のシフトというふうに作成しており、シート13は社内で使用しているカレンダーの書式になっていて、プルダウンで各月を表示するようになっています。シート13で4月を表示し、上記の式を入力すると4月はよいのですが、シート13の5月では1日の位置が変わってしまいうまくいきません。シート1(4月)の1日のシフトをシート13のプルダウンで表示させた4月1日に、シート2(5月)の1日のシフトはプルダウンで表示させた5月のカレンダーの1日に反映させるようにすることは出来るでしょうか? 可能であれば式を教えていただきたく、お願い致します。わかりにくい説明で申し訳ありません。 よろしくお願い致します。