• 締切済み

VBA Indirectで他ブック間の集計は可能?

★ブックBの売上1月、売上2月など「売上」を含むシート("売上*")の、ソート後のSUBTOTALの数値を、  別ブックAで拾い上げ一つのセルで合算表示することは可能ですか? ブックB内であればワークシート関数Indirectで出来ましたが、別ブックとなるとマクロ作成時にIndirect関数を挿入することは不可能ですか。 ★を実行したい場合に他に方法があれば併せて教えて頂けるとありがたいです。

みんなの回答

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.2

出来れば、新規追加の質問は新たに投稿し直してください。 時間経過により回答が締め切られているため、 この文面はサポートにより追加して頂いております。 >更に欲を出したと言うのは、『同じモジュール内に、同じく >「ブックBの"仕入*"の特定セルからの値取得後、 >Sheet1のB1にcnt値を書き出す」というコードについてです。 追加で書出す「値」とは、売上*と同様に特定セル(合計値)を 合計した値という意味と捉えて回答致します。 「売上*」シートのA10セルを集計してcnt(0)へ合計し、 「仕入*」シートのB10セルを集計してcnt(1)へ合計します。 Sheet1のセルA1,B1に合計値「cnt(0)及びcnt(1)」を書き出します。 以下のコードで差替えて、ご利用ください。 ■VBAコード Sub 別ブックの合計() '型宣言 Dim fpath As String Dim tbook As Workbook Dim i As Integer Dim cnt(1) As Double 'ファイルを指定 fpath = Application.GetOpenFilename("全てのファイル(*.*),*.*") '指定したファイルを開く Set tbook = Workbooks.Open(fpath) 'シートの数だけ繰り返し For i = 1 To tbook.Sheets.Count   '条件に一致したシート名を対象に処理   If tbook.Sheets(i).Name Like "売上*" Then     '対象のシートのセルA10より値を取得し、変数cnt(0)に加算     cnt(0) = cnt(0) + tbook.Sheets(i).Range("A10").Value   End If   If tbook.Sheets(i).Name Like "仕入*" Then     '対象のシートのセルB10より値を取得し、変数cnt(1)に加算     cnt(1) = cnt(1) + tbook.Sheets(i).Range("B10").Value   End If Next i 'ブックを閉じる tbook.Close 'Sheet1のセルA1,B1に合計値を書き出し ThisWorkbook.Sheets("Sheet1").Range("A1").Value = cnt(0) ThisWorkbook.Sheets("Sheet1").Range("B1").Value = cnt(1) End Sub

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.1

VBAで別ブックの条件に一致するシートのセル「A10」の値を取得・合計し VBAコードを記述しているブックの「Sheet1」セル「A1」に結果を表示するコードです。 (1)新規ブックを作成し、以下のコードを標準モジュールに貼り付け (2)「別ブックの合計」を実行 (3)ファイルを開くダイアログが表示されるので、対象のブックを開く ■VBAコード Sub 別ブックの合計() '型宣言 Dim fpath As String Dim tbook As Workbook Dim i As Integer Dim cnt As Double 'ファイルを指定 fpath = Application.GetOpenFilename("全てのファイル(*.*),*.*") '指定したファイルを開く Set tbook = Workbooks.Open(fpath) 'シートの数だけ繰り返し For i = 1 To tbook.Sheets.Count   '条件に一致したシート名を対象に処理   If tbook.Sheets(i).Name Like "売上*" Then     '対象のシートのセルA10より値を取得し、変数cntに加算     cnt = cnt + tbook.Sheets(i).Range("A10").Value   End If Next i 'ブックを閉じる tbook.Close 'Sheet1のセルA1に合計値を書き出し ThisWorkbook.Sheets("Sheet1").Range("A1").Value = cnt End Sub

upto___you
質問者

お礼

