• ベストアンサー

エクセルの関数式について教えてください。

エクセルで12個のシートに各月の勤務シフトを作成しています。13個目のシートは社内で使用しているカレンダーになっていて、プルダウンで月を選べるようになっています。 カレンダーの4月をプルダウンで選んだら4月のシートから反映、5月を選んだら5月のシートから反映するようにしたいのですが、式がわかりません。。単体だと反映するのですが…。 ちなみに、式はこんな感じです。 IF(B1="4月",VLOOKUP(A5,'4月'!B5:AG5,2,FALSE),"") カレンダーシートは1つでプルダウン選択し、各シートから反映させるにはどうしたらいいでしょうか? よろしくお願い致します。

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

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8005/17110)
回答No.1

要するに VLOOKUP(A5,'4月'!B5:AG5,2,FALSE) の'4月'のところがB1になればいいのだから VLOOKUP(A5,B1!B5:AG5,2,FALSE) としたいところだけれど,これではうまくいきません。 VLOOKUP(A5,INDIRECT(B1&"!B5:AG5"),2,FALSE)

tb_moko_3921
質問者

お礼

ご回答ありがとうございました。 教えていただいた式を入力したところ、 ちゃんと反映されました。ありがとうございます。 丁寧なご回答に感謝申し上げます。

tb_moko_3921
質問者

補足

大変恐縮なのですが、もう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日に反映させるようにすることは出来るでしょうか? 可能であれば式を教えていただきたく、お願い致します。わかりにくい説明で申し訳ありません。 よろしくお願い致します。

その他の回答 (2)

  • f272
  • ベストアンサー率46% (8005/17110)
回答No.3

#1です。 > シート13で4月を表示し、上記の式を入力すると4月はよいのですが、シート13の5月では1日の位置が変わってしまいうまくいきません。 各月の1日の位置はどのように決まっているのでしょう?それがわからなければ式など作れませんよ。

tb_moko_3921
質問者

お礼

ご連絡ありがとうございました。 うまく説明できず申し訳ありません。 どうもありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

質問がよく分かりません。説明が荒っぽい。 質問では、シート名とそのセル番地をはっきりさせて、説明するべきと思う。 ーー 質問者が、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を使うべきケースかと 思ったが、質問ではよくわからない。

tb_moko_3921
質問者

お礼

ご回答ありがとうございました。 知識不足のため説明が下手で申し訳ありませんでした。丁寧なご回答、感謝申し上げます。

