• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:各ブックの集計値を自動的に他のブックに総合計として表示させたい。)

各ブックの集計値を総合表示させたい方法とは?

このQ&Aのポイント
  • 各ブックの集計値を他のブックに合計表示させる方法を教えてください。現在1つのファイルの中にある、ブック1・2・3にそれぞれ数値を入力して合計値をブック3の別シートに表示させていますが、同じブックのシート間の集計ではないため、毎回数値が変わってしまいます。
  • エクセルのフォルダを移動させると集計値が変わってしまいます。いつ見ても正しい集計値を表示させる方法を教えてください。
  • VBAを使用して集計値を表示させる方法を試しましたが、うまくいきませんでした。初心者でもわかる方法を教えてください。

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.4

またまた登場、onlyromです。 最初の質問と追加の質問は内容が違ってますよね??(^^;;; 追加の質問が本物ですね? >更に追加して・・・すみません(^^;) >(1)ブック1、ブック2、ブック3が同じフォルダーにある >(2)ブック1のシートAのD81~K81に合計 >   ブック2のシートBのD81~K81に合計 >   ブック3のシートCのD90~K90に合計 >(3)ブック3のシートCのD96~K90に(2)のブック1~3の合計を総合計したものを表示させることはできますか? > シートCのD96~K90 は D96~K96 のタイプミスですね。  【最重要確認】 ブック3がThisWorkbookであり、 各シートで計算済みの合計範囲をブック3のシートCに合計して転記するんですね? ということで、サンプル。 '------------------------------------------------- Sub Test() Dim WB As Workbook Dim BookName As String Dim SheetName As String Dim Clm As Integer Dim Gokei(1 To 8) As Double Application.ScreenUpdating = False BookName = Dir(ThisWorkbook.Path & "\*.xls", vbNormal) Do While BookName <> ""  If BookName = ThisWorkbook.Name Then    Set WB = ThisWorkbook  Else    Set WB = Workbooks.Open(ThisWorkbook.Path & "\" & BookName)  End If  Select Case BookName   Case "ブック1.xls"     SheetName = "シートA"     TargetRow = 81   Case "ブック2.xls"     SheetName = "シートB"     TargetRow = 81   Case Else     SheetName = "シートC"     TargetRow = 90  End Select '●合計計算   For Clm = 4 To 11     Gokei(Clm - 3) = Gokei(Clm - 3) + WB.Sheets(SheetName).Cells(TargetRow, Clm).Value   Next Clm  If BookName <> ThisWorkbook.Name Then    WB.Close  End If  BookName = Dir Loop '●合計計算結果を転記  ThisWorkbook.Sheets("シートC").Range("D96:K96").Value = Gokei()  Application.ScreenUpdating = True End Sub '------------------------------------------ (注意点) フォルダーの中には、ブック1,2,3以外はないものとしています。 他のブックがある場合はチェックコードを追加しなければいけません。 なお、各ブックのシート名や合計範囲が違うのでちょと面倒そうですが、 最初の質問のようにそれらが同じだとより簡単なコードになります。

nicnic7145
質問者

お礼

すみません(^_^;)その通りです。 時間を掛けて試みましたが、やはり出来ませんでした。 実行時エラー9 インデックスが有効範囲にありません。 やコンパイルエラー?とか出て・・・ ちょっと難しすぎたようです。(@_@;) 有難うございました。

その他の回答 (3)

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

再度の登場、onlyromです。 お気づきとは思いますが、回答2にちょこっとミスあり。 >(2)ブック3のSheet1のA~H列の最終行【に】 最後の【に】は間違いで次のようになります。 (2)ブック3のSheet1のA~H列の最終行【の次の行から】 以上。  

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

>同じブックのシート間の集計ではないため、毎回数値が変わってしまい、その都度計算式を(=ブック1 D60+ブック2 d80+・・・など)を入れなおしています 同じブックのシート間の集計でないため毎回数値が変る、という意味が分かりません。 要するに次のようなことですか?(提示のコードも考慮) (1)ブック1、ブック2、ブック3が同じフォルダーにある (2)ブック3のSheet1のA~H列の最終行に    ブック1、ブック2のD90~K90の値を転記する (3)転記されるのは常に、D90~K90の固定範囲である で、あれば提示のコードにはミスがあります。   > .Offset(1, 0).Value = wb.Worksheets("物件").Range("d90:k90").Value これでは、D90の値しか転記されません。以下のように訂正   .Offset(1, 0).Resize(1, 8).Value = wb.Worksheets("物件").Range("D90:K90").Value 再度いいますが、実際の処理の流れ(どこのセルをどのように等)をより具体的に提示したほうがいいでしょう。  

nicnic7145
質問者

お礼

ありがとうございます。(#^.^#) 説明ベタで・・・ まさにその通りです!D90の値だけが表示されていて・・・ 範囲指定をどこでどういれるのか?判らず困っていました。 とても判り易かったです。

nicnic7145
質問者

補足

更に追加して・・・すみません(^^;) (1)ブック1、ブック2、ブック3が同じフォルダーにある (2)ブック1のシートAのD81~K81に合計    ブック2のシートBのD81~K81に合計    ブック3のシートCのD90~K90に合計 (3)ブック3のシートCのD96~K90に(2)のブック1~3の合計を総合計したものを表示させることはできますか? 補足に書いていいのかわかりませんが・・・よろしくお願いします。<(_ _)>

  • tatekenta
  • ベストアンサー率40% (14/35)
回答No.1

>フォルダを移動させると数値が違ってしまう コードどうこうより、これでは特定の記憶領域を毎回検索して対象のブックの場所を読み込ませなければ無理です。移動するのはやめてください。

nicnic7145
質問者

補足

早速の回答ありがとうございます。 フォルダを移動させなくても、毎回開いて数値を入力すると合計金額がおかしくなるんです。

関連するQ&A

専門家に質問してみよう