複数ファイルを取り込んでデータを集計するマクロの作り方

このQ&Aのポイント
  • マクロを使って複数ファイルからデータを取り込み、作業中のブックに新しいシートとして追加する方法を教えてください。
  • シートの数が異なる場合でも追加できるようにする方法についても教えてください。
  • 追加されたシートのデータを集計する方法も教えてください。
回答を見る
  • ベストアンサー

複数ファイルを指定して取り込み、そのデータを集計してくれるマクロの作り

複数ファイルを指定して取り込み、そのデータを集計してくれるマクロの作り方を教えてください! 初めての投稿なので、質問が分かりづらいかもしれませんが、ご容赦ください(>_<) その際は指摘してくだされば書き足します! マクロ初心者です。 今回、以下のような条件を可能にしてくれるマクロを作りたいです。 ・他ファイルから取り込んだシートを、作業中のブックに新しいシートとして追加する  (取り込む内容は数値が違うだけで、同じフォーマットのデータです) ・取り込むシートの数は場合によって異なるので、何枚でも追加できるようにしたい ・出来ればその追加したシートにそれぞれ名前をつけたい(データA,データBなど) ・追加されたシートのデータを最後に集計する  (例えば・・・追加されたデータAとデータBのセルA1を足した値を集計シートのA1セルに入れる) 雛形の枠があって、その中に別ファイルから取り込んだデータをコピーして、その枠の中に入れることはできたのですが、新しくシートをどんどん追加していくのができませんでした。 どうか、よろしくお願いしますm(__)m

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

Sub macro1()  Dim fs As Variant  Dim s As Variant  Dim w As Workbook  fs = Application.GetOpenFilename(Title:="select xls(s)", MultiSelect:=True)  If Not IsArray(fs) Then Exit Sub  For Each s In fs   Set w = Workbooks.Open(Filename:=s)   w.Worksheets(1).Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)   ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Name = Application.Substitute(w.Name, ".xls", "")   w.Close savechanges:=False  Next  Worksheets(1).Range("A1").Formula = "=SUM(" & Worksheets(2).Name & ":" & Worksheets(Worksheets.Count).Name & "!A1)" End Sub >複数ファイルを指定して 複数のファイルとは,具体的にどこにどんな風にあるのをどんな具合に指定したいのか,ヤリタイ事が書かれていません。 「マクロを載せたブックを同じフォルダにあるxlsファイルを拾い上げたい」 「実はフォルダの場所を指定して,そこにあるxlsファイルを拾いたい」 「実はエクセルブックじゃなくCSVファイルからデータを取りたかった」 etc,etc >取り込んだシートを 開いたブックのどのシートを取り込みたいのか,ヤリタイ事が不明です。 >取り込むシートの数は場合によって異なるので、何枚でも追加できるようにしたい 1冊のブックの複数枚のシートを指定したいという意味なのか,複数のブックの1枚ずつの指定をしたいという意味なのか,具体的な動きの流れが説明されていないのでどんな意味にもとれる >それぞれ名前をつけたい それぞれ具体的にどこから名前をとってきたいのか,何をしたいのか説明されていない 以上のような説明不足部分を改めて決めながらマクロを書いていくと,自然と形になっていくと思います。 >作り方を教えてください 88%のご相談者さんは作り方を聞くよりも,結局丸投げで誰かに書いて貰ったマクロをコピーさせてもらう方に飛びつきます。

ka125ni
質問者

お礼

補足の箇所に書き忘れてしまったので、こちらに追記させていただきます。 お礼の蘭にもかかわらず、申し訳ありません。 指摘の通り、もう一度仕様を具体的に書き直します。 ●同じ雛型をコピーしたファイル同士の集計になります ●1つを集計用のファイルとして、そのファイルにマクロを作りたい ●取り込むファイルは  フォルダの場所を指定して、そこにあるxlsファイルを拾いたい ●ファイルを1つを取り込んだら、続けてまた取り込むか確認してほしい  ⇒yesならば、もう一度フォルダの場所を指定する  ⇒noならば、ファイルの取り込みは終了  (面倒なら繰り返し手動で取り込みだけを行ってもOK) ●取り込むブックのシートは1枚で、そのシート名は全て同じ(仮に"実績")  しかし集計用のファイルにも同じ名前のシートがあるので  取り込んだファイルのシートと区別できるようにしたい("実績A"や、"実績B"など)  取り込んだファイル名でもOKです ●"実績A"と"実績B"(追加されたシート)をそれぞれセルごとに集計(加算)  した値を、集計用ブックの"実績"シートに入れたい ●ファイル取り込みマクロと集計マクロは分けた方が良い なんだか自分で書いてて、そんなこと出来るんだろうかという気になってきました…

