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

このQ&Aのポイント
  • エクセルで複数の.xlsファイルの特定セルを集計するマクロを作成する方法について教えてください。
  • エクセルのフォルダにある複数の.xlsファイルの特定セルを集計して、新しいブックに書き込む方法を教えてください。
  • エクセルで特定のフォルダにある複数の.xlsファイルの特定セルを集計する方法を教えてください。
回答を見る
  • ベストアンサー

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

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

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

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

集計するんじゃなくて,単純に転記して並べていくだけですね。 つぎのようなごく基本的なマクロを組み合わせて,応用をしていくだけの作業です。 1.ブックを次々調べて巡回するdir関数の使い方 2.見つけたブックを開く方法 3.開いたブックから値を引き出す方法 4.転記先を適切に設定する方法 などの手段について,VBAのヘルプやヘルプに書いてある使用例などを見ながら理解してください。 手順: 集計ブックを用意し,AAA.xlsやBBB.xlsが入れてあるフォルダに一緒に放り込んでおく 集計ブックに次のマクロを用意して実行する sub macro1()  dim myPath as string  dim myFile as string  dim i as long  dim w as workbook  dim n as long  dim s as variant   ’準備  thisworkbook.worksheets(1).range("B:C").clearcontents  thisworkbook.worksheets(1).range("B2:C2") = array("B","C")  mypath = thisworkbook.path & "\"  n = 3 ’そこにあるブックを調べる  myfile = dir(mypath & "*.xls*")  do until myfile = ""   if myfile <> thisworkbook.name then  ’開いて調査する   set w = workbooks.open(filename:=mypath & myfile)   for i = 3 to w.worksheets.count    s = w.worksheets(i).range("L2")    if s="B" or s="C" then     thisworkbook.worksheets(1).cells(n, s) = w.worksheets(i).range("D4").value     n = n + 1    end if   next i   w.close savechanges:=false   end if   myfile = dir()  loop end sub

sousuke04
質問者

お礼

補足と御礼間違えておりました・・・かさねがさね失礼しました。

sousuke04
質問者

補足

早速のお返事ありがとうございます。 私の書き方がよくありませんで、誤解を招いてしまいました。 「B」というのは文字であり、セルの列を表すわけではありませんでした。たとえば「東京」と同じ感じです。(同様に「C」も「大阪」のような文字として考えておりました。) でも、ご教授いただいたコードを参考に変えてそこはクリアできました。 あともう一つ、単純に転記するわけじゃなく集計するマクロを考えております。 ですので、 ・AAA.xlsというファイルの各シートのうち、L2セルが「東京」のシート(複数あるとする)のD4セルの数値を集計して集計ブックのB3セルに出力する。同様に、L2セルが「大阪」であるシートのD4セルの合計値を集計ブックのC3セルに出力する ・BBB.xlsのファイルについても同じように処理し、それぞれB4・C4セルに出力する といった処理を考えておりました。 しかしながら、なんとなく私の今のスキルでは無謀なことに挑戦しているようですので、ひとまず独力でやってみたほうがいい気がしてきました。 上記コードは大変勉強になりました!ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

