こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルがわかりません

原本があり、毎日その原本をコピーして用紙を使用しています。

シート名は1 2 3 4・・・と一ヶ月の31まで使っています。
前日入力した左隣のシートのA1の数値を、新しく右側にコピーしたシートのA2に自動入力したいです。
下の式を使ってみると、1→2→3と1桁のシート名の時は上手くいきましたが、9→10以降は「#REF」と表示されてしまいます。

=INDIRECT(""&RIGHT(CELL("filename"),1)-1&""&"!A1")

どのような式を入力すれば使えますでしょうか?

(1)原本から右端にコピーして使用
(2)原本から新しくコピーしたシートの左隣の数値を自動入力
(3)1 2 3というシート名で使用
(4)シート名が31まで使えること
上記4点を満たす式を教えて下さい。

投稿日時 - 2015-09-20 00:37:01

QNo.9050576

困ってます

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

 まず、

CELL("filename")

を複数のシート上で用いる場合には、例えば

CELL("filename",A1)

の様に、同じシートの中に存在する適当なセルを参照する様にしませんと、関数が入力されているセルが存在しているシート名ではなく、再計算が行われた時に開いていたシートの名称が表示されてしまいますので、必ず同じシートの中に存在するセルを参照先として指定する様にして下さい。
 それから、御質問文に挙げられている関数では、「&RIGHT」の前と「&"!A1"」の前にそれぞれ1つずつある「""」の中に、「'」を入れるのを忘れています。

 それで御質問の関数ですが、仮の話としてその関数をB1セルに入力するものとした場合においては、基本的には次の様な関数となります。

=INDIRECT("'"&REPLACE(CELL("filename",B1),1,FIND("]",CELL("filename",B1),FIND(".xls",CELL("filename",B1))),)-1&"'!A1")

 尤も、御質問の件の場合は

>シート名は1 2 3 4・・・と一ヶ月の31まで使っています。

という条件がありますので、次の様に少し簡略化する事が出来ます。

=INDIRECT("'"&SUBSTITUTE(RIGHT(CELL("filename",B1),2),"]",)-1&"'!A1")

投稿日時 - 2015-09-20 03:30:21

お礼

完璧な発注書が完成しました!ありがとうございました!

投稿日時 - 2015-09-25 10:02:59

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

=INDIRECT((SUBSTITUTE(RIGHT(CELL("filename"),2),"]","")-1)&"!A1")

元の式はシート名の右端1文字しか見ていませんのでシート名が2ケタになるとおかしくなっています。

投稿日時 - 2015-09-20 01:28:09

お礼

無事解決致しました。
ありがとうございます。

投稿日時 - 2015-09-25 10:02:02

あなたにオススメの質問