- ベストアンサー
エクセル2003です。複数のBookの合計を出す方法を教えて下さい。
エクセル2003です。複数のBookの合計を出す方法を教えて下さい。 「25枚のBook」にある・「D30」の数字の合計を出す方法を教えて下さい。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
複数のブックの対象とするシートを一つの Bookに参照コピーする。 そのうえで串刺し計算でOK。 なんなら、参照対象の Bookのセルを全て一つのブックに参照コピーしますか? これなら ふつーに SUM関数で合計を求められますよ。 参照対象の Bookと編集用の Bookを全て開いて、メニューのファイルから「作業状態の保存」を選べば、 開いている Bookの状態を保存してくれます。最小化しておけば邪魔になる事もないでしょう。 次に編集・参照したいときは、この「作業状態の保存」をしたデータファイルを開けば、 参照対象の Bookと編集用の Bookを同時に開いてくれます。 (ファイルの拡張子は通常保存と異なり xls から xlw になります。)
その他の回答 (5)
- Wendy02
- ベストアンサー率57% (3570/6232)
このまま終わったのでは、こちらが、ミスしただけで、何のためにレスを付けたか分からなくなりますので、一応、回答を付けておきます。マクロで処理するということが気に入らなければ、コメントは不要です。私なら、このようにして集計します。 例えば、ブック名 MyBook01 ~ MyBook25, シート名;Sheet1 '//標準モジュール Sub NoOpenGetData() Dim mPath As String Dim t As Variant, i As Long Dim fn As String Const PREFN As String = "MyBook" '主ファイル名 Const ZEROSPLY As String = "00" '例えば、MyBook01 と、ゼロが付く場合、 Const EXT As String = "xls" '拡張子 Const ShNAME = "Sheet1" 'シート名 Const ADR = "D30" 'アドレス(現在はひとつに過ぎる) 'パス名 mPath = "C:\Documents and Settings\[ID Name]\My Documents\Test1Fold\" On Error Resume Next For i = 0 To 8 If Dir(mPath & PREFN & Format$(i, ZEROSPLY) & "." & EXT) <> "" Then t = t + LinkOutSide(ADR, ShNAME, PREFN & Format$(i, ZEROSPLY) & "." & EXT, mPath) End If Next On Error GoTo 0 ActiveCell.Value = t End Sub Private Function LinkOutSide(Rng As String, ShNAME As String, sBkName As String, sPath As String) 'セルアドレス, シート名, ファイル名, パス名 Dim sRng As String Dim i As Long If Dir(sPath, vbDirectory) <> "" Then If Right(sPath, 1) <> "\" Then sPath = sPath & "\" End If Else Exit Function End If If ShNAME = "" Then Exit Function If sBkName <> "" Then sBkName = "[" & sBkName & "]" End If sRng = Application.ConvertFormula(Rng, xlA1, xlR1C1, xlAbsolute) LinkOutSide = Application.ExecuteExcel4Macro("'" & sPath & sBkName & ShNAME & "'!" & sRng) End Function
補足
うわぁ~すごいものですね。 でも・マクロなどの知識がなく・難しそうです。 とりあえずコピーをさせて頂きました。 SHEETが3まであり・これを元に勉強してみます。 色々お時間を割いて頂きありがとうございました。
- Wendy02
- ベストアンサー率57% (3570/6232)
そうでしたか。私たちの読み違えなのですね。複数のBookというよりも、25個のExcelファイルと書けば読み違えなかったのですが……。ファイルを枚と数えるとは思いませんでした。 >25枚のBOOKを広げるのは大変かなぁ~と思い 昔は、串刺しというのは、本来は、そういう機能だったのですが、今は、そういうことを考える人がいないし、辛うじて、統合という機能に痕跡は残っていますが、ブックをまたいだ串刺し機能そのものは直接には残っていません。だから、端的にいうなら、「出来ない」と回答したほうがよいのではないかと思います。 結局のところ、ひとつずつブックを入れるという方法が標準的で、もし、実際に一括で出すという方法実現したければ、マクロ(関数)やVBAの力を借りて、ユーザー定義関数やプロシージャを作るしかないと思っています。過去の回答にもあります。[作業保存]の方法は、私はやったことがありませんが、内容が変われば、やり直しになるのだろうとは思います。「作業保存」の方法でよければ、私は、これ以上は何も言う必要もないと思います。
補足
ありがとうございます。 そうですね・ひとつづつブックを入れる事にします。 色々勉強になりました。
- Wendy02
- ベストアンサー率57% (3570/6232)
串刺し計算って =SUM(Sheet1:Sheet25!D30) シート・タブの左端のシートと右側の目的のシートまでを「:(コロン)」でつないで、!(ビックリマーク)とセル・アドレスを入れればよいのでは?正しい方法か知りませんが、これって、DOS時代からあったものだと思います。私の知っている方法です。
補足
早々のご解答ありがとうございます。 (sheet1:Sheet25!D30)は同じBook内の事ですね。 教えて頂きたいのは・1~25までのBOOKです。 =SUMで1~25までのD30をクリックすれば出来ますが 25枚のBOOKを広げるのは大変かなぁ~と思い 何かよい方法が無いものかと思っています。 宜しくお願い致します。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 複数のBOOKではなく、複数のSheetでの方法になりますが・・・ 串刺し計算という方法があります。 集計用Sheetに、Sheet1~Sheet25の全てのD30セルの合計を表示させる方法です。 集計SheetのD30セルをアクティブにし、 オートSUMのアイコン(Σ)をクリック → Sheet1のD30を選択 → Shiftキーを押しながらSheet25のSheet見出しをクリックします。 そして、もう一度オートSAMのアイコンをクリック! これでSheet1~Sheet25のD30セルの合計が表示されるはずです。 これをオートフィルで列方向・行方向にコピーすると各セルの串刺し計算結果が表示されます。 もし、複数BOOKであれば他の方法を考える必要があると思います。 参考になれば良いのですが、的外れならごめんなさいね。m(__)m
補足
早々のご解答ありがとうございます。 (sheet1:Sheet25!D30)は同じBook内の事ですね。 教えて頂きたいのは・1~25までのBOOKです。 =SUMで1~25までのD30をクリックすれば出来ますが 25枚のBOOKを広げるのは大変かなぁ~と思い 何かよい方法が無いものかと思っています。 宜しくお願い致します。
- Cupper
- ベストアンサー率32% (2123/6444)
串刺し計算 詳しくはググってください。 http://www.google.co.jp/
補足
早々のご解答ありがとうございます。 (sheet1:Sheet25!D30)は同じBook内の事ですね。 教えて頂きたいのは・1~25までのBOOKです。 =SUMで1~25までのD30をクリックすれば出来ますが 25枚のBOOKを広げるのは大変かなぁ~と思い 何かよい方法が無いものかと思っています。 宜しくお願い致します。
補足
参照コピーの方法が判りませんでしたが・編集用のセルに「=各bookのD30をクリック」し =[Book1.xls]Sheet1!$D$30・=[Book2.xls]Sheet1!$D$30・としてみました。 これで・SUM関数で合計を求める事ができました。 ありがとうございました。 正しい・参照コピーの方法を教えて頂けますか(?) ネットで調べてみたのですが・難解でした。 「作業状態の保存」を始めて知りました。とても役立ちました。 ありがとうございます。 宜しくお願い致します。