シートを連続で作るマクロを書いてみました。
週ごとにシートを作って、管理することはよくあります。学校だと週案などがそうですね。
シートを連携させるために…
前の週の値を参照して、今週分を加算したい。そのためには、以下の条件で元を作ります。
- シート名が週を表す数値のみにする
- シート名を使って、前の週の値を参照する
1.については、マクロで連続で作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Public Sub add_sheet() Dim addedSheet As Worksheet Dim n As Long Dim w As Long '作成するシート数 n = Range("A1").Value '最初のシートのA1セル(適宜変更)に数値を入力 For w = 1 To n '1番から入力した数値まで(1を2にすれば、2から始まります) '末尾にシートを追加 Set addedSheet = Worksheets.Add(After:=Worksheets(Worksheets.Count)) addedSheet.Name = w Next End Sub |
2.シート名の取得について
VBAでシート名を取得して、B2セルに貼り付ける方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Public Sub get_sheet_name() Dim i As Long Dim num As Long Dim cell As String cell = "B2" 'シート名を書き込むセル(適宜変更) num = 1 For i = 1 To Worksheets.Count If i = 1 Then '最初のシートを飛ばす(設定シートそして活用するため) num = num + 1 Else Worksheets(num).Range(cell) = Worksheets(num).Name num = num + 1 End If Next End Sub |
これで、B2セルにシート名が出力されます。
※別の方法としてマクロを使わず、以下の数式でもシート名を取得できます。
1 |
=RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))) |
そして、シート名を関数の中で使うにはINDIRECT関数を使います。
1 2 3 4 5 6 7 |
B2セルに、シート名 前の番号のシートのC1に参照したい数値が入っている時 =INDIRECT("'"&B2-1&"'!"&"C1") で参照できます。 ※ ”と’が組み合わせてあるので注意 |
最後に。マクロを使うか、関数を使うかは好みです。使いやすい方を使うのがいいと思います。
記事のマクロ、関数を使ったファイル以下です。