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

解決済みの質問

EXCELで複数のブックの特定のセルの合計を求める方法は?

EXCELの関数,数式で質問です。
<例題>異なる様式の表(数値)で構成された3つのシート(a,b,c)をもつブックが,同じ型式で50個(50ブック)ある。各ブックの特定のシートの特定の数値セル(1~50ブックのbシートのA5セル)の合計を求める数式を示しなさい。
※この回答の1つは「=1ブックのbのA5+2ブックのbのA5+3ブックのbのA5+4ブックのbのA5+…+50ブックのbのA5」だと思うのです。しかし,いちいち各ブックの対象シート(b)の対象セル(A5)をクリックして数式を完成させるのは大変です。さらに,求めたい特定の数値セルが「bのA5」だけでなく「aのB3」や「cのR6」など,3つ,4つと増えるとすると,同様の数式を入力するのに大変な労力を要します。何か簡単な集計方法(関数,数式)はあるでしょうか。ややこしい質問ですみません。どうぞ御教示ください。

投稿日時 - 2006-11-11 22:51:21

QNo.2533091

困ってます

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

#1です。
VBAは関数ではありません。言って見ればプログラムです。

下記はサンプルです。
実行する場合はテスト環境で行って下さい。

1)集計元ブック(1ブック.xls や 2ブック.xls 等)を適当なフォルダにまとめて置きます。(例 C:\Test)
2)新規ブックを開き、メニューのツール-マクロ-VisualBasicEditorでVBE画面を起動します。
3)VBE画面のメニューで挿入-標準モジュールに下記をコピペします。
4)VBE画面を閉じます。
5)上記と同じフォルダに適当な名前で保存します。
6)メニューのツール-マクロで Test を実行します。

これで集計元ブックのシートBのA5にある値を順次転記していきます。

Sub Test()
Dim MyName As String, wb As Workbook

On Error Resume Next
MyName = Dir(ThisWorkbook.Path & "\*.xls", vbNormal)
Do While MyName <> ""
  If UCase(MyName) <> UCase(ThisWorkbook.Name) Then
   Application.ScreenUpdating = False
   Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & MyName)
   ThisWorkbook.Worksheets("Sheet1").Range("A65536").End(xlUp) _
     .Offset(1, 0).Value = wb.Worksheets("b").Range("A5").Value
   wb.Close
  End If
  MyName = Dir
Loop
Application.ScreenUpdating = True

End Sub

投稿日時 - 2006-11-13 12:58:52

お礼

ありがとうございました。
御礼が大変遅くなり,申し訳ありません。
「マクロ」なんですね。
まだ,よく理解できていませんが,今回の案件意外にも幅広く活かせそうです。修得に励みます。
今後も,よろしくお願いします。

投稿日時 - 2006-11-26 22:31:56

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

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

回答(2)

ANo.1

同一ブック内のシート集計なら =SUM(Sheet1:Sheet4!A1) のように最初と最後を出来ますが、他ブック間はわかりません。

それより50ブックもリンクして不安定になりませんか?
私ならリンクでなくVBAで集計するかな。

投稿日時 - 2006-11-12 11:04:06

補足

ありがとうございます。そうなんです。同一ブック内での方法は知っていたのですが,<例題>のような場合の簡単な集計方法が分かりません。
50ブックのリンクですが,今のところ大丈夫です。というのも,<例題>でいうと,各ブックのbのA5を,別の集計用一覧表にひとつずつ呼び出して,それを集計するという方法で答えを求めています。(別のブックの集計用シートのA1セルに「=[1ブック.xls]b!$A$5」,A2セルに「=[2ブック.xls]b!$A$5」,A3セルに「=3ブック.xls]b!$A$5」,A4セルに=「4ブック.xls]b!&A&5」,……と入力(「=」の後に対象セルをそれぞれクリックするだけ)し,あとはA1~A*をオートサムで求めています。
これって,すごく面倒で…
「VBA」ってどのような関数ですか?

投稿日時 - 2006-11-12 23:53:48

あなたにオススメの質問