- ベストアンサー
VBA エクセル 合計
皆様、こんにちは。 それぞれの値が入っている会計シート(シートの形式は同じ)を一つの合計シートに合計しようとしていますが、うまくいきません。具体的に、数値の合計ができません。 例えば、ある項目に対して、シートAに100が入力され、シートBには230が入力されているとすれば、合計シートに100+230=330を入力したいです。なお、全ての会計シートは"Form"というエクセルシートにあり、その数をユーザが決めますので、検索しなければいけません。そして、合計シートは"Result"にあります。 以下のように書いてみましたが、間違っているようです。 Worksheets("Result").Activate Dim SR As Integer Dim SC As Integer 'SR is start row 'SC is start column SR = 6 SC = 2 Worksheets("Form").Activate Dim i As Integer i = 68 Do While 1 = 1 If Selection.Cells(i, 4).Value = "" Then Exit Do End If i = i + 49 Loop Sum = 0 Sum = Sum + Selection.Cells(i, 4) Worksheets("Result").Activate Cells(SR + 5, SC + 2) = Sum 詳しい方に教えていただければ非常に助かります。 どうぞよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 質問文だけでは良く分かりませんが、コードは分かりにくいです。なるべく文章で詳しく書いていただいたほうがよいです。 '------------------------------------------- Sub Test2() Dim nR As Long Dim nC As Long Dim i As Long Dim dSum As Double nR = 6 'nR is start row number nC = 2 'nC is start column number 'the Valuable of SR is out of inexplicit rules. nR = nR +5 nC = nC +2 i = 68 With Worksheets("Form") Do If .Cells(i, 4).Value <> "" Then dSum = .Cells(i, 4).Value Else Exit Do End If i = i + 49 Loop End With Worksheets("Result").Cells(nR, nC).Value = dSum End Sub Sum は、関数名ですから、出来れば、d =Double のdSum と変えたように良いと思います。
その他の回答 (1)
- mt2008
- ベストアンサー率52% (885/1701)
やりたい事が具体的になっていないので、思い違いをしているかも知れませんが、要するにこういうことでしょうか? 「Form」シートのD68から49行毎(D68、D117、D166……)のセルを見て行き、空白が現れるまでの値の合計を「Result」シートD11に表示したい。 で、あれば以下の様になります、提示されたソースをなるべくそのまま使用しています。元のソースとの違いを見てください。 Sub test() Dim SR As Integer Dim SC As Integer 'SR is start row 'SC is start column SR = 6 SC = 2 Worksheets("Form").Activate Dim i As Integer i = 68 Sum = 0 Do While 1 = 1 If Cells(i, 4).Value = "" Then Exit Do End If Sum = Sum + Selection.Cells(i, 4) i = i + 49 Loop Worksheets("Result").Activate Cells(SR + 5, SC + 2) = Sum End Sub また、Fromシート中のセル範囲のことを「会計シート」と呼んでいるようですが、Excelのシートと紛らわしく混乱の元です。
お礼
mt2008様、Wendy02様、ありがとうございました。 お蔭様で、コードにあった問題点を見つける事ができ、今はちゃんと動いています。 本当にありがとうございました。