• ベストアンサー

Excelの参照式について

1~31という名前の31個のシートがあり、合計用のシートで =SUM('1:31'!$D5) と言う式を使ってシートのD5の値を足しているのですが、 この、1~31までにあたる'1:31'を別セルを参照する形で可変にしたいのです。 J1に10 L1に15 と入力すると=SUM('10:15'!$D5)になるようにしたいのですが、 'J1:L1'と入力しても上手くいきません。 値だけを参照して可変にする方法はありますでしょうか。 宜しくお願いします。

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

  • ベストアンサー
  • ok2007
  • ベストアンサー率57% (1219/2120)
回答No.2

類似のQ&Aをどこかで見たことがあるなぁと思って探してみたところ、次のURLにありました。 http://www.efcit.co.jp/cgi-bin2/exqalounge.cgi?print+200606/06060025.txt このメジロさんのご回答が、aloe_bearさんのケースにもっとも合うかと思います。たぶん、こんな具合で上手くいくのではないかと・・・。 =SUMPRODUCT(SUMIF(INDIRECT(ROW(INDIRECT(J1&":"&L1))&"!D5"),"<>"))

aloe_bear
質問者

お礼

恐ろしく完璧でした。 こういう発想がすっと出てくるようになりたいです。 ありがとうございました。

その他の回答 (1)

  • gutoku2
  • ベストアンサー率66% (894/1349)
回答No.1

