
こんばんは。
ご教示をお願いします。
シート(左から)
「集計」「1月」「2月」「3月」があります。
「1月」「2月」「3月」のシートのA1セルの値(数値)の合計を集計表に表示させたいと思っています。
しかし、時として「4月」「5月」など、集計元のシート数が変更します。
このため、VBAでシート数をカウントし、シート数の増減に対応したいと思っていますができません。
以下のプロシージャの「ここの書き方がわかりません」の部分に、シートをインデックスで指定しましたがエラーとなってしまいます。(WorkSheets(2):WorkSheets(WorkSheets.count!RC)
解決策があれば、よろしくお願いします。(エクセル2016使用)
sheets(1).range("A1").Select
Selection.formulaR1C1="=SUM(「ここの書き方がわかりません」!RC)"
No.3ベストアンサー
- 回答日時:
こんなので良いんでしょうか?
.FormulaR1C1 = "=SUM(" & Worksheets(2).Name & ":" & Worksheets(Worksheets.Count).Name & "!RC)"
ただ、マクロ実行後にシート位置を移動しちゃうと、再計算されて値が変わっちゃいますよ?
トラブルの原因になりそうなので、数式→値に変換しといた方が良いような気がします。
No.2
- 回答日時:
こんばんは!
お望みの串刺し計算の方法ではありませんが、
一例です。
インプットボックスで集計したいシートを選択するようにしてみました。
標準モジュールです。
Sub Sample1()
Dim k As Long
Dim sN As String
Dim myAry
1: sN = sN & "_" & Application.InputBox("集計したいシート名を入力")
If MsgBox("他にも集計したいシートがありますか?", vbYesNo) = vbYes Then
GoTo 1
Else
sN = Mid(sN, 2, Len(sN))
myAry = Split(sN, "_")
With Worksheets("集計").Range("A1")
If UBound(myAry) > 0 Then
MsgBox sN & vbCrLf & "シートの集計をします"
.Value = 0
For k = 0 To UBound(myAry)
On Error Resume Next '//←念のため★//
.Value = .Value + Worksheets(myAry(k)).Range("A1")
Next k
End If
End With
End If
End Sub
こんな感じではどうでしょうか?
※ 細かいエラー処理(例えば存在しないシート名の入力などの回避)が必要かもしれませんが、
まずはこの程度で・・・m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルでシート数が分からない場合の串刺し計算
Excel(エクセル)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
◾️Excel VBA 統合について Consolidateメソッドを使用する際、Excelブックを
Visual Basic(VBA)
-
-
4
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
5
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
6
VBAでセル入力の数式に変数を用いたい
Excel(エクセル)
-
7
indirect 関数を使った複数シートの範囲指定方法
Excel(エクセル)
-
8
VBAでExcelのBookの串刺し集計
その他(プログラミング・Web制作)
-
9
【Excel VBA】 Excelの統合機能の、統合元範囲の記述に関して教えてください
Excel(エクセル)
-
10
エクセルVBAでConsolidate
Excel(エクセル)
-
11
別のシートを参照して計算する方法
Visual Basic(VBA)
-
12
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
13
串刺し計算ができない
Excel(エクセル)
-
14
エクセルでシート数が増加する場合の串刺し計算
Excel(エクセル)
-
15
エクセルで特定の値を含む列のみVBAで非表示にしたい
Excel(エクセル)
-
16
エクセルVBA 4行飛ばしで転記するループ処理
Excel(エクセル)
-
17
Excel VBAで複数シートから該当列のみを新規シートに貼り付け、集計をする方法
Visual Basic(VBA)
-
18
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの複数シートの保護を...
-
別シート参照のセルをシート毎...
-
Excelのシートを、まとめて表示...
-
エクセルで複数設定したハイパーリンク先...
-
前の(左隣の)シートを連続参...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルでファイルを開いたと...
-
Excel、同じフォルダ内のExcel...
-
エクセルで前シートを参照して...
-
複数シートの特定の位置に連番...
-
EXCEL:同じセルへどんどん足し...
-
EXCELで1ヶ月分の連続した日付...
-
Excel VBA 特定の複数のシート...
-
特定のシートの削除を禁止した...
-
VBAで条件によりフォントサイズ...
-
シート名が変わっても計算したい
-
Excel 連番を入力する方法
-
【Excel】 左のシートの特定セ...
-
VBAでシートコピー後、シート名...
-
excelでシート毎の最終更新日を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定のセルだけ結果がおかしい...
-
エクセルの複数シートの保護を...
-
前の(左隣の)シートを連続参...
-
別シート参照のセルをシート毎...
-
エクセルで前シートを参照して...
-
エクセルでファイルを開いたと...
-
特定のシートの削除を禁止した...
-
Excelで金銭出納帳。繰越残高を...
-
エクセル 計算式も入っていない...
-
Excel、同じフォルダ内のExcel...
-
EXCEL:同じセルへどんどん足し...
-
VBAでシートコピー後、シート名...
-
複数シートの特定の位置に連番...
-
シートの保護のあとセルの列、...
-
Accessのスプレッドシートエク...
-
VBAで条件によりフォントサイズ...
-
エクセルVBAでパスの¥マークに...
-
Excelのシートを、まとめて表示...
-
エクセルで複数設定したハイパーリンク先...
-
エクセルで毎回1枚目のシートを...
おすすめ情報