VBAをはじめて間もないようなのに、こういうブックをまたいだ課題をこなすのは無理があると思う。 ブックーシートーセルのオブジェクトの階層関係などもわかってないのでは。 >あるフォルダに複数の.xlsファイル・・ のブックの名前をとらえるのは、よく出る質問である。 Googleででも「フォルダ ファイル 捕まえる」ででも照会すれば、沢山記事があり(100万?)その中にはコード例が出る記事も在る。 勉強のこと。 ーー 1つのブック名が決ると、そのブックを開くコードを勉強する。 ブックを開かないとシートデータは取れないと心得ること。 ーー またはエクセルブック名が20ぐらい以下の数で、増減しないなら、ブック名を文字列でプログラムの中で指定する方法もある。 シートのセルに対象データ元のブック名を指定する方法もある。 標準の方法を追求・実現するのでなく、コーディングのやさしい方法で、当面凌ぐ手も考えないと実際問題前に進まない。 ー そして望みのブックの、望みのシートの、望みのセルの計数のとらえ方の勉強が必要だが、それは モデル的に1つのデータ元ブックと集計ブック(1つのブック固定)を開いて、データ転記などして、マクロの記録を取ってコードがどうなるか、勉強してみたら。 そのままでは完成しないが、データの取り方などはわかるだろう。 そこぐらいはやった上で質問を改めてやるべきだ。 ーー 似た件の別件だが、1ブックの複数シートのB4セルの値を足しこんで、合計を出すコードなどわかるのか。 ーー >L2セルに「B」と記述があれば別ブックのB3セルに・・ これなど、VBAを少し判っていれば、書くまでも無いこと。IF文を使って、場合をBとCの場合に分けたら仕舞い。 何処が本題で難しいか、判ってないか、在るセルの集計のコードさえも、判らないのかこころもとない。 ーーー VBAについては、丸投げするコーナーではない。もっと簡単なケースからやっていかないと丸投げになるだろう。回答のコードの意味の理解も出来ないだろう。

sousuke04
質問者

お礼

勉強不足で申し訳ございません。やはり大それたことを実現しようとしていたのですね。 総計が、結局50ぐらいのブックになりそうなので(また、状況に寄りブック名を私の側で固定することが出来かねる状況です)、keithinさんのコードを参考に独力で頑張ってみたいと思います。 マクロ記録を取って…というのは確かに試しておりませんでした。至らなさに反省するばかりです。 VBAの本をきっちり読んで勉強していきたいとおもいますので、勘弁してください。 やはりブックをまたぐということで最初からわからないと決めつけてかかっていたのかもしれません。今後質問はせずに自力で頑張ります。

