- ベストアンサー
Excelでマクロを使って集計したい
いい方法がわからず困っています。 Excel2000を使って報告書の集計をしたいのですが・・・。 支店が100店舗あり、毎日Excelファイルの報告書を送ってもらっています。フォーマットは全店共通です。 報告書のファイル名には各支店名が入っています。 ファイルの中は、顧客名や誕生日、商品コード、商品名などのリストになっています。 (件数は毎日変動、1日1店舗平均50件位、0件の場合もあり) 今現在、ひとつずつファイルを開いて、入力されている範囲をコピーして、全店集計用の別のファイルに貼り付けて、毎日の全店分のリストを1つのシートにまとめています。 この作業をマクロを使って、ボタンを押すと自動的に全店集計用ファイルにデータが貼り付けられる方法はないでしょうか。 そして、集計が完了すると、別のマクロのボタンを押すことで、各店(100店舗)の報告書のデータをクリアさせたいのです。 お知恵を貸してください。宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
全ての記述はちょっと大きくなるので、部分的に。 下記をためしてみて下さい。 マクロのあるファイルと、支店のファイルは同じフォルダに置いてあるとした場合です。 Private Sub CommandButton1_Click() Dim FName As String Dim FCnt As Long FName = Dir(ThisWorkbook.Path & "\*.xls") If FName = "" Then Exit Sub FCnt = 0 If FName <> ThisWorkbook.Name Then FCnt = FCnt + 1 Cells(FCnt, 1) = FName End If Do FName = Dir() If FName = ThisWorkbook.Name Then ElseIf FName <> "" Then FCnt = FCnt + 1 Cells(FCnt, 1) = FName Else Exit Do End If Loop cells(1,2)=FCnt & "個のファイル" End Sub これで、このBookと同じフォルダ内の*.xlsファイルの一覧が出せます。 この後に、この一覧のファイルを開けてく動作 Workbooks.Open Filename:=ThisWorkbook.Path & "\" & ファイル名 データのあるセルをチェックし一つずつ処理をして 終われば Workbooks(ファイル名).Close SaveChanges:=false で閉じる、これを繰り返す処理を作ります。 一度、一覧にすることで、読み込む順番などを任意に変えるときも便利になります。 これをヒントに勉強してみて下さい。
その他の回答 (2)
一日平均 50件/店舗 おおよそ 100店舗 どの程度の期間データを取っておくのかは分かりませんが、経営指標とするためには最低2,3年1000日とすると5000000件、ちょっとエクセルで操作したくない件数のような気もします。 元データはエクセルでも良いのですが、集計等に他のソフトを考慮する余地はないのでしょうか?
補足
アドバイス、ありがとうございます。 保存期間は2日位というとても短いものです。 速報ベースでの実績作成に使用したいのです。 簡単なVBAで出来れば・・・と思っているのですが・・・。
- adaypajimy
- ベストアンサー率20% (201/964)
そのファイル名が常に固定であり、 シートの書式などが内容が同じような形式ならば、 VBAにて作成可能です。 1)全店集計用ファイルで、 2)100店舗のファイルのうち1軒開く。 3)データが空白でない部分まで範囲指定して 4)集計用のシートにコピー。 5)次の店舗のファイルを開く。 (1~5を繰り返す) まぁ、でも、ここまでくると、システムになりますので、プログラマ・システムエンジニアの領域の仕事で、個人でやるならばプログラミングを勉強する必要があると思います。
補足
回答ありがとうございます。 VBAで作成できるのですね。 とりあえず、1~5をこつこつとやってみました。 クリップボードのクリアができずに、メッセージが 1つのファイルを開くたびに出てきて、 また新たな問題が・・・。(泣) もうちょっと頑張ってみます。
補足
記述までして頂いてありがとうございます。 とても助かります。 でも、これが一部に過ぎないと言うことは、やはりマクロを組むのはそう簡単にはいかないのですね・・・。