ka125ni
質問者

補足

回答&指摘ありがとうございます! 確かに、作り方を教えていただくより、作ってもらった方がすごく助かります(>□<;) なので質問に追記しました。 ちなみに、keithinさんが作ってくださったマクロを実行させてみたところ、 取り込んだブックの名前がシート名になっていて感動しました。 これだと分かりやすいですね^^ 不明確な質問なのに作ってくださってありがとうございました!

その他の回答 (2)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

シートをいくつ取り込むかわからないから集計の式も毎回変わってしまうというようなことで悩んでいるなら、いくつあっても集計はこのセルだ、ということを考えてみて下さい。 例えば、集計シート1番左、雛型シートは2番目、追加あれば右に増やして行く。雛型取り込み時と集計セルの関係は終わるまで固定です。 A+B=集計 A+B+C=集計 でなく 取り込む時に集計 集計=集計+A 集計=集計+B 集計=集計+C の考えです。

ka125ni
質問者

お礼

ありがとうございます。 lavvさんの回答をヒントに、なんとかファイル取り込み→集計まで完成することができました。 今回色々調べながら一人で作ることができたので、満足です。 しかし使い勝手の面でもう少し改善したい点があるのですが、こちらも不明点があるので、新しく質問を投稿してヒントを得たいと思います。 回答ホントにありがとうございました!

  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

今の状態からだと取り込むのはそのまま雛型固定でよい。 雛型に取り込んだ直後にシートコピーしシート名もそこで変更します。次のデータも同じく雛型に取り込んで、変更、これの繰り返しでしょう。 集計は取り込みしながらやるか後で一気にやるか、どちらでもできる話です。 ここの何がわかりませんか?他シートの参照? プログラム設計する力を付けるようにがんばりましょう。答えを貰って実行だけでは上達遅くなります。

ka125ni
質問者

お礼

お礼が前後してしまい、また、遅くなって申し訳ありません。 つたない質問にも関わらず、回答ありがとうございました!

ka125ni
質問者

補足

>雛型に取り込んだ直後にシートコピーしシート名もそこで変更します。次のデータも同じく雛型に取り込んで、変更、これの繰り返しでしょう。 はい、その通りです! >集計は取り込みしながらやるか後で一気にやるか、どちらでもできる話です。 ここの何がわかりませんか?他シートの参照? 追加したシート数(取り込むファイル数)は場合によって異なるので、どうしたら良いのかが分かりません。。 >プログラム設計する力を付けるようにがんばりましょう。答えを貰って実行だけでは上達遅くなります。 仰るとおりです。。 ただ、今回マクロを作るのが初めてなので、今回は作っていただいたコードを読んで勉強するようにしたいと思います。

