こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル2002VBAで合計を計算したい

単純なことなのかもしれませんが…
エクセルVBAでセルの足し算をしたいのです。
セルA1に合計を出したくて
A15+A25+A35…と、A155までの足し算の結果をA1に出したいのです。
また、A2のセルにはA16+A26+A36…
A3にもA17+A27+A37…と。

そしてB1,B2,B3にも、B15+B25+B35…B16+B26+B37…B17+B27+B37とそれぞれ。
C列にも同様にです。
A1からC3までに、同じような演算の結果が出るということです。
これをエクセルのSUM関数を使わずに、VBAの記述で実現したいのですが・・・
どういう記述の仕方があるでしょうか?

投稿日時 - 2009-04-23 21:23:08

QNo.4903601

すぐに回答ほしいです

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

こんな感じでしょうか?

'標準モジュールへ
Sub test()
Dim i, ii
Dim x, y
Dim rng As Range
For Each rng In Range("a1:c3")
i = 0
x = rng.Column
y = rng.Row
For ii = 14 To 154 Step 10
i = i + Cells(y + ii, x).Value
Next ii
rng.Value = i
Next rng
End Sub

投稿日時 - 2009-04-23 23:07:09

お礼

完璧にできました…!
ありがとうございます^^

投稿日時 - 2009-04-24 21:48:26

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

演算式なら↓のコピーですみます。
=SUMPRODUCT((A$15:A$155)*(MOD(ROW(A$15:A$155),10)=(ROW()+4)))
以下のマクロでは上記の式をA1:C3に入れて値だけを残して居ます。
こんな方法もあると言う参考までに……。

Sub Sample()
Application.ScreenUpdating = False
'A1に演算式を代入
Range("A1").FormulaR1C1 = "=SUMPRODUCT((R15C:R155C)*(MOD(ROW(R15C:R155C),10)=(ROW()+4)))"
'A1をコピーしてA1:C3に数式貼り付け
Range("A1").Copy
Range("A1:C3").PasteSpecial Paste:=xlPasteFormulas
'A1:C3をコピーして値だけ貼り付け
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues

Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

投稿日時 - 2009-04-24 12:28:45

お礼

参考にさせていただきました^^
ありがとうございます!!

投稿日時 - 2009-04-24 21:49:08

あなたにオススメの質問