• ベストアンサー

左のシートを参照するには

左のシートの名前は 1-janとし、1-janシートのA1のセルに10が入力されています。 1-janシートの右のシートの名前は2-janとなっていてA1のセルに11が入力されています。 2-janシートのA2にふたつのA1のセルを加算式を入力して21と回答を得たいのですがどのような計算式になるでしょうか。 3-jan,4-jan,5-janと言う風にシートをどんどんコピーして追加していくものです。

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

  • ベストアンサー
noname#148473
noname#148473
回答No.6

#2&4です。補足拝見しました。 ご希望の内容ですと、下記のような式が適当かと思います。 ---------------------------------------------------------- =INDIRECT("'"&TEXT(DATEVALUE(MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31))-1,"d-mmm")&"'!A2")+A1 ---------------------------------------------------------- 点線内を'2-jan'以降の全てのシートのセルA2に設定します。 結果として、例えば'20-jan'のA2には、'1-jan'から'20-jan'までのセルA1の合計値が表示されます。 シート名を '2-jan' のような形式にされるのであれば、この数式が最もシンプルなものです。もちろん、2月以降にもそのままで対応可能です。

toyohei
質問者

お礼

有り難う御座います。 NO5の回答を試しましたが、まだNO6は試していません。 シンプルでスマートなので利用してレポートをあとでします。

toyohei
質問者

補足

ありがとうございました。 流石!専門家です、エレガントな回答すばらしかったです。

その他の回答 (5)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.5

算式をセットしやすくするために作業用のセルを使います。 例えば、シート[2-jan]の   A20に =MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31) シート名です   A21に =FIND("-",A20)        シート名の中の『-』の位置   A22に =LEFT(A20,A21-1)       『-』の左の数値   A23に =RIGHT(A20,LEN(A20)-A21+1)  『-』から右の部分 とします。 シート[2-jan]のA2には  =INDIRECT("'"&A22-1&A23&"'!A2")+A1 とします。 これで、シートをコピーしていけば、前の番号のシートのA2が加算されていきます。 ちなみに、1つのセルで算式を書くと下のようになります。(見やすくするため,複数行で書いています) =INDIRECT(  "'"&(   LEFT(MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31),      FIND("-",MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31))-1)     -1)&  RIGHT(MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31),    LEN(MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31))     -FIND("-",MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31))+1)  &"'!A2"  )  +A1

toyohei
質問者

お礼

有り難う御座います。 長い計算式を入力し、無事出来ました。 作業用セルを利用の方は分解しながら、何となく理解できましたが、一つのセルは 理解する前に頭が痛くなり、ブラックボックスとして利用させて頂きました。 もし、1-jan,2-jan,5-janのように連続の場合も計算式出来るのでしょうか。 凄いの一言です。

noname#148473
noname#148473
回答No.4

#2です。 #2で書き忘れたのですが、複数のシートの同一セルの値を合計する場合、「串刺し計算」を使うと便利です。まず合計値を出したいセルに "=sum(" と入力してください。この状態で、合計を求めたい最初のシート(たとえば、1-janシート)の合計したいセルをクリックします。次に、Shiftキーを押したながら合計を求めたい最後のシート(たとえば、31-janシート)を開き、最後にEnterキーを押せばOKです。最終的には下記のような数式になります。 =SUM('1-jan:31-jan'!A1) それから、蛇足ですが、以下のマクロで[1-jan]から[31-jan]までのシートを一気に追加できます。 Sub シート挿入() Dim i As Integer For i = 1 To 31 Worksheets.Add after:=Worksheets(Worksheets.Count) ActiveSheet.Name = i & "-jan" Next End Sub 使い方ですが、Excelのメニューから[ツール]→[マクロ]→[Visual Basic Editor]を選びます。Visual Basic Editorが起動したら、メニューの[挿入]→[標準モジュール]を選びます。画面の右側に白紙のウィンドウが現れますので、そこへ上のマクロを貼り付けます。以上の作業が済んだら、Visual Basic Editorを終了し、Excelのメニューから[ツール]→[マクロ]→[マクロ]を選びます。中央に小さなウィンドウが表示されますので、「シート挿入」を選択して[実行]をクリックすると実行されます。 たとえば2月に使う場合は For i = 1 To 31 となっている箇所の31を28に直して、"-jan"を"-Feb"に直せばOKです。

