• 締切済み

エクセル!常に隣のシートを参照する数式をおしえて

お願いします<m(__)m> エクセルで日ごとにシートを追加して前日の増減を表記していますが 今はいちいち数式を入れなおしています。 そんな数式はありますか? これで意味が通じていますか? 宜しくお願いいたします。

みんなの回答

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 回答:No.3です。 >すいません。上記のようにしても数値がでてきません。 >シートは日付を入れています。  済みません、回答:No.3の方法ですが、質問者様個人がどの様なパターンでシート名を決めておられるかという情報が無かったため、取り敢えずとして、単純にコピーシートを複製しただけの場合に関して回答させて頂いたものです。  ですから、シート名を書き換えて、括弧付きの数字を削除してしまった後の状態に対しては、回答:No.3の方法は対応しておりません。  シート名が日付となっている場合に対しては、また別の関数を組む事で対応可能になると思われます。  但し、 >たとえば 12.1 12.2のように日ごとシートを増やしていきます。 という形式のシート名には、何年の日付になるのかという情報がありませんから、そのままでは前日の日付が何日になるのかが不明となる場合が出て来ますので、現行のシート名の名付け方では、御望みの結果を得ることは出来ないと思います。  例えば、3.1というシートの前日のシートは、どのシートになると思われますか?  2012年であれば3.1の前日のシートは、2.29になりますが、2013年であれば2.28になるはずです。  この様に、年によって前日にあたるシートが変化しますので、年の情報がなければ前日のシートを正しく選択する事は出来ません。  ですから、シート名をあくまで日付を基にした名称とされたいのでしたら、シート名を例えば、 2012-3-1 や H24.3.1 といった、年数の情報を含んだものにされるか、或いは、各日毎のシートの決まったセルに、年数を入力しておくようにされるか、どちらかの方法を取らなければなりません。  従いまして、シート名の決め方を変更される場合には、どの様な形式のシート名に変更されるのかを、そして、特定のセルに年数を入力しておかれるのでしたら、そのセルのセル番号を、それぞれ御教え頂かなくては、回答者は関数を組む事が出来ませんので、現行の方法から、どの様な方法に変更されるのかをお決めになられてから、どうされるのかを御教え願います。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

>シートを追加して  という操作を行う際に、おそらくは元のシートのコピーシートを作成しておられるかと思いますが、その際、元のシート名が例えば「Sheet1」であった場合には、コピーシートのシート名は「Sheet1 (2)」になるかと思います。  この事を利用して自動的に前のシートのセルを参照させるには、次の様にされると良いかと思います。  まず、元のシートのシート名を「『元のシート名』+『半角スペース』+『(1)』」という形式に変更して下さい。  例えば、元のシートの元々のシート名が「Sheet1」であった場合には、「Sheet1 (1)」に変更して下さい。  次に、そのシートのコピーシートを複製しますと、コピーシートのシート名は「Sheet1 (2)」になるかと思います。  そして、例えばSheet1 (2)のE1セルに、Sheet1 (1)のA1セルのデータを表示させる場合には、Sheet1 (2)のE1セルに次の関数を入力して下さい。 =IF(ISERR(1/(INDIRECT("'"&REPLACE(LEFT(CELL("filename",E1),FIND("(",CELL("filename",E1),FIND(".xls",CELL("filename",E1)))),1,FIND("]",CELL("filename",E1),FIND(".xls",CELL("filename",E1))),)&REPLACE(LEFT(CELL("filename",E1),LEN(CELL("filename",E1))-1),1,FIND("(",CELL("filename",E1),FIND(".xls",CELL("filename",E1))),)-1&")'!"&CELL("address",A1))<>"")),"",INDIRECT("'"&REPLACE(LEFT(CELL("filename",E1),FIND("(",CELL("filename",E1),FIND(".xls",CELL("filename",E1)))),1,FIND("]",CELL("filename",E1),FIND(".xls",CELL("filename",E1))),)&REPLACE(LEFT(CELL("filename",E1),LEN(CELL("filename",E1))-1),1,FIND("(",CELL("filename",E1),FIND(".xls",CELL("filename",E1))),)-1&")'!"&CELL("address",A1)))  上記の関数は、セルの参照形式が相対参照の場合の関数になりますが、もし参照形式を絶対参照とする場合には、関数の中に2ヶ所ある CELL("address",A1) という部分の中の「A1」という記述を「$A$1」に変更して、 =IF(ISERR(1/(INDIRECT("'"&REPLACE(LEFT(CELL("filename",E1),FIND("(",CELL("filename",E1),FIND(".xls",CELL("filename",E1)))),1,FIND("]",CELL("filename",E1),FIND(".xls",CELL("filename",E1))),)&REPLACE(LEFT(CELL("filename",E1),LEN(CELL("filename",E1))-1),1,FIND("(",CELL("filename",E1),FIND(".xls",CELL("filename",E1))),)-1&")'!"&CELL("address",$A$1))<>"")),"",INDIRECT("'"&REPLACE(LEFT(CELL("filename",E1),FIND("(",CELL("filename",E1),FIND(".xls",CELL("filename",E1)))),1,FIND("]",CELL("filename",E1),FIND(".xls",CELL("filename",E1))),)&REPLACE(LEFT(CELL("filename",E1),LEN(CELL("filename",E1))-1),1,FIND("(",CELL("filename",E1),FIND(".xls",CELL("filename",E1))),)-1&")'!"&CELL("address",$A$1))) 等として下さい。(「E1」と記述されている部分に関しては、相対参照のままで構いません)

hideki19630710
質問者

補足

すいません。上記のようにしても数値がでてきません。 シートは日付を入れています。 たとえば 12.1 12.2のように日ごとシートを増やしていきます。 新しいシートに前日の数値の増減を自動計算したいのです。 この文章で分かりますでしょうか? 宜しくお願いいたします。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

例えばシートが追加されていくときにSheet4、Sheet5、Sheet6といった場合でしたら次のような式で対応できますね。 例えばSheet5が追加されたときにSheet4のA列のデータをSheet5のA列に表示させるとしたらシート5のA1セルには次の式を入力して下方にドラッグコピーします。 =INDIRECT("Sheet"&TRIM(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+6,10))-1&"!A"&ROW(A1)) この式でしたら常にシート番号がj一つ下のシートのデータを表示させることができます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

具体的に何をどう困ってるかわからんのだけど, 単にコピーするだけじゃダメ?

関連するQ&A