セル参照でエラー値が出る問題についての解決方法

このQ&Aのポイント
  • エクセル初心者の方が、INDIRECT関数を使用して隣のセルの値を参照させる際に、エラー値#REF!が表示される問題について解決方法を教えてください。
  • 「月次」というシートのC列には計算式が入っており、その見た目には縦に1から31の数字が表示されています。また、D列には別のシートの数字を参照したいと考えています。しかし、INDIRECT関数を使用して参照しようとすると、エラー値#REF!が表示されてしまいます。どのようにすれば解決できるでしょうか?
  • 参照させたいシートが31枚あり、それぞれのシートのD5の値を「月次」のD1に返したいと考えています。しかし、C列がブランクのときにはD列も空白にしたいです。INDIRECT関数を使用して解決しようとしましたが、エラー値#REF!が表示されてしまいます。何か良い解決方法はありますか?
回答を見る
  • ベストアンサー

INDIRECT関数で隣のセルの値を参照させるとエラー値#REF!が@excel(エクセル

エクセル初心者です。 「月次」というシートのC列に計算式が入ってるとします(←DATE関数とMONTH関数、IF関数の組み合わせ)。C列の見た目は、C1が1、C31が31、のように、縦に1~31の数字が入っているように見えます。 例えば、B1に月の数字を入れると、C列の数字がその月に対応して見た目が変わります。例えばB1が7月だとC列は31日まで表示され、2月だと28日まで、のような感じです。でも、計算式は31日分入っているので、例えばC31は、月によって、見た目がブランクになる場合と数字になる場合とがあります。参考ページ:http://kokoro.kir.jp/know/calendar2.html ここで隣のD列に、見た目でC列に数字が表示されてるときは、別シートの数字を返したいとします。その参照させたいシートは31枚あり、例えば「1」というシートのD5の値を、「月次」のD1に返したい、という意味です。ただ、見た目でC31がブランクのときは、D31には何も返さず空白にしたいのです。 参照させたいシートが31枚あるため、オートフィル機能を使いたく、そこで、INDIRECT関数を使ってやろうとしてるのですが 参考ページ http://www.relief.jp/itnote/archives/001697.php 上記のとおりやろうとすると、「月次」のD列に#REF!がでます。 (エラーの出る計算式:INDIRECT(C1&"!D5")」 試しに「月次」のK列あたりに、1~31まで手入力して数字をいれ、そのセルを参照させるとうまくいくのですが、 (この場合の計算式:INDIRECT(K1&"!D5")」 ただ、30日の月や28日の月もあり、毎回K列を変えないといけないので、何とかC列を参照させたいのですが、何かよい解決方法はないでしょうか?

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

  • ベストアンサー
  • _Kyle
  • ベストアンサー率78% (109/139)
回答No.3

#1です。あ、そうですね。月末処理を忘れてました。  =IF(C1="","",INDIRECT(DAY(C1)&"!D5")) に修正します。

tori-chan
質問者

お礼

お礼が遅くなりました。 まさに求めていたのはこれです!! 有り難うございました。

その他の回答 (2)

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.2

31日がない月でその日のC列がブランクになっているという事でしたら  =IF(C1="","",INDIRECT(C1&"!D5")) で、どうでしょうか

tori-chan
質問者

お礼

レス有り難うございます。 これはやってみたのですが、できなかったので質問させていただいてます。 せっかくアドバイスいただいたのにすみません。

  • _Kyle
  • ベストアンサー率78% (109/139)
回答No.1

エラーの出る計算式を  =INDIRECT(DAY(C1)&"!D5") とすれば通りそうに思えます。 C列の、見た目が1,2,3…となっている部分の実際の値は シリアル値(日付を表す5桁の数値)になっているのではありませんか? シリアル値から、見た目どおりに「日」を表す数値1,2,3を取り出すのがDAY関数です。 Excel2003で再現・挙動確認済。 ご参考まで。