関連するQ&A

  • EXCEL複数のファイルから指定されたデータを抽

    初めて、マクロ初心者です。 お手数をおかけしますが、助けてください。 条件(1)同じフォルダに 約200個のエクセルファイルがあります。 名前はバラバラです。 管理表を作りたいため、200個をコピーするのも苦痛でしたので、簡単なマクロはありませんか? 条件(2)シートの作りはすべて同じです。それぞれ15個のシートがあります。(お客様のデータを管理しているため。) 同じデータの部分を抽出して、新しいExcelブックに集計したいです。 例えば、 ファイル名0001、シート1のA1のセルで記載されている「文字」もしくは「数字」を新しいブックののA1にコピーして、ファイル名をB1記入したい。 ファイル名0002、シート1のA2のセルで記載されている「文字」もしくは「数字」を新しいブックののA2にコピーして、ファイル名をB2記入したい。 コピーすることは出来るマクロを教えてください。 順番はなく、ファイル名と集計したい「データ」が一致であればOKです。 よろしくお願いします。

  • 複数ファイルからデータを一括コピペするマクロ

    同じブックの中に複数ファイルがあります。ファイルはどれも同一のフォーマットです。 それぞれにシートが3つあるのですがこの3つの中のシートの中の1つのシートのA1からA10と B1からB10のデータを抽出してきて同じブックの中の「まとめ」とあるシートのB1:K1・B2:K2に縦横変換してコピペをしたいです。 ファイルが60くらいあるので繰り返し開いてコピペしての作業が大変なので これを繰り返し下どんどんファイルからコピペしたいです。 1つのファイルから2行まとめにコピペするのですが、マクロで簡単に作業できる方法はないでしょうか? またファイル名をまとめシートA1にも記載したいのですが、可能でしょうか? 記録マクロで作成しようと思ったのですが複数ファイルを次々「まとめ」シートに羅列ができず。。 お力を貸していただきたいです。 よろしくお願い致します。

  • excelの串刺し集計マクロ

    現在各所から送られてくる同一フォーマット書類(ファイル名は別,シート1枚,名称:sheet1)約150ファイルを 集計ブックと同じフォルダに保存して集計ブックの集計シートで串集計するマクロコードを見つけて便利に使用しております。 が、このたび各所から送られてくる同一フォーマット書類がシート二枚(名称:sheet1,sheet2)に渡る事になりまして、 集計ブックの集計シートもそれぞれ用に2枚必要になり、 1枚目の「集計1シート」には「sheet1」だけを集計し、二枚目の「集計2シート」には「sheet2」だけを集計するのはどうすればよいでしょうか? また、今回追加になったシートは計算シートで、計算式が埋められており、「マクロの記録」なんてのでやってはみましたが、 埋められている計算式が反映されるだけで計算結果が反映されませんでした。 合わせてご教授願えると大変助かります。 老人にお知恵をお貸しください。よろしくお願いいたします。

  • エクセル マクロ 複数ファイルを1枚のファイルに

    お世話になります。 私の業務で、多数のエクセルシートを1つのファイルにまとめ、 その上で縦串を通して合算を出す、という作業が頻発しております。 様々な資料で同様の作業が行われますので、簡素化ができればと思い、 質問させていただきます。 [作りたいマクロ] 『元データ』のフォルダに入っているエクセルファイルの 『指定シート(仮にA2セルにシート名を指定できるものとします)』を、 当マクロの入ったエクセルファイルにシートを追加したい。 その際、全てのシート名が同一になってしまうので、 『指定したセル(仮に各シートのB2セル)』をシート名にする。 ●各シートは全て同じフォーマットですので、書式等そのままコピーでOKです ●元のファイル名はバラバラになっていることが多いです

  • [ExcelVBA]ファイル間集計についてです.

    こんにちは. ExcelVBA初心者の者です. book1.xlsm book2.xlsm book3.xlsmのように三つのマクロファイルが共有フォルダ内に存在するとします. 各マクロファイルの中身は同じで,Sheet1のA列に文字が入っており,B列C列に数字が入っています. 同じく,Sheet2にもA列に文字が入っており,B列C列に数字が入っています. book1,book2,book3各マクロファイルに誰かが毎日入力を行うのですが,Sheet1はAさんが入力を行い,Sheet2はBさんが入力を行うように決まっています.(Sheet1はAさんが入力担当Sheet2はBさんが入力担当) このとき,book4.xlsmというマクロファイルを別に用意し,このマクロファイルのユーザーフォーム1のCommandBotton1を押すだけで,各ファイル(book1,book2,book3)の値をSheet毎に集計(値をbook4に持ってくる)したいのです. 集計を行う際に,2回目以降にボタンを押した際には,前回集計された続きから集計をしたいで す. しかし,マクロは初心者のため,どなたかご教授頂けると助かります.よろしくお願いします.

  • 複数のファイルを集計する方法

    アンケートの集計をしたいと思っています。アンケート結果はエクセルにて同一のフォーマットにて入力されており、それぞれ任意の名称で保存され一箇所のフォルダに置かれています。 集計ファイル上へデータが入力されているセルを選択し(フォーマットは全てのファイル同一ですが、連続データではなく、a1,c3等バラバラです。)自動でデータを抽出集計出来るようにしたいのですが上手くいきません。(ループ処理で引っかかっていると思います)スタイルとしてはA1から横方向にタイトルで下方向にデータが記載されているイメージです。 過去ログでは同一ファイルでシートの集計は見つかりましたが別個ファイルの集計が見つからなかったのでお伺いしようと思いました。ちなみに私のエクセル力は関数が一通り使える程度です。よろしくご教授お願いします。

  • エクセル フォルダ内の.xlsファイルの集計

    エクセルで、複数の.xlsファイルの特定セルを集計するマクロを組みたいのですが、VBA勉強しはじめでうまくいかず、皆様の知識をお借りできればありがたいと思い質問させていただきます。 作業としては あるフォルダに複数の.xlsファイル(それぞれのファイルは同一形式で、sheet1およびsheet2は作業用シート。sheet3以降がデータの入ったシートとする)を置いておき、それぞれのデータ入りシート(シート数はファイルにより異なる)の特定セルを集計したものを、新たなブックに書き込む という形です。 その際に、各シートの特定セルの内容により出力するセルを変えたいと思っています。 実際には、 AAA.xlsというファイルの3枚目以降のシートで、L2セルに「B」と記述があれば別ブックのB3セルに、「C」と記載されていれば別ブックのC3セルに、それぞれD4セルの数値を集計する。 次にBBB.xlsというファイルに関しても同様に集計し、その結果はB4セルとC4セルに出力する これを当該フォルダに入っているファイル全てについて行う ※L2セルには「B」「C」以外の文字は入りません。 こういった作業ができればと思っています。 お時間のある方がおられましたら、ご教授いただけますでしょうか。 参考になるサイトなどがありましたら、アドレスだけでも御教えいただけると幸いです。 質問の仕方が悪いようでしたら、ご指摘いただければ再度説明させていただきます。拙劣な説明ですがどうかよろしくお願いします。

  • Excel マクロ データ集計

    Excel マクロ データ集計 Sheet1にある情報を集計して、集計結果をSheet2に貼り付けるマクロを考えています。 「Sheet1」のA列、B列、C列が合致した場合に同じ商品とみなします。 C列で「新鮮」とついている場合には、商品名で一致させて、Sheet2の 同じ商品名のところに記載します。 「Sheet2」に貼り付ける際、「Sheet1」のA列は不要です。 どのようなマクロを作成すればよろしいでしょうか。 画像を添付します。 「Sheet2」は完成形です。

  • 複数のエクセルファイルを1つのエクセルファイルのシートにコピーをマクロ

    複数のエクセルファイルを1つのエクセルファイルのシートにコピーをマクロで行いたい。 マイドキュメントのデーターというフォルダ内に エクセルファイルA(シート名みかん) エクセルファイルB(シート名りんご) エクセルファイルC(シート名バナナ) エクセルファイルD(シート名ぶどう) エクセルファイルE(シート名いちご) があります。 雛形は同じです。すべてA列~F列までデータが入っています。 行数はファイルによって違います。 また毎日自動で上書き更新され、毎日行数が変わります。 エクセルファイルZがあります。シートが7個あります。 ・変換 ・集計 ・みかん ・りんご ・バナナ ・ぶどう ・いちご エクセルファイルZを開きます。(各シートには昨日のデータが貼り付けてあります。) マイドキュメントのデーターフォルダも開いておきます。 エクセルファイルZにおいて「マクロの記録」を起動。 エクセルファイルZの 【みかん】~【いちご】までの5シートを全データDELETEします。 開いてあるフォルダ「データー」の中からエクセルファイルAを開きます。 (タスクバーにいます) ファイルAのシート【みかん】の全データ選択して エクセルファイルZの【みかん】というシートのA1セルにカーソルを あわせて貼り付けします。 開いてあるフォルダ「データー」の中からエクセルファイルBを開きます。 (タスクバーにいます) ファイルBのシート【りんご】の全データ選択して エクセルファイルZの【りんご】というシートのA1セルにカーソルを あわせて貼り付けします。 これと同じ操作を【バナナ】【ぶどう】【いちご】も行います。 エクセルファイルZにおいて「マクロの記録」を終了させます。 マクロができあがりました。 ファイルZを上書き保存して終了。再立ち上げで記録したマクロを実行。 エラーにはなりませんが、ファイルZの5種類各シートに ファイルA~Eのデータが貼りつきません。 何か無理な事をしているのでしょうか? もしかしてシート名が同じだと駄目?とためしにファイルZのシート名【みかん】~【いちご】を 【みかんZ】~【いちごZ】に変更してマクロを再記録しても 駄目でした。 よろしくお願いします。

  • EXCELで複数ファイルのセル抽出マクロ

    EXCELで複数ファイルのセル抽出マクロ いつもお世話になっております。 首題の件ですが、複数のEXCELファイル約100個があるフォルダに入っています。 フォーマットは統一されていますが、記載してあることは別です。 特定のセルの内容を抽出し、別のEXCELブックに保存したいと考えております。 例) パス-D:\集計\ ファイル名-統一されていません シート名-アンケート(統一している) 抽出したいセル-A1:A10とC10:C20(結合されているセルもあります) できれば保存するEXCELブックに抽出したA1の全集計結果をA1に、 抽出したC10の全集計結果をC10に保存したいのです。(1ファイルずつ改行を入れて) マクロを検索して調べてみたのですが、自分の環境に合わせてみるとうまく動かなく、 (単に私の勉強不足ですが・・・)お手上げ状態です。 皆様、宜しくお願いします。 また、厚かましく下記にも別件で質問をしております。 お力添え頂ければ幸いです。 http://okwave.jp/qa/q6170791.html

専門家に質問してみよう