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

解決済みの質問

エクセルVBA 他シートのSUM関数結果の反映

エクセルVBA初心者です。

以下のVBAの記述をお教えいただきたく思います。
かなり検索を行ったのですが、しっくりと理解できませんでした・・。

シート1とシート2があり、シート2における足し算結果をシート1に反映させる、というだけのことなのですが・・

例えば、シート1のA1セルに「=SUM(シート2!A1:A*)」の結果をマクロで反映させたいのです。
シート2におけるsum関数は、データ数が変動するので仮にA1から「A*」と仮にしていますが、
このことを踏まえた場合のVBAの記述はどのようになるのでしょうか。

お教え下さい、よろしくお願い致します。

投稿日時 - 2011-09-28 11:03:34

QNo.7039185

すぐに回答ほしいです

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

>しっくりと理解できませんでした・・。
 ⇒どの辺がしっくりこないかを質問した方が今後の為と思えますが如何でしょうか。

一例です。
例1.Range("A1").Formula = "=Sum(Sheet2!A:A)" ’SUM関数の代入
例2.Range("A1").Value = Application.Sum(Sheets(2).Range("A:A")) 'SUM関数で処理
例3.For~Nextでループ加算
With Sheets("sheet2")
For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
wk = wk + .Cells(i, "A")
Next
End With
Range("A1").Value = wk

投稿日時 - 2011-09-28 12:42:02

お礼

解決しました!

例1に近い記述で自分も書いていたのですが、エラーが出まくってしまい、検索を行っても何が悪いのか分かりませんでした。

しかし、いただいた答えと見比べてみますと、カッコをつけなくていいところでつけていたり、といった基本的な部分での理解ができていなかったことが原因でした。

ありがとうございました。

投稿日時 - 2011-09-28 14:07:39

ANo.1

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

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

回答(2)

ANo.2

解決方法のその1:
VBAにする必要もありません。最初からシート1に
=SUM(Sheet2!A:A)
と書いておくだけのことです。

「データ数が不明」だと何が困るのか状況説明が書いてないので具体的な提案が出来ませんが,仮にたとえばシート2の最終行には「総計」があるので合計に含みたくないなら
=SUM(Sheet2!A:A)/2
のようにしておくこともできます。


解決方法のその2:
理由は聞きませんがどうしてもマクロが使いたいなら
sub macro1()
 with worksheets("Sheet1").range("A1")
  .formula = "=SUM(Sheet2!A:A)"
  .value = .value
 end with
end sub

などのような書きぶりで値化する手がお奨めです


解決方法その3:
最後の行の調べ方の定石は
sub macro2()
 dim r as long
 r = worksheets("Sheet2").range("A65536").end(xlup).row
 worksheets("Sheet1").range("A1").formula = "=SUM(Sheet2!A1:A" & r & ")"
end sub
といった具合なので,憶えておいてください。

投稿日時 - 2011-09-28 13:02:16

お礼

ご回答いただきありがとうございました。

「SUM(Sheet2!A:A)」これで解決だったのですが、変に考え込んでしまい、基本が出来ていないのにend(xlup).rowを組み込んでいたりしてドツボにはまっていました。

英語や少々難しい漢字のように「読むだけなら大まかな意味が分かるが、いざ書こうと思ったらかけない」状態でした。

投稿日時 - 2011-09-28 14:14:14

あなたにオススメの質問