複数のCSV形式のファイルを集計&加工し、結果の一覧表及びグラフを
作成するマクロを作りたいのですが、実現方法がわかりません。
直接的でなくても、手がかりになる方法や部分的な実現方法を教えて
ください。
●入力ファイルの指定方法
CSV形式でファイル名は、20020715.csv、20020815.csv等、年月日から
構成されていて、開始・終了年月を指定できるようにしたい。
●入力ファイルの中身
CSV形式の中身は、作業者、実績日、プロジェクト、コード、時間の順で
書かれており、このフォーマットで何行もデータが並んでいます。
●集計内容
複数ファイルに跨る上記のデータを集計し直しプロジェクト毎に
分類し、更にコード毎の全作業者の時間を合計したものを実績日毎に
並べて一覧表・グラフを作成したい。また、結果をファイル保存したい。
●具体例
入力ファイル1:20020715.csv
中身:作業者A, 2001/7/2, Prj_Y, B, 10
作業者A, 2001/7/2, Prj_X, A, 3
作業者B, 2001/7/9, Prj_X, A, 8
(実際にはもっと多数のデータ有り)
入力ファイル2:20020815.csv
中身:作業者A, 2001/8/ 5, Prj_Y, A, 5
作業者B, 2001/8/ 5, Prj_Y, A, 3
作業者B, 2001/8/12, Prj_X, B, 6
(実際にはもっと多数のデータ有り)
出力ファイル1:Prj_X.xls
中身:日付 A B
2001/7/ 2 3 0
2001/7/ 9 8 0
2001/8/ 5 0 0
2001/8/12 0 6
出力ファイル2:Prj_Y.xls
中身:日付 A B
2001/7/ 2 0 10
2001/7/ 9 0 0
2001/8/ 5 8 0
2001/8/12 0 0
横軸日付、縦軸時間でA,Bの遷移を示すグラフも欲しい。
教本を読んでも恥ずかしながらわかりません。
説明が下手で申し訳有りませんが、皆様のお知恵を貸してください。
m(_ _)m
No.2ベストアンサー
- 回答日時:
こんにちは。
どのくらい、VBAの知識があるかにもよりますが、大変なコーティングに
なるでしょうね。アクセスでやった方が簡単な気が。。。
システム1本組みたいけど、組み方を教えて的なご質問では回答はしにくいと思います。
マクロ記録でもしながら不明な点を聞かれた方が良いと思います。
'取あえず、指定したCSVファイルを開く(CtrlやShiftで複数選択可)サンプル
Sub Test()
Dim Files, FilesCnt As Integer, i As Integer
Files = Application.GetOpenFilename _
(FileFilter:="CsVFile(*.csv), *.csv", MultiSelect:=True)
If IsArray(Files) Then
FilesCnt = UBound(Files)
For i = 1 To FilesCnt
Workbooks.Open Files(i)
Next i
End If
End Sub
ご参考に。
この回答への補足
ご紹介いただいた方法で、複数のファイルをオープンできました。
その複数のファイルを、集計用のワークシートを起こして、順に繋げて
いく操作をしたいのですが、なかなかうまくいきません。。
勉強不足で恐縮なのですが、ご教示頂けないでしょうか。
よろしくお願い致します。
ありがとうございます。
参考にさせていただきます。
わからないことが多すぎますので、もう少し質問の的を絞って、
改めて別質問を起こしたいと思います。
No.1
- 回答日時:
1.基本-オフラインバッチ処理で行う。
2.データ量-6万5千以下ならエクセル使用可。以下と 仮定する。
3.用意-(1)分れているファイルを一本化するプログラム
(2)一本化したファイルをソートするプログラム
(3)一本化したデータを集計するプログラム
(本件の場合)
(1)はエクセルを使うなら、前ファイル読みこみ後の データの終わりの次にカーソルを置いて、次のファイルを読みこみ するを繰り返す。
(2)はエクセルを使う。使わないなら、ソートプログラムを 自作して用意する。
(3)は自作の方が良いでしょう。データがエクセルに 収まってから、集計などで済ませられないかやって見る手
もある。
4.実施
(1)エクセルにファイルを読み込ます。順次ファイル を読みこませる。各ファイルが少し違うなら修正プログ ラムで行うか、エクセル別シートに読みこんだ後に修正 する。
(2)プロジェクト+日付け+作業者+作業コード順に ソートする。
(3)再度CSVファイルで保存する。
エクセルのシートデータを直接対象として集計
も出来る(スピードは遅いがこちらが良いかも) 。
(4)集計プログラムは1レコードを読んで前レコードのキーと比較して、
プロジェクトが変わると別シートに記録する。
第1キーである日付けが変わると次行に行く。
作業者(コード)が変わるまで時間の足しこみをする。
作業者が変わるとそのセルに合計値をセットし、
次列へ移動する。
小計が必要なら、足しこんで合計して行く。
集計はエクセルの関数機能を使える。
(VBAの中からWorksheetFunctionを使う)
書式や総集計は手作業でやるも良い。
(5)グラフ化はエクセルの機能を使う。
ファイルはエクセルで保存する。CSVで保存するなら、それも出来る。
この回答への補足
#2の方に教えていただいたサンプルプログラムでファイル入力方法は
わかったのですが、その後、本回答でご教示いただいている、
ファイルを一本化するところで、躓いてます。
別質問を下記URLで起こしましたので、皆様、よろしくお願い致します。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=361233
ありがとうございます。
参考にさせていただきます。
わからないことが多すぎますので、もう少し質問の的を絞って、
改めて別質問を起こしたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Excel(エクセル) VBA ふたつの同じ様式シートのセルをコピーしたい 2 2023/03/08 15:28
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
- Visual Basic(VBA) VBA 毎日取得するデータを順番に反映していく方法 6 2023/08/26 16:22
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メモ帳(拡張子log)の数字デー...
-
共有しているEXCELシートのアク...
-
エクセルの中にエクセルを添付...
-
エクセルにクリックすると指定...
-
過去の定額郵便貯金の金利表
-
CSVファイルをカンマ区切りのテ...
-
エクセルVBAでアクセスファイル...
-
エクセルで 例えば 伊藤と名前...
-
MROUNDの代替
-
新PCで作ったエクセルファイル...
-
【マクロ】フォルダからエクセ...
-
Windows10で、ほかのWindowsで...
-
CSVファイルでVBAを動かす方法
-
エクセルの塗りつぶしの色が勝...
-
フォルダ内の全てのファイルを...
-
エクセルを開くのにウイルスス...
-
エクセルのファイルを開くと部...
-
エクセルで複数のブックで「元...
-
エクセルのプロパティの作成日...
-
変更されたリンク先を正しいも...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでファイルを閉じても...
-
Windows10で、ほかのWindowsで...
-
エクセルで複数のブックで「元...
-
エクセルVBAでアクセスファイル...
-
Lotus 1-2-3のファイルをExcel...
-
共有しているEXCELシートのアク...
-
エクセルを開いたときのシート
-
エクセルの塗りつぶしの色が勝...
-
エクセルにクリックすると指定...
-
400KBのエクセルは重いの?
-
エクセルの中にエクセルを添付...
-
エクセルの添付ファイルに記入...
-
2つのエクセルファイルをデュ...
-
過去の定額郵便貯金の金利表
-
ExcelファイルがDoxillionに突...
-
メモ帳(拡張子log)の数字デー...
-
エクセルで1.5GBのファイルを開...
-
エクセルのシートが常に小さく...
-
Google Todoリスト
-
2画面を使ってシート別に表示す...
おすすめ情報