• ベストアンサー

エクセルでシート数が分からない場合の串刺し計算

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

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

2番目から最後までのシートを一番左のシートに合計します。 コメントアウトしている r.Value = r.Value を生かすと値になります。 範囲は選択したセル範囲です。 参考に。 Sub test() Dim mySum As String, r As Range  mySum = Worksheets(2).Name & ":" & _      Worksheets(Worksheets.Count).Name & "!"  Worksheets(1).Activate  For Each r In Selection   r.Value = "=sum(" & mySum & r.Address(0, 0) & ")"   'r.Value = r.Value  Next r End Sub

aiueochama
質問者

お礼

よく考えてみると、最初と最後にシートを挿入すればうまくいきます。 大変重宝するマクロを提供していただいてありがとうございました。 また機会がありましたらよろしくお願いいたします。

aiueochama
質問者

補足

大変参考になりました。ありがとうございます。 ただ、シート名に「-」が入ってある場合(例:GC0908-100)うまくいきません。何回が試行みると、一番初めか最後のシート名に「-」が入っているとうまくいかないようです。 これを回避するにはどのようにすればいいのでしょうか?

その他の回答 (1)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

答えでなくてすみません。 VBAを使わないでもダミーのシートを作成すればいいのでは? 合計,始め,1月,2月.....12月,終わり の様にして合計のシートで =SUM(始め:終わり!A1) "始め"と"終わり"の間のシートの合計になります。

aiueochama
質問者

お礼

ご回答ありがとうございます。 3D参照 (計算式) による統合で上記の方法を使用していました。ただ今回はVBAが必要だったものですから。また機会がありましたら、よろしくお願いいたします。