お返事が大変遅くなって申し訳ありません。 教えて頂いたコードをコピペすると、確かにやりたかったことができました!!ありがとうございます。 それで更に欲を出して色々試行錯誤を続けていましたが、どうも行き詰まりになってしまい、図々しいのですがもしよろしければ再度教えて頂けたら幸いだなぁと思っております。。。 教えて頂いたのは「ブックBの"売上*"の特定セルからの値取得後、Sheet1のA1にcnt値を書き出し」でした。 更に欲を出したと言うのは、『同じモジュール内に、同じく「ブックBの"仕入*"の特定セルからの値取得後、Sheet1のB1にcnt値を書き出す」というコードについてです。 最小限のポチッで、Sheet1のA1とB1にcnt値がバーンと入る方法を考えています。 もしももしもよろしければ、、、教えて頂けるとありがたいです。m(__)m

関連するQ&A

  • 別ブックの同一ワークシートの集計

    お世話になります。 早速ですが、Excelでブックが5つ、ワークシートがそれぞれ40あるとします。 これを、別ブックにまとめたいのです。 ワークシートの構成は全て、同じです。 同一ワークシート、同一セルの集計を別のブックにまとめたいです。 伝わりますでしょうか? よろしくお願いします。

  • 複数のbookの集計をしたい

    book「第1地区」‥sheet「1月」「2月」「3月」「合計シート」 book「第2地区」‥sheet「1月」「2月」「3月」「合計シート」 book「第3地区」‥sheet「1月」「2月」「3月」「合計シート」 ※「合計シート」‥1月~3月の合計したもの(単純なSum関数使用) ------------------------------------------------------ 上記、3つのbookの「合計シート」の合計数値を、 新しいbook「3地区集計」にVBAなどを使って飛ばしたい。 現在は、「=(イコール)」を使って、手作業で数値を出しています。 何か、良い方法はございますでしょうか。 ------------------------------------------------------ book「3地区集計」‥sheet「1月」「2月」「3月」「合計シート」

  • Excel 同ブックの他シートを参照するセルを、他ブックのセルにコピー

    こんにちは。Excelの使い方について質問させていただきます。 よろしくお願いします。 Excel2003を使っています。 シート数、シート名がまったく同じブックが2つあります。 AブックのAシートのA1セルを参照しているセルである AブックのBシートのA1セルをコピーします。 BブックのBシートのA1セルにペーストします。 BブックのAシートのA1セルを参照して欲しいのですが、 別ブックであるAブックのAシートのA1セルを参照するように 自動的に変換されてしまいます。 シンプルにそのままコピーすることは不可能でしょうか。 セルのコピーでは無く、中の文字列を選択してコピーしても、 何が起こっているのかよくわかりませんが上手くいきません。 Excel初心者です。マクロはまったく使えません。 親切な方、どうぞよろしくお願いします。

  • ブックA(マクロ含む)をコピーしたブックBを・・

    こんにちは。過去の質問を検索しましたが、見つけられないので失礼します。 Aというブックにa,b,c,dというシートがあります。 これらのシートは全て同じマクロを使っています(違うのはセルに入力されている一部の文字や図のみ)。 シートbだけを別のブックにコピー&保存(ブックB)しました。 するとマクロもブックBに保存されますが 保存されたマクロはブックAのものを参照しますので 手元にブックAが無いと、ブックBのマクロは使えません。 しかし、ブックBをメール等で別の人に送信し ブックAが無い人でも同じようにマクロを使えるようにしたいのですが そのようなことは可能でしょうか。 どなたかご回答お願いします。

  • VBA 違うブックへの自動入力マクロ

    いつもお世話になっております。 年間売り上げの計算をブックを開くと同に時実行したいのですが、 初心者の私には何から手をつけたらよいのかわかりません。 ブックですが、下記のような感じです。 BOOK1                  Sheet1売上          A   B   C      1日付 売上 支出    2 1/1 1000 500 3 2/2 500 800 4 2/2 1500 900     5 1/1 1000 500    6 1/3 2000 1000 7 1/1 500 300 8 9 BOOK2                  Sheet1[ 1月 ]         A   B   C      1日付 売上 支出    2 1/1 3 1/2 4 1/3      5 1/4     6 ブック1には一年間の売上がランダムに入力されたシートがあります。 このブック1から日付が同じものの合計をブック2に入力していきたいと思ってます。 ブック1の日付が1/1の売上の合計は、 ブック2のB2へ入力。支出合計ならC3となります こんな感じで1~31日まで繰り返し計算していくマクロを ブック2を開くと同時に実行させたいとかんがえています。 同じブック内でも良かったのですが、 情報量が増えると処理が重くなりそうなので分けることにしました。 うまく伝えられないのですが、 参考となる記述方法がありましたら、よろしくお願いいたします   

  • エクセル)VBAで他のブックのセル参照

    はじめまして。 エクセルのVBAについて教えてください。 VBAで、 book1のsheet1のセルA1にあるデータを開いていない(アクティブでない)別のbook2のsheet2のセルB1にコピーしたいのですがこんなことってできるのでしょうか? ・・やはり開いていないとダメなんでしょうか? あと、これって"ブック参照"っていうことなんでしょうか?自分がやりたいことが何なのか判らないので上手く調べる事が出来ず難儀しています。 よろしくお願いします。

  • ブック名を変数にしたらアクティブになりません。

    色々と調べたり試したのですが、どうしても判らないので質問させてください。 Excel2002でマクロを組んでいます。 セル上の数値を使って、ブック名を変数に格納しました。 したい事は、「DataBase.xls」のCalendarシートの内容を 「07年6月売上.xls」のとあるシートに値貼り付け です。 格納した変数 Dim Uriage As String Uriage = Worksheets("設定").Range("A4") & "年" & Worksheets("設定").Range("B5") & "月売上.xls " 上記のブックを開き、マクロを記述したブックに戻り、 再度上記のブックをアクティブにしようとすると 「有効範囲にありません」とメッセージが出ます。 デバッグ状態で記述を見てみると 1 Windows("DataBase.xls").Activate (←マクロ記述のブック名) 2 Sheets("Calendar").Select 3 Range("B7:H7").Select 4 Selection.Copy 5 Windows(Uriage).Activate (←変数格納したブック名) 5番でとまっています。 ですが、オンマウスにするとちゃんと「"07年6月売上.xls"」と表示が出ます。 それ以前に、ファイルを開くことは出来てるのに・・・・ いったいどういう事なのか、どうかご教示ください。 宜しくお願いします。

  • 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つと増えるとすると,同様の数式を入力するのに大変な労力を要します。何か簡単な集計方法(関数,数式)はあるでしょうか。ややこしい質問ですみません。どうぞ御教示ください。

  • 集計用のVBA

    いつもお世話になります。 今回は、VBAを使った、ブック間での集計について教えてください。 現在、担当者別にExcelブックが15人分あります。(ブック名の定義は"ブック2012(担当者名).xlsx") そのブックには、D3~AH49までデータ(空白セルもあります)が記入されてあり、また月別Sheetが12カ月分存在します。 そして、集計用ブックが存在し、上記のブックと全く同じ配置で構成されています(セル、シート共) やりたいこと ・集計用ブックに、担当者ブックの合計を行いたい。 ・集計用ブックに新たなシートを付加し、そこで年度や担当者名を定義したい。また、そのSheetにコマンドボタンを設置し、そのボタンを押すと自動集計が始まるようにもしたい。  *上記の担当者ブック名の年度が変更されたり、担当者が増減しても、A1セルに2013、B列セルに   担当者を記入していけば、そのブックのみの集計を行ってくれる。 以上が、私のやりたい事で、このVBAを教えていただきたいのです。 皆様、どうかよろしくお願いいたします。

  • 同じフォルダにある50個のブックのそれぞれ50枚のシートの集計

    同じフォルダに50個のブックがあり、それぞれのブックが50枚のシートを持っています。ブック名として人の名前、シート名として地名がつけられています。(つまり、総計で2500の地名がつけられたシートがあります。)シートは全て同じ形式です。集計用ブックを作りこの2500枚のシートの同じセルの集計をしたいのですが、どうすればよろしいでしょうか?つまり、2500枚のシートのE1の合計が集計用ブックのSheet1のE1に入るようにしたいのです。2500枚のシートのセルには数式が入っていて、ほしいのはその計算結果(Value)の合計です。また、2500枚のシートのセルの計算結果が””の場合もあります。難しくなければマクロでも結構ですので、是非教えてください。

専門家に質問してみよう