関連するQ&A

  • 隣のセルの値を参照させたい@excel(エクセル)

    エクセル初心者です。 C列に計算式が入ってるとします。ブランクの場合と数字の場合とがあります。隣のD列に、C列の値もしくはブランクをそのまま参照させたいのです。(C1が20ならD1も20に、C2がブランクならD2もブランクにしたいという意味です) また、D列の値を参照して、G列に計算式が入ってます。 (元々はD列には手入力で数字を入力するつもりで計算式を組みました。その後、C列とD列が全く同じものでよくなったので、タイトル通りの質問になりました。 ただ、値は同じものでよいのですが、C列とD列は意味合いが違いますので、D列を作らないわけにはいきません。) まずやってみたのは、例えばD1に「=C1」といれてみました。そうすると、D1は上手くいくのですが、D1を参照してる、少し離れたG1が「#VALUE!」となります。 条件付書式とかも試してるのですが、イマイチうまくいかず。 何かよい解決方法はないでしょうか?

  • 【エクセル関数】参照するセル

    エクセル関数で教えていただきたいです。 セル参照で、参照するセルを、ある法則道理に参照していきたいのです。 例えば、シートA,シートB、とあったときに、 シートBのC3に → シートAのC3を参照、 シートBのC6に → シートAのC4を参照、 シートBのC9に → シートAのC5を参照、 シートBのC12に → シートAのC6を参照・・・・ ・・・・・・・・・・・ という風に、参照元の列は1行づつ増やしていきたいのですが、 それをシートBでは、3行ごとに表示したいのです。 自分でいろいろ試してみましたが、うまくできません。 こういったことは、関数でできるのでしょうか? もし、あれば、教えていただけると助かります。 よろしくお願いします。

  • エクセルの関数、セルの参照について

    いつもお世話になっております。 添付ファイルのような表を作成しました。 やりたい事は、 (1)累計の欄に数字を直接記載する。 (2)単日の欄に当日と前日の数字の差を記載する(E10はD10-D5) という簡単な表なのですが、土曜日と日曜日は数字の変動がないため、見た目を考えて空欄にしたいと思ってます。 そうすると、4日のE20はD20-D5になるので、数式のコピーではうまく行きません。 今の私の知識だと、IF関数でダラダラと数式を作って行くしか思いつきません。 そこで、土日は金曜日の数字を記載して、条件付き書式で土日は白文字にして見た目だけ空欄にしようかなと考えました。  =weekday(B3)=1のときは白文字    =weekday(B3)=7のときは白文字 セル範囲はD5:E7  としたのですが、これだとD6とD7も白文字になってしまいます。 B3を絶対参照にすると、解決しますが、コピーした場合、また、セルの参照をするしかありません。 スミマセン分かりずらい文章をダラダラと書きましたが、要は、 (1)土曜日、日曜日は計算の対象から外したい場合は、どのような数式が最適でしょうか? (2)セルの参照方法として、B3が●●だったら、D5~D7を○○したい場合、B3セルを絶対参照すればいいわけですが、コピーした場合は、個別に参照しなおすしかないのでしょうか? どなたかご教示をお願いします。

  • エクセル 2個セル間の数字があれば、参照する関数を探しています。

    エクセル 2個セル間の数字があれば、参照する関数を探しています。 ■参照部分(参照シート)  A  B  C  1  24  不合格  25 50  再テスト  51 100  合格 ■リスト A  B  C 高橋 79  合格 佐藤 12  不合格  山田 40  再テスト 木下 58  合格 2シートに分かれています。 リストシートのBセルに数字を入れると、自動的にCに合格・不合格が 入るような関数にするにはどうしたらよいのでしょうか。 IFとVLOOKUPの組み合わせでしょうか。 よろしくお願いします。

  • エクセルのセル参照

    エクセルで隣にくるセルを参照したいのですが、どうすればよろしいでしょうか。 F列に計算式を入れるのですが、C、D、E列を非表示にした場合、B列の値を取ってくる。というような感じです。 それが、D,E列を非表示にした場合はC列の値を取ってくるみたいな感じで、自動的に隣のセルとして認識してくれる関数みたいなのはありますか。

  • エクセルのIF関数で隣のセルの文字を参照させたい

       A 1 1+2+3 2 1+2+4 3 1+2+5 A列にこのような文字が入力されてる場合にB列に IF(C1+C2+C3<A14,C1+C2+C3,0) このような計算式を作りたいのですが いままでは、計算式をコピーして一つずつ手作業で編集していたのですが、もっと簡単な方法はありませんでしょうか? つまり、A列にある文字にIF関数とCをつけて参照させるなんてことは可能なのかというこのなのです。 あまり例の無いことかもしれませんがお教え願えませんでしょうか?

  • 関数 数式 Excel

    すみませんが教えてください! E列に下のような関数を入れたところ正しく表示されませんでした・・・ どうぞよろしくお願いします。 A列(数字・空白を含む)が 1 の場合”◎” A列が1以外の場合は B列(別シートから参照のVLOOKUP関数が入っている)と C列(別シートから参照ののVLOOKUP関数が入っている) を足した数字が D列(別シートから参照ののVLOOKUP関数が入っている) が同じなら ”OK” 違うなら ”NG" と表示させたいので =IF(A1=1,"◎",IF(D181=(B181+C181),"OK","NG")) としてみましたが"◎"が表示される表示は正しいのですが "OK" "NG"が正しく表示されません。 これに加えていずれのセルにも空白が存在するのでエラーを出さないようにしたいです。 よろしくおねがいします!!

  • Excelの関数でVALUE!(エラー)を無視して、SUMPRODUC

    Excelの関数でVALUE!(エラー)を無視して、SUMPRODUCT関数など計算するにはどうすればよろしいでしょうか? 過去に教えて頂いたのを更に応用したものです。 月度の数字H3の数字を入れると、横のJ4とK4が自動的に金額が入るようになっています。J4が月ごとの合計金額→関数:=IF(H3="","",SUMPRODUCT((MONTH(D3:D20)=H3)*((F3:F20))))を使用し、K4が月ごとの最大金額→関数:=IF(H3="","",MAX(INDEX((MONTH(D3:D20)&""=ASC(H3))*F3:F20,)))を使用しております。また、D列の西暦年月日には、D3から関数:=IF(ISBLANK(A3),"",DATEVALUE(A3&"年"&B3&"月"&C3&"日"))で表示ができるようにしてあります。 そこでD15からD20については、ISLANK関数を使っているのでA3が空白な為、VALUE!(エラーを返す)のを非表示になります。この場合、D15~D20の関数を削除すれば、J4とK4は正常に表示されますが、D15~D20に関数が入ったままだとJ4とK4はVALUE!を返しエラー表記になってしまいます。回避する関数(J4とK4)はどのようにしたらよろしいでしょうか?また、西暦年月日を参照せずに、B列の月項目の数字で月を判別するにはどうすればよろしいでしょうか?(H4の数字入力により) ※参考までにD3より下、関数:=DATEVALUE(A3&"年"&B3&"月"&C3&"日")で通常入力すると、必ず、D15~D20はVALUE!関数エラーで表示されます。

  • セルを参照させる関数について

    C列には関数で返ってきている値が入っています。(たとえば単純にC1のセルには=SUM(A1:B1)と入っている)そのままC1を横にドラッグしてコピーするとD1のセルには単純に=SUM(B1:C1)となりますが、見に行くセルをC2に、E1のセルの参照するセルはC3を。。。という風に参照させるにはどんな関数を使用すればいいのでしょうか? (単純にD1のセルに=C2と設定はしたくないのが前提です)

  • エクセルでSheet1の表を参照して条件に合った値を返したい

    エクセルでSheet1に   A   B   C 1 1月1日 10時 10 2 1月1日 12時 25 3 1月1日 14時 17 4 1月2日 10時 15 5 1月2日 12時 23 6 1月2日 14時 19 ・ ・ ・ というような表があります。 Sheet2に   A   B   C  D  1 日付  10時 12時 14時  2 1月1日  3 1月2日  ・ ・ ・ の表があり、Sheet2のB2からD3にSheet1の表を参照して 条件に合うC列の値を返したいのです。 (例えばSheet2のB2には、1月1日の10時なのでSheet1C列の10が入る) VLOOKUP関数等を使って試してみましたがうまくいきません。 ご教授お願い致します。

専門家に質問してみよう