- ベストアンサー
エクセルフォルダ内の.xlsファイルの集計方法
- エクセルで複数の.xlsファイルの特定セルを集計するマクロを作成する方法について教えてください。
- エクセルのフォルダにある複数の.xlsファイルの特定セルを集計して、新しいブックに書き込む方法を教えてください。
- エクセルで特定のフォルダにある複数の.xlsファイルの特定セルを集計する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
集計するんじゃなくて,単純に転記して並べていくだけですね。 つぎのようなごく基本的なマクロを組み合わせて,応用をしていくだけの作業です。 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
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
VBAをはじめて間もないようなのに、こういうブックをまたいだ課題をこなすのは無理があると思う。 ブックーシートーセルのオブジェクトの階層関係などもわかってないのでは。 >あるフォルダに複数の.xlsファイル・・ のブックの名前をとらえるのは、よく出る質問である。 Googleででも「フォルダ ファイル 捕まえる」ででも照会すれば、沢山記事があり(100万?)その中にはコード例が出る記事も在る。 勉強のこと。 ーー 1つのブック名が決ると、そのブックを開くコードを勉強する。 ブックを開かないとシートデータは取れないと心得ること。 ーー またはエクセルブック名が20ぐらい以下の数で、増減しないなら、ブック名を文字列でプログラムの中で指定する方法もある。 シートのセルに対象データ元のブック名を指定する方法もある。 標準の方法を追求・実現するのでなく、コーディングのやさしい方法で、当面凌ぐ手も考えないと実際問題前に進まない。 ー そして望みのブックの、望みのシートの、望みのセルの計数のとらえ方の勉強が必要だが、それは モデル的に1つのデータ元ブックと集計ブック(1つのブック固定)を開いて、データ転記などして、マクロの記録を取ってコードがどうなるか、勉強してみたら。 そのままでは完成しないが、データの取り方などはわかるだろう。 そこぐらいはやった上で質問を改めてやるべきだ。 ーー 似た件の別件だが、1ブックの複数シートのB4セルの値を足しこんで、合計を出すコードなどわかるのか。 ーー >L2セルに「B」と記述があれば別ブックのB3セルに・・ これなど、VBAを少し判っていれば、書くまでも無いこと。IF文を使って、場合をBとCの場合に分けたら仕舞い。 何処が本題で難しいか、判ってないか、在るセルの集計のコードさえも、判らないのかこころもとない。 ーーー VBAについては、丸投げするコーナーではない。もっと簡単なケースからやっていかないと丸投げになるだろう。回答のコードの意味の理解も出来ないだろう。
お礼
勉強不足で申し訳ございません。やはり大それたことを実現しようとしていたのですね。 総計が、結局50ぐらいのブックになりそうなので(また、状況に寄りブック名を私の側で固定することが出来かねる状況です)、keithinさんのコードを参考に独力で頑張ってみたいと思います。 マクロ記録を取って…というのは確かに試しておりませんでした。至らなさに反省するばかりです。 VBAの本をきっちり読んで勉強していきたいとおもいますので、勘弁してください。 やはりブックをまたぐということで最初からわからないと決めつけてかかっていたのかもしれません。今後質問はせずに自力で頑張ります。
お礼
補足と御礼間違えておりました・・・かさねがさね失礼しました。
補足
早速のお返事ありがとうございます。 私の書き方がよくありませんで、誤解を招いてしまいました。 「B」というのは文字であり、セルの列を表すわけではありませんでした。たとえば「東京」と同じ感じです。(同様に「C」も「大阪」のような文字として考えておりました。) でも、ご教授いただいたコードを参考に変えてそこはクリアできました。 あともう一つ、単純に転記するわけじゃなく集計するマクロを考えております。 ですので、 ・AAA.xlsというファイルの各シートのうち、L2セルが「東京」のシート(複数あるとする)のD4セルの数値を集計して集計ブックのB3セルに出力する。同様に、L2セルが「大阪」であるシートのD4セルの合計値を集計ブックのC3セルに出力する ・BBB.xlsのファイルについても同じように処理し、それぞれB4・C4セルに出力する といった処理を考えておりました。 しかしながら、なんとなく私の今のスキルでは無謀なことに挑戦しているようですので、ひとまず独力でやってみたほうがいい気がしてきました。 上記コードは大変勉強になりました!ありがとうございました。