- ベストアンサー
エクセル 左隣のシートを参照
恐れ入りますが御教示ください。 エクセルで新しく次のような表を作りました。 シート名 4月 B列 前月残高 C列 当月増 D列 当月減 E列 当月残高 E列には例えば3行目なら=B3+C3-D3という式が入っています。 次に、このシートを右隣にコピーして、シート名を5月に変えます。 お伺いしたいのは、4月の残高を5月の前月残高に写す、そして6月以降を作る時、この作業(左隣のシートの当月残高を前月残高に写す)を自動化する方法です。 よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
シート名が4月、5月、6月・・・11月、12月 となっているのでしたら以下の数式で試してみてください。 5月のB1に入力して必要な場合下方向にコピーしてください。 未保存のファイルではエラーになります。 =INDIRECT(LEFT(RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))),LEN(RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))-1)))-1 & "月!B" & ROW(1:1))
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
質問者は、エクセル関数でやることが念頭にあるのかな。 すでに回答が出ているが、式が結構長く複雑になる。 またその場合は、下記(2)は手作業でやるのを覚悟する必要がある。 ーー 下記はVBAでやる方法が念頭にあるが、 次月繰り越しは (1)前月データシートをコピーして新しいシート(今月分)にする。 (2)式や見出し文字や書式は保存して、数値だけ0にする Sub test02() Sheets("Sheet1").Cells.Copy Sheets("Sheet2").Range("A1") Cells.SpecialCells(xlCellTypeConstants, 1).Select ' 定数のあるセルを選択 Selection.ClearContents End Sub (3)シート名など関係個所を修正(VBAか手作業) (4)前月繰り越し残を、今月シートへ持ってくる。 前月繰り越し残の入るセル位置が、毎月変わらない仕組み(表)なら VBAで値を持ってこれる。 前月の繰り越し残高のある行は毎月変わるのだろうが、見出しがその行に あるなら、(「翌月繰り越し残」など)その文字列を探してその残を取り出し 当月の「前月繰り越し残」の持ってこれる。 (5)データが今月分を入力を終えて、前月より多かったり少ない場合の処理。 ーー シートタブで見て、左隣のシートを参照 Sub test01() x = ActiveSheet.Index MsgBox Worksheets(x - 1).Range("A1") End Sub ーー でもこの考えは使わない方がよいと思う。 手っ取り早いので使うのだろうが。 シートの位置は変えられやすいから。 使うなら左となりのシート名を確認のために出すとかして確認してはどうか。 シートの名前をもとに考えた方がよいと思う。 ーー シート名に年月が入っている場合、今月分の名前を作りだすVBA VBAコードが、結構煩わしくて、手作業でやるのが簡便だと思う。 == 参考(質問課題直接でないが、VBAだが、) エクセル シート月繰り越し でGoogleなど照会 https://ar-kawabe.com/blog/excel-worksheets-copy/ ExcelマクロのWorksheets.Copyメソッドを使って、月次出納帳シートの自動繰越機能を作成。
- kkkkkm
- ベストアンサー率66% (1719/2589)
12月、1月、2月と続く場合はNo1の式を以下のように変更するか1月だけ手入力するかで試してください。 =IF(LEFT(RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))),LEN(RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))-1)))="1",INDIRECT("12月!B" & ROW(1:1)),INDIRECT(LEFT(RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))),LEN(RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))-1)))-1 & "月!B" & ROW(1:1)))