• ベストアンサー

【VBA】シートを跨いで合計する方法

ご教示宜しくお願いします。 現在のシートから最後のシートまでの合計値が入っているセルを合計し、 メッセージボックスにて表示させたいです。メッセージボックスとする理由は、シートを増やしたくない為です。 状況は下記です。 各シートのA列最終行には予め「合計」の文言が有り、そのE列に予め「合計値」が計算されています。 宜しくお願い致します。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1735/2605)
回答No.2

このようなことでしょうか。 Sub Test() Dim i As Long Dim mMsg As String: mMsg = "" Dim mSum As Long For i = ActiveSheet.Index To Sheets.Count mMsg = mMsg & Sheets(i).Name & " : " & Sheets(i).Cells(Rows.Count, "A").End(xlUp).Offset(0, 4).Value & vbCrLf mSum = mSum + Sheets(i).Cells(Rows.Count, "A").End(xlUp).Offset(0, 4).Value Next MsgBox mMsg & "総計 : " & mSum, vbInformation End Sub

0611birth
質問者

お礼

kkkkkm 様 重ねがさね有難うございます。 説明不足だったにも関わらず、結果意図通りでした。 回答頂いたコードについては、理解する様努めます。

その他の回答 (1)

  • kuma56
  • ベストアンサー率31% (1423/4527)
回答No.1

んん?? よく判らない点がいくつか・・・ >各シートのA列最終行には予め「合計」の文言が有り、そのE列に予め「合計値」が計算されています。 ”A列最終行”ってのは、シート最下端の1048576行って事かな? それとも、そのシートに作ってある表の最終行って事かな?? 質問文から質問者のスキルを推測すると、VBAの構文をすべて作れっていう丸投げに感じても来るが、判らない点はどこなのだろう?? >現在のシートから最後のシートまでの合計値が入っているセルを合計し、 これだけならVBAを使わなくても、どこかの任意のセルに計算式を入れればできるのではないでしょうかな?? そのセルの値をMSGBOXに表示させれば良いように思うが、それではダメなんかな?? 自身で考えた方法ややってみてうまくいかなかった点などを明確にしたほうがより良いアドバイスが貰いやすいと思いますよん・・・・

0611birth
質問者

お礼

kuma56 様 ご意見等有難うございます。 当方素人級にて、教えて頂いたコードを読み解いて勉強し、 かつ仕事に当てはめる方法で理解を勧めていきたいと考えています。 補足に”A列最終行”の意図と、"VBAで各シートの合計をしたい"理由をコメントします。 もし宜しければご教示願います。

0611birth
質問者

補足

A列最終行の意味・・・A列の最終行には「合計」の文言が有りますが、データの件数が異なる為、各シートでの「A最終行」はまちまちになります。例)シート2は100行目、シート3は140行目等。 VBAで合計したい理由・・・シート数が20シート位有り、各シートの合計値のセルを「+」で足していくのは時間が掛かるし間違いの元となります。最終行は各シート異なる為、範囲広めのVLOOKUPでA列「合計」の文言をキーとし「合計値」の列を返すのも、20シート分関数を「+」でつないでいくのは非効率となります。

関連するQ&A

専門家に質問してみよう