- 締切済み
エクセル内の数式を反映させながらシートをコピーする方法
エクセルのシートのコピーについて教えて下さい。 1日1シートで表計算できる表を作るよう指示されました。 シート内には、累計を出すように(前日までの合計)+(本日の数字) の数式が入っています。 具体的に書きますと、セルA1に本日の数字を入力。 セルB1に(前日までの合計)+(本日の数字)と数式を入れました。 数式でいうと、例えばシート3のセルB1には(シート2:B1)+A1 シート4のセルB1には(シート3:B1)+A1 という具合にセルB1には前日までの合計を反映させるように、常に 前シートの累計をリンクさせています。 シートをコピーしては、セルB1の数式「前シート」部分を修正して こつこつシート7まで作ったのですが、30日分作って欲しいと 言われて困っています。 時間がたくさんあればこつこつ続けて完成させるのですが、就業上の 問題があってこれにずっと時間を割くことができません。 説明が長くなりましたが、ここで教えて頂きたいのです! 数式を反映させながら、シートをどんどんコピーする方法は ありませんでしょうか? 今、シート7まで作ったので、まんまコピーして7枚ずつ増やす 事は簡単ですが、累計部分の(前シート:B1)シートのリンクが 勝手には直ってくれません。 コピーすると同時に、前シートのリンクも直ってくれる方法が あればぜひ教えて下さい。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17070)
完全にはVBAプログラムを作って A.シートの追加 B。シート名の修正 C。前月残を参照しているセルの式の(シート名部分の)修正 が必要です。 質問者にはVBA(俗に言うマクロ)の経験なく、無理でしょう。 ですから一応、質問者には不可能です。 ーーー ただし、 Aはシートのコピーという人手労力でする覚悟はついているでしょう。 Bもシート名の修正という人手労力でする覚悟はついているでしょう。 (シート名は関数では変えられないので、関数ではどうしようもない。)自動で連番的に振るなんて、VBAで無いと出来ない。 ーー Cについては下記のような便法があります。 例で説明します。 Sheet1 内容は4月分 B16 今月残高がある Sheet2 内容は5月分 A1に5と入れて、書式ユーザー定義で#月分で5 月分と見せる。A1セルの値は数字とする。 B2の式 =INDIRECT((A1-1)& "月!B16") これでSheet1のB16の数字を取ってくる。 Sheet2をコピーし、6月分をつくり、 B2を見ると =INDIRECT((A1-1)& "月!B16") A1セルに6 を入れる(注)と、Sheet2 (内容は5月分)のB16の数字が出る。(これは手修正しないとどうしようもない) ーー これでも他シートの参照が多い場合は間違いが少なく手軽。 ただし式の組み方に気をつける必要が有るが。 本当は年月などの数字を、シートのA1とB1には、入れるべきで、そうすると式が複雑化する。1月で12月の参照も式が複雑化する。 よいこと尽くめではないが、ことほどさように難しいということ。
- hige_082
- ベストアンサー率50% (379/747)
マクロしか思いつかないので、マクロで シート名の指定が無いので「sheet」+「連番」としました Sheetを「sheet1」以外すべて削除し、マクロを実行してください Sub Macro1() Dim i As Integer Sheets("Sheet1").Select For i = 2 To 30 Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Sheet" & i With Worksheets("sheet" & i) .Range("B1").Formula = "=Sheet" & i - 1 & "!b1+a1" End With Next i End Sub 試してみて
お礼
ご回答ありがとうございました。 いろいろ書いて頂いたのですが、私はマクロが使えません。 似たような質問はないかと検索した際も、マクロの数式(?) をよく見かけましたが、これを使うには勉強の時間が必要です。 その間にコツコツ作成したら出来そうな気がしますので、 今回は地道に作成したいと思います。 また、似たような指示を受けた際に活用できるように、勉強 しておきたいと思います。 アドバイスありがとうございました。
- mu2011
- ベストアンサー率38% (1910/4994)
30シート程度ならば、コツコツ作成した方が早いと思いますが如何でしょうか。 (1)先ずは30シートを作成、先頭シート除く残り全シートを選択(2番目シートタブをクリック後、最終シートタブをshiftキーを押しながらクリックし、シートのB1に「シート名!B1」と入力 (2)シートを選択を解除(選択されているシートタブ上で右クリック→作業グループを解除) (3)各シートのB1のシート名を変更
お礼
ご回答ありがとうございました。 難しいことはできませんので、コツコツ作成するのが 早いし確実だとわかりました。 アドバイスありがとうございました。
お礼
ご回答ありがとうございました。 お察しの通り、マクロは使えません。 セルのコピーをするように(シフトキーとドラッグでササーっと) シートもコピーが出来るなら、その方法が知りたいと思い質問 させて頂きました。 やはり、簡単にはいかないとわかりました。 人手労力でする覚悟ができました。 コツコツやりたいと思います。 アドバイスありがとうございました。