Excel2003を使用しています。
マクロで、伝票を追加して行き、追加する度に合計のセルにある計算式を
前の伝票の計算式と合算させたいのですが、うまく行きません。
1枚目の合計 =Sum(A4:A17)
2枚目の合計 =Sum(A22:A35)+1枚目の合計
3枚目の合計 =Sum(A40:A53)+1枚目の合計+2枚目の合計
※合計の計算式は18行毎に入ります。
伝票の枚数は決まっていませんので、何枚追加しても合算出来る様にと考えています。
Formulaを使ってセルの計算式を取得し、2枚目の計算式と合算は出来るのですが、
3枚目4枚目となっていく時の記述がイマイチうまく出来ません。
sikiA = Range("A18").Formula ←1枚目の合計
siki1 = sikiA & "+" & Cells(18 * cnt, 1) ←2枚目の合計と1枚目の合算
※「cnt」は伝票の枚数です。
sumの部分は、伝票の追加の時点で計算式が入ります。
なので、伝票をコピー&貼り付けした時点で、合算している計算式を入れてしまった方が
良いのかなとは思いましたが、思うように行っていません。
よろしくご教授下さい。
No.2ベストアンサー
- 回答日時:
1枚目の合計式を
=SUBTOTAL(9,A4:A17)
2枚目の合計式を
=SUBTOTAL(9,A4:A35)
3枚目の合計式を
=SUBTOTAL(9,A4:A53)
とします。
「=SUBTOTAL(9,A4:A」まで共通なので
セル.formula = "=SUBTOTAL(9,A4:A" & セル.row -1 &")"
といった具合になります。
回答ありがとうございます。
SUBTOTAL関数の存在をすっかり忘れていました。
keithinさんの回答で、光明が見えて来たので、ベストアンサーさんにさせて頂きます。
No.3
- 回答日時:
仕組みの記述が不完全ではないか。
>1枚目
シートを増やしていっているのか?。
質問の望みの計数はどのシートの、何処のセルに入れるのか、質問に書いてあるか?
==
1シートが伝票1枚に対応し、
その伝票のシートの何処かのセルを足したいのではないか。
その足すセルは一定の場所のセルにあるのではないのか。各シートで(多分変わるのは行で、列は一定だろう)移動するのか?
>sikiA = Range("A18").Formula ←1枚目の合計
siki1 = sikiA & "+" & Cells(18 * cnt, 1) ←2枚目の合計と1枚目の合算
は集計シートのようなもので、各伝票シートとは独立したシートではないのか。
===
上記は私の誤解もあるかもしれないが、
一般論としても、エクセルの質問は、いつも
ブック
シート
列・行
セル
が何処のことを言っているのか明確にして、質問されたい。
==
普通は各シートを読んで足していくような方式を考えるのではとおもう。
For Each Sh In Worksheets
のやり方は知っていて、本件やっているのか。
この回答への補足
質問の不備があり申し訳ありません。
>シートを増やしているのか?
いいえ、シートではありません。
1つのシートに「伝票追加」をすることで行を増やして(移動して)いっています。
お察しの通り、列は一定です。
>集計シートのようなもので・・・
いいえ、集計シートではありません。
伝票のテンプレートを別シートからコピーしていますが、当該シートは入力専用伝票です。
ユーザー側からの依頼で、入力伝票を個々に印刷にも使いたいと言う事で、
1シートに複数枚の伝票と言う形をとっています。
>普通は各シートを読んで足していく・・・
上述した様に、ユーザーからの要望もあったのと、1日に扱う伝票の量が大量な為、
1枚の伝票=1シートと言う形は取れませんでした。
他に不備あればご指摘下さい。
No.1
- 回答日時:
Sub test()
Dim page As Integer
Dim sumpara As String
Dim calc As String
For page = 1 To 5
sumpara = "A" & (4 + (page - 1) * 18) & ":A" & (17 + (page - 1) * 18)
calc = "=Sum(" & sumpara & ")"
If page > 1 Then
calc = calc & " + A" & (page - 1) * 18
End If
Range("A" & (page * 18)).Formula = calc
Next
End Sub
これでいかがでしょうか?
回答ありがとうございます。
動作させた所、2枚目の伝票の合計に1枚目の合計も足されている計算式が追加されますが、
3枚目、4枚目と追加してもこの記述だと、あくまでも前の伝票の合計が足されて行くだけで
私の考えている
3枚目の伝票に「3枚目の合計+2枚目の合計+1枚目の合計」
4枚目の伝票に「4枚目の合計+3枚目の合計+2枚目の合計+1枚目の合計」
にはなりません。
#2さんの回答でなんとなく光明が見えて来たので、申し訳ありませんが
今回は、#2さんをベストアンサーさんにさせて頂きます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
エクセルで1月0日と表示される!!
-
日付が未入力の際はゼロか、空...
-
Excelで複数シートの選択セルを...
-
エクセルで条件に一致したセル...
-
Rangeメソッドは失敗しました。...
-
マクロ 新しいシートにデータ...
-
複数シートの同じセル内容を1シ...
-
EXCELマクロで、シート間でのコ...
-
別シートのセルを絶対参照にする
-
EXCEL リストボックスのRowSouc...
-
エクセルのルビがついたセルを...
-
エクセルで、加筆修正したセル...
-
セルの値と同じ名前のシートを...
-
エクセルで20万行あるシート...
-
エクセルで、勤務表から 日付...
-
VBAで変数に関数式の結果をセッ...
-
(Excel)あるセルに文字を入力...
-
エクセルの文字
-
Excelシートの保護時にデータの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
日付が未入力の際はゼロか、空...
-
Excelで複数シートの選択セルを...
-
エクセルで1月0日と表示される!!
-
エクセルで条件に一致したセル...
-
Rangeメソッドは失敗しました。...
-
別シートのセルを絶対参照にする
-
シート参照で変数を使いたい(EX...
-
Excelシートの保護時にデータの...
-
複数シートの同じセル内容を1シ...
-
エクセルで複写のように自動入...
-
エクセルの文字
-
Excelでスクロールすると文字が...
-
(Excel)あるセルに文字を入力...
-
Excelのファイル容量が減らない...
-
マクロ 新しいシートにデータ...
-
エクセルで別シートからの最大...
-
ExcelでTODAY関数を更新させな...
-
エクセルのセルに、マウスで選...
-
EXCELマクロで、シート間でのコ...
おすすめ情報