関連するQ&A

  • エクセルの関数の分かりやすい説明の仕方教えて下さい!!

    初心者にエクセルを教えることになりました。 関数をどう説明していいのか分からないので教えて 下さい。 (1)VLOOKUP   式は=VLOOKUP(B5,H5:J10,2,FALSE)で   B5は品番、H5:J10は商品一覧です。 (2)IF   式は=IF(E3>=180,"合格","不合格")    (3)IFを使う式で、エラーを防ぐ式(IFとVLOOKUP)   =IF(A5="","",VLOOKUP(A5,$G$5:$I$16,2,FALSE))    A5=品番  お願いします

  • ExcelのIF関数で条件が7つ以上ネストされる場合の対応方法

    ExcelのIF関数で以下のように条件が7つ以上ネストされる場合の対応方法を教えてください(if関数だと条件が最大7つまでしか指定できない為)。 IF(ISTEXT(VLOOKUP($A2,sheet1!$B:$AP,36,FALSE)),1, IF(ISTEXT(VLOOKUP($A2,sheet2!$b:$q,10,FALSE)),2, IF(ISTEXT(VLOOKUP($A2,sheet3!$I:$BO,13,FALSE)),3, IF(ISTEXT(VLOOKUP($A2,sheet4!$A:$Z,6,FALSE)),4, IF(ISTEXT(VLOOKUP($A2,sheet1!$B:$AP,38,FALSE)),1, IF(ISTEXT(VLOOKUP($A2,sheet2!$b:$q,12,FALSE)),2, IF(ISTEXT(VLOOKUP($A2,sheet3!$I:$BO,16,FALSE)),3, IF(ISTEXT(VLOOKUP($A2,sheet4!$A:$Z,5,FALSE)),4, 4))))))))

  • エクセル BLOOKUP関数について。

    =IF(B7="","",VLOOKUP(B7,中間,2,FALSE)) 上記のような式を入れて、エクセルで集計をしているのですが、1つのフォルダに同様の書式を用いたものが7枚あります。そのうちのシートの1枚だけが、上記関数が上手く動きません。#N/Å となります。コードをB7に入力すると、1~6までのシートはきちんと動くのに、7枚目のシートだけエラーになります。どのシートも関数は全く一緒です。数原因は何なんでしょうか・・。分かる方いましたら宜しくお願いします。

  • エクセル関数について教えてください

    AからZまでのチームにAさんからZさんがそれぞれ点数をつけます。 各チームが対戦して勝ったチーム名を入れるとそれぞれつけた点数を反映させる表をつくりたいのです。 私が使ったのは、 「=VLOOKUP($B$2,sheet1!$B$1:$AH$26,2,FALSE)」 なのですが、この式を横にコピーすると列番号が2のままなので数値が正しく反映されません。 列番号を2,3,4と繰り上げるにはどうしたらいいのでしょうか? それとも使おうとしてる関数が違うのでしょうか? よい方法があれば教えてください。

  • エクセル VLOOKUP関数のエラー非表示について

    次のような式がありますが答えが#DIV/0!になり困っています。 =IF($B28="","",($F28*2)/IF(ISNA(VLOOKUP($B28,形態!$B$5:$Z$200,7,FALSE)),"",VLOOKUP($B28,形態!$B$5:$Z$200,7,FALSE))) データ範囲のシートは分かれいます。 データ範囲の形態!B5:Z200の中に空白がある場合#DIV/0!になります。 #DIV/0!を非表示する方法を教えてください。

  • エクセルの関数の直し方

    現在、画像のような表を作成しておりますが、 1行目の前の行に5行挿入したいと考えております。 下の表からデータを製番・区分ごとに合計して上の表に表示されるようになっています。 5行挿入してタイトル等入れたいと思い、挿入してみると、 今まで下の表からの合計が上の表に表示されなくなってしまいます。 セル番号等確認はしてみたのですが、 どこがいけなくてうまく表示されないのかがわからなくて困っています。 どのように直したらいいかをご教示お願いいたします。 現在入っている関数は以下の通りです。 A2=IF(COUNT(Sheet1!$L$14:$L$38)<ROW(A1),"",INDEX(Sheet1!$B$14:$I$38,MATCH(SMALL(Sheet1!$L$14:$L$38,ROW(A1)),Sheet1!$L$14:$L$38,0),MATCH(A$1,Sheet1!$B$13:$I$13,0))) B2=IF(COUNT(Sheet1!$L$14:$L$38)<ROW(B1),"",INDEX(Sheet1!$B$14:$I$38,MATCH(SMALL(Sheet1!$L$14:$L$38,ROW(B1)),Sheet1!$L$14:$L$38,0),MATCH(B$1,Sheet1!$B$13:$I$13,0))) C2=IF(COUNT(Sheet1!$L$14:$L$38)<ROW(C1),"",INDEX(Sheet1!$B$14:$I$38,MATCH(SMALL(Sheet1!$L$14:$L$38,ROW(C1)),Sheet1!$L$14:$L$38,0),MATCH(C$1,Sheet1!$B$13:$I$13,0))) D2=IF(A2="","",SUMIFS(Sheet1!$G$14:$G$38,Sheet1!$B$14:$B$38,A2,Sheet1!$H$14:$H$38,B2)) E2=IF(C2="","",IF(ISERROR(VLOOKUP(C2,list!$S$3:$T$6,2,0)),"",VLOOKUP(C2,list!$S$3:$T$6,2,0))) H14=IF($E14="","",IF(ISERROR(VLOOKUP($E14,INDIRECT($J14),3,FALSE)),"",VLOOKUP($E14,INDIRECT($J14),3,FALSE))) I14=IF($E14="","",IF(ISERROR(VLOOKUP($E14,INDIRECT($J14),4,FALSE)),"",VLOOKUP($E14,INDIRECT($J14),4,FALSE))) J14=IF(ISBLANK(B14),"",IF(B14<="J121100144","旧","新")) K14=IF(AND(B14<>"",H14<>"-"),B14&"_"&H14,"") L14=IF(AND(K14<>"",COUNTIF(K$14:K14,K14)=1),COUNTIF($K$14:$K$38,"<"&K14)+1,"")

  • VLOOKUP関数 エクセル関数教えてください

    =IF(ISERROR(VLOOKUP(B2,$E$1:$F$296,2,FALSE)),"",VLOOKUP(B2,$E$1:$F$296,2,FALSE)) という関数を入れて、品番をセルに入力して元表から品名を導く表を作成しました。うまく使えています。 これを元に =IF(ISERROR(VLOOKUP(B2,$F$1:$I$1000,2,FALSE)),"",VLOOKUP(B2,$F$1:$I$1000,2,FALSE)) という関数に直して、同じような表を作ろうとしたのですが、うまくいきません。 何が悪いのか分かりません。 どうすればうまくいきますでしょうか?

  • エクセルの関数とグラフについて

    VLOOKUPを使って入力したIDNoに対して、別々のシートから検索するため次のような関数をいれています。=IF(ISERROR(VLOOKUP($E1,'シート名(1)’!$B$5:$IV$254,COLUMN(G6),0)),"",VLOOKUP($E1,'シート名(1)'!$B$5:$IV$254,COLUMN(G6),0))&IF(ISERROR(VLOOKUP($E1,'シート名(2)'!$B$5:$IV$254,COLUMN(G6),0)),"",VLOOKUP($E1,'シート名(2)'!$B$5:$IV$254,COLUMN(G6),0)) この関数から得られた数値を折れ線グラフに反映させたいのですが、グラフに数値として認識されません。セルの書式設定は数値にしています。 ネットで色々調べてみて、この関数の最後に)/1を追加させた式を入力すると数値は認識されるようになりました。しかし空白の場合に#VALUEになり”プロットしない”に設定しても0にグラフが出てしまいます。 また同じ表で日付に対しても日付で表示されなかったので=IF(ISERROR(VLOOKUP(E$1,'シート名(1)'!$B$5:$IV$254,COLUMN(AC6),0)),"",TEXT(VLOOKUP(E$1,'シート名(1)'!$B$5:$IV$254,COLUMN(AC6),0),"ge.m.d"))&IF(ISERROR(VLOOKUP(E$1,'シート名(2)'!$B$5:$IV$254,COLUMN(AC6),0)),"",TEXT(VLOOKUP(E$1,'シート名(2)'!$B$5:$IV$254,COLUMN(AC6),0),"ge.m.d"))の関数を入力したところ日付が表示されるようになったのですが、空白の場合は”M33.1.0”となりグラフ上でも表示されてしまいます。 どうすれば日付や数値としてグラフ上に反映させられるのか教えてください。また空欄の場合には0にポイントされないM33.1.0にならない方法も教えてください。 エクセルは2003です。 エクセル初心者のため説明不足等あるとは思いますがよろしくお願いします。

  • Excelのvlookup関数について

    閲覧ありがとうございます。 vlookupについて質問させてください。 毎週データを更新しており、別シートを移動してきてvlookupで必要なデータを抜き出し一枚のシートにまとめています。 現在シートを追加するたびに、vlookup関数のシート名を変更しています。 =iferror(vlookup($b4,week27!$A$2:$K$60,3,false),0) という式ですが、毎回変更する箇所は27、28とweekの後の数字だけです。 先に入力しておくと後から足されたシート分のデータが反映されません。 先に入力しておいて、あとからシートを追加しても反映させる方法はありますでしょうか。 あと、もし上の方法が可能であれば、シート名が連番になっているのでコピーなどの方法で楽に連番の数字を一気に変更する方法もあれば教えていただけると幸いです。 以上となります。 ご教授いただけますようお願い申し上げます。

  • エクセル関数について

    {=IF(COUNTIF(B30:AH30,"<>")=0,"",MIN(IF(B30:AH30<>"",B$5:AH$5))&"-"&MAX(IF(B30:AH30<>"",C$5:AG$5)))} 上記式を別シートに貼り付けたところ、エラー表示が出てしまい、原因がわかりません。どうすればいいか教えてください。

専門家に質問してみよう