toyohei
質問者

お礼

丁寧な回答ありがとうございます。 回答NO3の補足に書いたように、質問が少し間違っていました。 再度よろしくお願いします。

  • moon00
  • ベストアンサー率44% (315/712)
回答No.3

toyoheiさんは、シートが増えていっても常に左のシートを参照できる式が 欲しいわけですよね? 2枚目のシート以降のA2に以下の式を入れてみて下さい。 =INDIRECT(("'"&(G1-1)&"-jan'"&"!A1"))+INDIRECT(("'"&G1&"-jan'"&"!A1")) (ここで、それぞれのG1セルにはシート名の数字が入っています。) INDIRECT関数で文字列を利用して参照しているのですが。 シート名によってはもっと簡単になるかもしれません。

toyohei
質問者

補足

質問が少し間違っていましたので、再度書きます 左のシートの名前は 1-janとし、1-janシートのA2のセルに10が入力されています。 1-janシートの右のシートの名前は2-janとなっていてA1のセルに11が入力されています。 2-janシートのA2に前記のふたつのA2とA1のセルを加算式を入力して21と回答を得たいのですがどのような計算式になるでしょうか。 3-jan,4-jan,5-janと言う風にシートをどんどんコピーして追加していくものです。(シート名は文字として入っています) 解りづらい質問ですが、よろしくお願いします。

noname#148473
noname#148473
回答No.2

セルA2に次のような数式を入力してください。 ='1-jan'!A1+'2-jan'!A1 これで[21]と表示されるはずです。 不具合があれば補足ください。

toyohei
質問者

補足

説明不足でした。 シート名はシートごとに変化していきます。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

sheet1のA1ならば sheet!A1 で参照できます。 シート名に - とか 含まれるとうまくいかないようです。 シート名を変えたほうがいいと思います。

toyohei
質問者

お礼

ありがごうございます。 言葉不足だったようです、シート名はシートが増えるごとにかわっていきます。

