• ベストアンサー

エクセルでシート数が増加する場合の串刺し計算

エクセルで串刺し計算をする場合、データ→統合等でできますが、ファイルによってシート数が毎日増加する場合でも一発で串刺し計算(合計)できるように、VBAでプログラムを組むにはどのうようにすればよいのでしょうか? なお、各シートのデータはすべて同じレイアウトで作成されているとします。 VBAでプログラムの記入例があれば、助かります。

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

ユーザ定義関数例です。 シート上でAlt+F11キー押下→挿入→標準モジュール→サンプルコード貼り付けてお試しください。 因みに合計シート名は「合計」として下さい。 合計シートの任意セルに=mycnt(串刺し対象セル) Function mycnt(rng) Dim i As Long, tot As Long Application.Volatile For i = 1 To Sheets.Count If Sheets(i).Name <> "合計" Then tot = tot + Sheets(i).Range(rng.Address) End If Next mycnt = tot End Function

wakaran01
質問者

お礼

親切にありがとうございました。 早速使用し、OKになりました。

その他の回答 (2)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

串刺し計算をしたい最後のシートが変動するというご質問ですね。 この場合は、最後のシート(集計対象範囲を空白セルにして非表示にした集計シートでもよい)をダミーシートにして、新しいシートはこのシートの間に挿入するようにして(シート名をドラッグ)、先頭のシートから最後のシートまでを串刺し集計するようにするのが簡単です。

wakaran01
質問者

お礼

早々の回答ありがとうございます。

回答No.1

マクロを組まなくても次のようにすれば簡単に串刺し集計できます。 シートが左から [合計],[Sheet1],[Sheet2],‥‥、のように並んでいると した場合―― [合計]シートに =SUM(Start:End!A1) という参照式を入力しておいて、 集計したいワークシート群の前後を"Start"と"End"という空のシートで はさみます。 例えば[合計]と[Sheet1]の間に"Start"、一番右端に"End" というシートを 置くと、すべてのシートを串刺しできます。 "Start"と"End"という空のシートの位置を変更すれば、集計するシートの 範囲を自由に指定できますね。

wakaran01
質問者

お礼

早々の回答ありがとうございます。 試用してみました、ありがとうございます。

関連するQ&A