関連するQ&A

  • フォルダ内のxlsをシートごとに別ファイルにしたい。

    現在開いているブックのシートごとにブックにするマクロはあったのですが フォルダ内のブックを一気にばらすことはできませんか? ---元--- ./甲.xls(シートa,シートb,シートc) ./乙.xls(シートa) ./丙.xls(シートa,シートb) ---元--- ---先--- ./甲a.xls(シートa) ./甲b.xls(シートb) ./甲c.xls(シートc) ./乙.xls(シートa) ./丙a.xls(シートa) ./丙b.xls(シートb) ※シート名もしくはseqをつけて分割 ---先--- まとめてPDFを作ろうかとしたら複数シートがうまく行かないので 1ブック1シートの形式にできればと思ってます。 (通常時は複数シートがいいので1ファイルづつ作業は考慮したくない) できましたらお願いいたします。

  • excel vbaでVlookup的な集計したい

    お世話になります。 デスクトップに[集計]というフォルダ作って、その中に[集計.xls]というファイルがあります(画像参照) さらに[個別]というファイルダ内に[実績A.xls]というファイルがあります。 実際には実績B.xls、実績C.xlsと複数ファイルが存在します。 集計.xlsにボタンを作ってクリックすると下記のような動きを実現したいのです。 [個別]フォルダ内の実績A.xlsファイルを開いて[集計.xls]のA列(支店名)、B列(商品番号)と合致したデータを次のように挿入していきたいのです。 集計.xls  実績A.xls C列  ← D列の値 D列  ← E列の値 E列  ← F列の値 F列  ← G列の値 この作業を実績A.xlsファイルの全シートに対して実施したいのです。(マスターというシートは抜かして左から右へ)。全シートREADし終わったら閉じて次の実績B.xlsファイルを開いて、また同じ作業を繰り返し、[集計.xls]もA2のデータから再びREAD、という動きです。 わかりにくい説明で大変恐縮ですが、業務で求められ困っております・・ どなたかご教授いただけますでしょうか。 何卒よろしくお願い致します。 Excel2013 Windows7

  • Excelでの外部ファイル参照

    環境:windowsXPPro、Excel2000 初めまして。 Excelの外部ファイル参照で悩んでいることがあり解決方法を模索中です。 基礎値.xls、集計.xls というBookがネットワーク上のファイルサーバーにあるのですが 集計.xlsに基礎値.xlsの値を参照する式がセルに設定されています。 [=vlookup(a1,'\\server\[基礎値.xls]Sheet1'!$A$1:$B$50,2,false)] 2つのファイルが同じサーバーのフォルダーにある場合は問題ないのですが、 集計値.xlsを各ローカルPCに移動して使用したところ基礎値.xlsの参照先が [=vlookup(a1,'c:\job\[基礎値.xls]Sheet1'!$A$1:$B$50,2,false)] となってしまいサーバー上のファイルを参照してくれません。 VBAなどで細工すれば解決はすると思いますが、マクロ・VBAを使わないで運用しなくてはなりません。 ファイルを移動させても参照先フォルダーを固定させるよい方法はないでしょうか?

  • 複数のエクセルファイルの集計

    VBAを使って複数のエクセルファイルをあるひとつのファイルにコピーをするにはどうすればよいのですか? アンケート集計をしてます。同じフォルダー(C:\Test)にある回収した1000件分のアンケートを全てData.xlsに集計したいと思っております。具体的にはアンケート表の「1アンケート.xls」のセルS84:S94,S102:S115,S123:S131,S139:S154を]集計表.xls]のA1:AX1に行列を入れ替えて値貼り付けし、「2ンケート.xls」も同じセル番号を、「集計表.xls」のA2:AX2に、・・・・・・(繰り返し)・・・・・「1000アンケート.xls」を「、「集計表.xls」のA1000:AX1000という具合に集計したいと考えております。 似たような質問もあり、自分なりに調べてカスタマイズしてみましたが、VBAを全くやったことない私にはどうしても出来ません。どなたかご教授していただけると幸いです。

  • Book1.xlsとBook2.xlsのエクセルファイルが有ります。

    Book1.xlsとBook2.xlsのエクセルファイルが有ります。 VBAを作成しているのはBook2.xlsで操作しています。 Book1 Sheet1 A B C 1 6 4 2 2 8 5 3 3 5 1 4 . Book1のシートのB列とC列には整数が入力されています。 A列には計算式が入ります。 例)A1の計算式 =B1+C1 A2の計算式 =B2+C2 A列の結果をBook2 Sheet1 のA列に反映しようとした場合に、 以下のVBAだと、計算式のコピーになってしまうので、計算結果の値を反映する事が出来ません。 A列の計算結果(上記の例だと、6,8,5)をまとめて反映させる方法はありますか? Sub tashizan() Dim thisBook As Workbook Dim workBook1 As Workbook Set thisBook = ThisWorkbook Set workBook1 = Workbooks.Open("C:\Documents and Settings\Book2.xls") thisBook.Worksheets("Sheet1").Range("A1:A100").Copy workBook1.Worksheets("Sheet1").Range("A1") workBook1.Close End Sub 初心者ですので、宜しくお願いします。

  • [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回目以降にボタンを押した際には,前回集計された続きから集計をしたいで す. しかし,マクロは初心者のため,どなたかご教授頂けると助かります.よろしくお願いします.

  • エクセルでフォルダ内にある複数ファイルからデータの抽出と集計をしたいのですが・・・

    検索し、似ている質問・回答を拝見させて頂いたのですが、どうも上手くいかなかったので、再度質問させて頂きます。 現在フォルダ(Aと仮定します)の中にエクセルファイル(**.xls形式で名前は個人名となっており、規則性はありません。)が複数入っております。エクセルファイルは同一フォーマットで作成しており、8つのシートに分かれております。その中に「一覧」というシートがあり、   1 2 3 4 5 6 7 ・・・ A  ** ** ** ** ** ** ** B ** ** ** ** ** ** ** C ** ** ** ** ** ** ** D ** ** ** ** ** ** ** E ** ** ** ** ** ** ** ・ ※12…と列、AB…と行で**は数値になっています。 という形式になっています。 ここで同一フォルダA内に集計用のBというファイルをつくり、そこで複数ファイルの「一覧」シート部分だけのデータを抽出し、集計を行いたいのですが、どの様にすれば宜しいでしょうか?? また、Aフォルダにファイルを増やした時に自動的に集計出来るようにすることは可能でしょうか?? 恐らくVBAを使用しなければならないと思うのですが、私の力だけではどうすることもできません。 是非、知恵をお借りしたいと思いますので、何卒宜しくお願い致します。

  • EXCEL VBA 複数ファイル値を集計

    yakkunnと申します。 お世話になっております。 下記処理を実現するためのEXCEL VBAコードをご教授いただけないでしょうか。 ■やりたい事 デスクトップに「実績集計.xlsx」というファイルがあります。 このファイルにボタンを配置し、このボタンをクリックしましたら、C3セルに記述されているファイルパス配下を見てその配下ファイルを全て開き、各ファイルの値を「実績集計.xlsx」に全て転記するVBAコードをご教授いただきたく思います。 ■転記内容 例えばA.xlsx~C.xlsxという3つのファイルがあるとします。この3つのファイルを開いて・・ 左が「A.xlsx」、右が[実績集計.xlsx」とします 処理付を転記・・B4セル⇒B7へ転記 コードを転記・・B7セル⇒C7へ転記 商品名を転記・・C7セル⇒D7へ転記 数量を転記・・ D7セル⇒E7へ転記 金額を転記・・ E7セル⇒F7へ転記 これをA.xls~C.xlsまで繰り返し、実績集計.xlsxに値をどんどん転記したいです。 金額のF列の最後に合計金額が出力されれば最高です。 よろしくお願いいたします。

  • 複数のエクセルブックから特定シートの特定セル抽出

    同一フォルダ内にある複数のExcelブックから特定シートの特定セル値を抽出して一覧表にまとめるExcel マクロ(VBA)を教えてください。 よく似ている質問、回答を読んだのですが、私のレベルではとても応用できず質問させていただきます。 【前提】 ・実行する端末のOSはWindows XP(SP3)、Excelは2003 ・対象フォルダはネットワーク接続フォルダ「\データ解析\データ」  この中に、複数のExcelブックがあります。 ・抽出したい対象は、各ブック内のシート(シート名はファイル名と同じ)の「BO6からBW16までの□の範囲」で統一されています。 【抽出一覧作成イメージ】 ・「集計.xls」ブックの「Sheet1」の2行目から抽出した結果を一覧表示する。 ・表示はA列に抽出元ブック名(=ファイル名)、B列に抽出元BO6セルの値。以降,C列・D列と 順に値を入れていきたい。 ・BO6~BW16までのセル値を「集計.xls」ブックの「Sheet1」に貼り付ける際には「値で貼り付ける」が望ましい。 というようなイメージです。 とても勝手なお願いではありますが、宜しくお願いいたします。

  • エクセルアンケート集計&分析 マクロ

    エクセルで書かれたアンケート結果を自動集計して 分析を簡単に行えるマクロを組みたいと考えています。 ファイルサーバー内の特定のフォルダ(\\Server1\enquete\)内にアンケートBook(*****.xls)が30個入っています。 アンケートbookには10枚のSheet(シート名はアンケート対象施設名)があります。 各アンケートSheetには、セルB2~B100に質問大分類、セルC2~C100に質問小分類、セルD2~D100に質問、セルE2~E100に評価点、セルF2~F100に評価者IDが記入されています。 ・対象施設 評価点順位 ・質問別平均点 ・評価点分布図 ・偏差値 ・平均点 などを分析したいと思います。 どのようなマクロの組み方が効率的と考えられますでしょうか? お詳しい方宜しくご教授ください。

専門家に質問してみよう