一般的に考えると INDIRECT関数 を使いたい所です。 しかし     B5セルに '1:31'!D5  =SUM(INDIRECT(B5))は成立しません    (関数の決まりですからどうしようもありません) でも  =SUM(INDIRECT(J8),INDIRECT(K8))なんて関数はOKです。   ならば、各々のシートが該当か否かをIF関数で判断させれば良い事になります よって  J1セルに 串刺し計算したい最初のシート名(今回は数字)  L1セルに 串刺し計算したい最後のシート名(今回は数字) =SUM(IF(AND(1>=J1,1<=L1),INDIRECT("1!D5"),0),IF(AND(2>=J1,2<=L1),INDIRECT("2!D5"),0),IF(AND(3>=J1,3<=L1),INDIRECT("3!D5"),0),・・・・・・・IF(AND(31>=J1,31<=L1),INDIRECT("31!D5"),0) のような関数で目的は達成できます。  ※手入力すれば   =SUM('1:31'!D5) とか =SUM('3:25'!D5)     と入力するだけで、非常に簡単なのですが・・・ まあ、一回作成すれば後は計算結果を見るだけなのですが、これだと修正が 発生した場合に修正が非常に大変ですね。 よって私ならば、集計シートを一つ作ります。 J1セルとL1セルには開始シート名(数字)、終了シート名を入力 <1~31(日にちでしょうか)の入力> A2セル 1 A3セル 2  ・・・ A32セル 31 <該当のセル名を入力> B1セル D5(半角英字の文字) <該当のセルが加算の対象外ならばゼロ> B2セル =INDIRECT("'"&A2&"'!"&B$1)*IF(AND(A2>=$J$1,A2<=$L$1),1,0) B3セル =INDIRECT("'"&A3&"'!"&B$1)*IF(AND(A3>=$J$1,A3<=$L$1),1,0)  ・・・ B32セル =INDIRECT("'"&A32&"'!"&B$1)*IF(AND(A32>=$J$1,A3<=$L$1),1,0) 合計を求めたいセルに =SUM(B2:B32) これで目的を達成できます。   ※これだと、表の修正が発生しても割と簡単に修正できます。

aloe_bear
質問者

お礼

丁寧なご回答ありがとうございました。 今回はより適した数式が見つかりましたが、 &""&で繋ぐ発想はとても参考になりました。 実際使わせていただいています。ありがとうございました。

関連するQ&A

  • エクセルの式について

    基本的なことですがヘルプを見てもよくわからないのでよろしくお願いします。 交通費なのですがオートサムが設定されている合計欄に0を表示したくないのでnullにする式を教えてください。 =SUM(D9:D31) 未入力だとD32に0が表示されています。入力しないと空白のままにしたいです。 また、式が入力されているセルの値を消してしまうと式も消えてしまいますが指定したセルの式を保護することはできますか? シート保護だと入力もできなくなってしまいます。

  • エクセルのセル参照、一つずつ参照セルをずらしていきたい

    エクセルのセル参照の方法について教えてください。 2つのシートがあって、 ひとつのシートにはC4,D5,E6…というように行と列がひとつずつ増えていくところに値が入力されています。 このシートから、C4,D5,E6…のセルの値を取り出して 別のシートのA1,A2,A3…に縦に並んで表示させたいのですが、どのようにセルを参照させればC4,D5,E6…という 行と列がひとつずつ増えていくセルを参照できるでしょうか? よろしくお願いいたします。

  • Excelの参照先セルに色を....

    Excelに関する質問です。あちこちのセルを参照しているsum関数があります。   例:=SUM(B4:B9,D7:D13,B16:E17,C20:D21,C23:C25)    このsum関数の参照先セルに、まとめて色を塗りたいのです。「どの領域の合計を出しているのか....」を一目で把握できるようなシートを印刷したいのです。 上手い方法はあるでしょうか? sum関数が入力されているセルを選択すると、参照先セルのワクが色づけされておぼろげに分かりますが、それでは認識性が今ひとつです。同様にsum関数が入力されているセルは複数個あり、それぞれの参照先を色分けしたいのです。 類似回答があるのかもしれませんが、下手な検索なため見あたりませんでした。すみませんが、以上、よろしくお願いいたします! 追伸:手動でチマチマ塗っていくのは断念しました。複数のsum関数がありますが、重複参照のセルはありません。1シート上です。

  • エクセルの参照式に計算式を使うには?

    エクセルの参照式に計算式を使うにはどうすればよいでしょうか? 例えば、 Sheet2のA1に=Sheet1!A1としてSheet1のA1を参照します。 その後、参照式のA1の1の部分(行数)を計算式にしたいです。 =Sheet1!A1+1 とすると参照した値に1を足してしまいます。 そうではなくて、参照先の行数を計算式で可変にしたいです。 参照式の書き方が悪いのでしょうか? それとも関数を使えばできるのでしょうか? 詳しい方がいましたら教えて下さい。 どうぞ宜しくお願いいたします。

  • エクセルの他シート参照

    エクセルで、同ブック内の他シートのセルを、式で参照したいのですがうまく行きません。 Sheet1のL列のある行の内容をのSheet2のA15に参照したいです。 たとえば、30行目を参照するのであれば、 =Sheet1!$L$30 で参照できました。 しかし、Sheet2のA17にある数値から13850を引いた値の行(たとえば、13880とSheet2のA17に入力されていたら、30行目)を参照するために、 =Sheet1!$L$(A17-13850) と入力したのですが、「入力した数式にはエラーがあります」とエラーが表示されてしまいます。 (Sheet2のA17の値によって、Sheet2のA15に参照されるSheet1の行が変わるようにしたい) どのように指定したら正しく参照できるでしょうか。 ご回答よろしくお願いします。

  • R1C1形式。別シート参照時について

    題名が意味不明ですが申し訳ありません。 下記のような数式があります。 こちらのサイトで教えていただいた関数であり、すごく難しくて私もはっきり理解できてはおりませんが、R1C1形式で、セルを参照するようになっているのかな~というところまで、理解できました。 =IF(AND(ISNUMBER(INDEX($D:$D,ROW())),INDEX($D:$D,ROW()+1)=""),SUM(INDIRECT("R"&MATCH("゛",OFFSET(INDIRECT("R1C"&COLUMN($B:$B),FALSE),,,ROW()),-1)&"C"&COLUMN($D:$D)&":R"&ROW()&"C"&COLUMN($D:$D),FALSE)),"") この数式は、’同じシート’の、D列なり、特定のセルなり、、を参照しておりますが、この数式を別のシートのセルに入力して、そこから、このシートを参照させようと思います。 つまり、このシートはもともと’入力用’という名前のシートなのですが、別のシートから、この’入力用’シートの列なりセルなりを参照して値を求めたいのです。 この場合、入力用!というような文字を入れればいいのは知っているのですが、式が複雑すぎるため、どこにどう記入してよいのかがわかりません。自分なりにいろいろやってはみたのですが、REF#となってしまいました。 どこにシート名を入れればうまくいくのか教えていただけないでしょうか。 何卒お願いいたします。

  • EXCEL 2003 数式中の参照セルについて

    数式であるシート(シート1とします)中の値として、 別シート(シート2とします)のセルを参照するとします。 (例a) シート1中の値 =シート2!J36 ※ J36は例 ここまではよいのですが、 上記の行番号「36」の部分を 更に別の参照値から引っ張ってくることは可能でしょうか? やりたいことのイメージ例として以下に記載します。 (例b) =シート2!J(=A1) ※ここの「A1」はシート2中の参照するセル番号を指定するための シート1中に設けたセルとします。 ※上記の数式は実際にはエラーになり入りません。 最初の例aでは、シート2中の参照するセル番号を数式編集して 指定しないといけないため、参照箇所が多いと大変ですが、 もし、例bのような指定ができればシート2中の参照するセル番号の 入力は一箇所ですみ楽になりありがたいと考えています。 わかりにくい文章ですみません。よろしくお願いします。

  • エクセル2010の絶対参照について。

    エクセル2010についての質問です。 ファイルはエクセル2003?2007?のものを互換モードで使っております。 よろしくお願い致します。 sheet1のセルA1に、別のシート(Sheet2)のA2~A11の合計をオートサムで求めると数式が=SUM([Sheet2.xls]Sheet2!$A$2:$A$11)となっています。 sheet1のセルB1に数式=SUM([Sheet2.xls]Sheet2!$B$2:$B$11) sheet1のセルC1に数式=SUM([Sheet2.xls]Sheet2!$C$2:$C$11) sheet1のセルD1に数式=SUM([Sheet2.xls]Sheet2!$D$2:$D$11) をオートフィルか、コピーアンドペイストで素早くやりたいのですが、 数式の$を消して、=SUM([Sheet2.xls]Sheet2!A2:A11)でオートフィルでできるのですが、 自動で$が入力されるのがなぜだか分かりません。 $が自動で入力される理由と、$があるなしの違いを、理解してる方に聞きたいと思い 質問しました。 よろしくお願い致します。

  • エクセルの式が効かなくなってしまいました

    今までは、エクセルに「合計」「平均」などの簡単な式を入れて計算ができていたのですが、今日、エクセルで続きの作業をしようとしたら…。 A8のセルにD3からD7までの合計の式を入力しました。 D3からD7までのセルには、まだ何も入力していなければ、D8は、「0」ですよね? でも、D3からD7まで数字を入力してもD8のセルは、「0」のままなのです。 fxのところには、「=SUM(D3:D7)」のように式が出ています。 何か触ってしまったのでしょうか? エクセルに関しては、初心者ですので、わかりやすくご説明して頂けましたら、幸いです。 EXCEL2003、windowsXPです。 よろしくお願いいたします。

  • Excelのシート間の参照

    Excelでシート間のセルの参照をしたいのですが、どのシートを参照するのかを すぐに変えることのできるようにしたいのです。 具体的には、A、B、Cという名前のシートがあり、シートDにおいて A1セルにA、B、Cいずれかの文字を入力すると、その下のセルの参照先が シートAのB1セルになるようにしたいのです。 とりあえず色々式を入れてみたのですが、すべて拒否されてしまいました。 たとえば ='A1'!B1 ='"A1"'!B1 とかです。 よろしくお願いします。

専門家に質問してみよう