関連するQ&A

  • エクセルでシート間の相対参照

    シートを分けて表を作成しています。 Sheet3のセルA1に「='sheet1'!A1」という計算式を入力しています。 この計算式を[B1]にコピーすると「='sheet1'!B1」ではなく、「='sheet2'!B1」という計算式にすることは可能でしょうか? 参照するセルも、シートも変更してほしいのですが、うまくいきません。 どなたかよろしくお願いします。

  • エクセルで左シートの指定したセルを参照させるには?

    お世話になります。 エクセルで作業日報を作っております。 シートの左から右へ1日ずつ日報を作っていて、前日に書いた予定(左シート)を次の日の結果欄に自動で出るようにしたいのです。 いままでは前日の予定をコピーし翌日の結果へ張り付けていましたが、自動で出る方法があるとのことで、自分なりにネットで調べましたが、ネットに紹介されている式をコピーしていじってみても、うまくできません。 常に右のシートのA1を参照 というような式を教えていただければ、うまくいくと思うのですが、どうぞアドバイスお願い致します。

  • Excelのシート間の参照

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

  • エクセルVBA シート追加に伴うシート名入力

    宜しくお願いします。 勤怠管理(タイムカード)の表の扱いに伴って,合理的にしてみたいと思いました。 一番左シートが入力シート(名前/時給など)になっており,それから右のシートが各個人タイムカードになってます(タイムカードの雛形のコピーをしながら増やしていた)。 入力シートに「名前」を追加すると雛形シートが追加になり(シート名が「名前」),また入力シートの「名前」を消すとそのシートがなくなるようなものがあると助かります。 単純なシート追加とかは組めるのですが,それ以上になるとチンプンカンプンで...。

  • 参照先もコピーしたいのですが

    たとえばsheet1のA1に12345と入力してあります。 A2セルには「=A1」と計算式が入っています。 このA2セルこコピーしてsheet2のあるセルにペースト して、このセルにもsheet1のA1の値を表示させたいのですが、なにか簡単な方法はあるのでしょうか? わざわざこのセルに「=Sheet1!A1」と入力しなくてはいけないでしょうか? ちなみに、このsheet2には他のデータ(A1セルをもコピーしないとして)はないものとしたいです。 アドバイスありましたら よろしくお願いします。 説明がいたらなかったらご連絡ください

  • シート間の参照について

    EXCELを使用しています。 Sheet1のA1から下の行に、sheet2のA1から下のセルに文字列が入力されていたら入力されているセルの内容を行ごとに表示しセルが空欄になったらsheet3のA1から下のセルに文字列が入力されていたらその内容をsheet1にsheet2の文字列の続きに表示させるにはどうしたらいいのでしょうか?

  • シートの名前をほかのシート、Visual Basicで参照される・・・・

    昨日、 >エクセルの途中までは、文字を残しておき、その後、シ>ートの名前を自動入力したいのですが? >(1)/(2)/※と同セルに文字を入力し、シート名に(3)を >入力すると※の部分に(3)が反映される。 >ただし、同セル内で反映させたいです。 という質問をさせていただき、見事下記の回答をいただいたのですが、 >="(1)/(2)/"&MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31) 入力をすすめていったところ、ときどき ”シートの名前をほかのシート、Visual Basicで参照されるオブジェクトライブラリまたはワークシートと同じ名前に変更することはできません。” とエラーがでてきてしまいました。 主に(2)とシートで入力した(3)の部分が同じ文字の場合にエラーになってしまいます。 質問(1) これは何をしているためにエラーメッセージが出てきてしまったのでしょうか? 質問(2)どのようにすれば(2)と(3)同じ文字を入力することができるようになるでしょうか? 回答、どうぞお願いいたします。

  • excel2007 vlookup関数 シート参照

    次のような関数をつくって利用しています =VLOOKUP($B$3,'1101'!$1:$1048576,2) ここで利用しているのは、シート名「1101」なのですが アクティブシートのセルに入力した名前に対応して 参照するシートを変更したいのです 上の式の1101のところに、セルA4やindirect(A4)などを いれようとしましたがうまくいきません 調べてみましたがうまく調べられないので 質問することに決めました。 ご指導よろしくお願いします。

  • エクセルの他シートを参照する関数を教えて下さい。

    3枚のシートで成績を付けています。 シート「あ」 … テストの点を入力し、合計する シート「い」 … シート「あ」の合計点数によってランクを付ける シート「う」 … 個人の情報一覧 1、シート「う」のA1セルに名前、A2セルに性別、A3セルに年齢を入力する(10人分) 2、シート「あ」に入力規則を設け、名前をリストより選ぶと、性別、年齢が自動入力される 3、シート「あ」に個人のテストの成績を入力する 4、シート「あ」の合計により、シート「い」にランクを自動で付ける 5、シート「う」のA4セルにランクを自動入力 4、まではできているのですが、5ができません。 シート「あ」にaさんの名前を入力して、テストの点数を入力したら、 シート「い」に表示されるランクを、シート「う」のA4セルに転載したいのです。 そして次、シート「あ」にbさんの名前を入力して…としたときに シート「う」のaさんの情報は残ってほしい。 これを10人分行うと、シート「う」に10人分のランクが記載されている。 というものを作ろうとしています。 ややこしい書き方をしましたが、どなたかご教授下さい・・・

  • 左側のシートの入力済み最終セルを参照

    お小遣い帳のようなのを作っています。 で、とりあえず9月の分が完成したので、 それをシートごとコピーして10月分も作りました。 でも、前の月からの繰越金を毎回手入力するのって 面倒だなーと思い、こちらで探したら下記URLを発見! http://okweb.jp/kotaeru.php3?q=1089734 No.1の回答者さんの式で見事に参照することができました。 けど10月分をコピーして11月分を作ったところ、結局また 式のシート名の部分を書き換えなければならないんです☆ そんなんだったら手入力するのと、あんまり変わりません。 なので「常に左隣のシートの(入力済みの)最終セルを参照」 …というふうには、できないものでしょうか? よろしくお願いいたします m(_ _)m

専門家に質問してみよう