• ベストアンサー

データ集計&グラフ化できるエクセル97のマクロを作成したい

複数の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

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答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 ご参考に。

Brown2002
質問者

お礼

ありがとうございます。 参考にさせていただきます。 わからないことが多すぎますので、もう少し質問の的を絞って、 改めて別質問を起こしたいと思います。

Brown2002
質問者

補足

ご紹介いただいた方法で、複数のファイルをオープンできました。 その複数のファイルを、集計用のワークシートを起こして、順に繋げて いく操作をしたいのですが、なかなかうまくいきません。。 勉強不足で恐縮なのですが、ご教示頂けないでしょうか。 よろしくお願い致します。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答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で保存するなら、それも出来る。 

Brown2002
質問者

お礼

ありがとうございます。 参考にさせていただきます。 わからないことが多すぎますので、もう少し質問の的を絞って、 改めて別質問を起こしたいと思います。

Brown2002
質問者

補足

#2の方に教えていただいたサンプルプログラムでファイル入力方法は わかったのですが、その後、本回答でご教示いただいている、 ファイルを一本化するところで、躓いてます。 別質問を下記URLで起こしましたので、皆様、よろしくお願い致します。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=361233

関連するQ&A

  • Excelでのグラフ作成、データ範囲の設定について

    お世話になります。 Excel2003でのグラフ作成について、ご教示いただけたらと思います。 A列に日付、となりのB列に数値を入力していく形式で、 そのデータをグラフに反映させます。 毎日毎日、AB両列にデータが入力されていきますので、 グラフの「元のデータ」を、あらかじめ広く取ると Y軸に日にちが移動してしまい (しかもとんでもない日付に変わってしまいます。 おそらく、なんらかの数値がシリアル値となり、 日付表示されています)、グラフ全体がまったく変な物になってしまいます。 たとえば、「元のデータ」の「データ範囲」を、 数値が入力されているセルだけに設定すると、 Xに日付、Yに項目数値が来る正常なグラフになるのですが、 「データ範囲」に、無入力の行を含めると異常をきたす…といった感じです。 以前、これと同じような表とグラフを作成したときは、 あらかじめデータ範囲を広く取っておくことで、 グラフの右側に空白ができてしまうものの、 次々と最下部のデータの直下セルに入力していくと グラフにもリアルタイムで反映されるので便利だなぁ、と感じたことがありました。 なぜ、今回はうまくいかないのか、色々と試行錯誤してみましたが、 皆様のお知恵を拝借させていただくことに致しました。 稚拙な文章でお恥ずかしい限りですが、 どうぞよろしくお願いいたします。

  • EXCELグラフ作成

    EXCELのグラフ作成について EXCELでグラフを作るとき、通常はA1からA10などに日付を入力し、B2からB10までにデータを入力しますが 元のデータが横に入力されている場合(B1、C1、D1・・・・K1に日付が入力されていて B2、C2、D2・・・・K2にデータが入力されている)場合どのようにグラフを作成すればよろしいでしょうか。ひとつづつデータを横から縦へ入力するにもデータ量が多すぎて困っています。せめて横に入力されているデータを縦にまとめて入力できればグラフは作成できるのですが・・・誰かいい方法を教えてください。よろしくおねがいします。

  • エクセルのデータ集計で悩んでます。

    エクセルのデータ集計で悩んでます。 下記のデータがあったとします。 a b c あ A x あ A y あ A z あ B x い A x い B y このとき、a列とb列で重複するデータを排除してデータ件数を カウントしたいと思います。 つまり、この例ですと あA・・・1件 あB・・・1件 いA・・・1件 いB・・・1件 とどこかの空エリアに表示させる方法はありませんでしょうか? どなたかご指導よろしくおねがいします。

  • excelのグラフ作成をマクロで

    excelのデータが多くてマクロで手っ取り早く処理したいのですが、どうすればよいのでしょうか? 初心者なもので。。。 A列をx軸にしてB列~P列をy軸にします。 1枚目がAとBでグラフを作成し、続いて2枚目としてAとCでグラフ作成し、同様にD・E・F・・・って作成したいです。 グラフは新しいシートを作成していきたいです。(計15枚だと思います。) で、そのシートの名前もつけたいです。 で、書式設定もマクロ上できたらうれしいです。 できないでしょうか? よろしくお願いします。

  • データの集計(?)

    こんにちは 現在CGIで表形式のようなものを作成しているのですが、どうしてもわからない点がありましたので、質問させていただきます。 ファイルレイアウト ($data1,$data2,$data3,$data4,$data5,$data6) という構造時、中身が 2002,5,17,A,00,@@ 2002,5,17,B,00,@@ 2002,5,17,B,00,@@ 2002,5,17,A,00,@@ 2002,5,17,A,00,@@ 2002,5,17,A,00,@@ となっていたとします。 このデータを、4番目のフィールドで集計したい(?)のです。つまり、A=4、B=2という具合にです。 この様な場合、どの様に記述すれば宜しいでしょうか?

    • ベストアンサー
    • CGI
  • Excelについて(グラフ作成)

    Excelでグラフを作成するときに、 例えば、x軸をA列の値、y軸をB列の値にしたいのなら2列を選択して グラフは簡単にできるのですが、それでは x軸をA列の値、y軸はある関数の値(例えばB1に入っているy=2*xのyの値)にしたいときはどうすれば良いのでしょうか? 分りやすくいうと、A列には1行目から 0 、2 、 4 、 6 、 8 、 10 、 12 ・・・・・ B1に、y = 2 * xが入っていてここから x=0 のとき y=0 x=2 のとき y=4 x=4 のとき y=8 x=6 のとき y=12 x=8 のとき y=16 x=10 のとき y=20 よりグラフを作りたいのです。 よろしくお願いします。

  • Excelで集計をしたデータのグラフ化

    20列5000行程度の表があります。 列Eの「担当」で集計を行い、その集計を元にグラフを作成しようとしたところ、うまくいきません。 集計は「データ」の「集計」を使っています。 作業手順など教えていただけないでしょうか? 使用しているのはExcel2003です

  • エクセルでグラフを作成・・・こんなこと出来ますか?

    エクセルによるグラフの作成なのですが。 他のデータを一切入力せず、例えば y=ax+b (a、bは実数値) 等の関数のグラフを、関係式を直接入力することで作図できるでしょうか? 

  • EXCELグラフ作成

    Excel2000を使用しています。 X軸に日付け項目 Y軸にデータ数量が入っています。 上記データよりグラフを作成しようとしたところ、 2-Dグラフで入力できる要素の数は、1系列あたり最大32000個です。のメッセージがでます。 グラフ作成するにはどうすればよいのですか? X軸の項目数が43000行分のデータがあります。 OFFICE2007の購入予定はありません。

  • グラフ作成

    工学系の実験データをグラフにしているのですが、横軸(X軸)は1つ、縦軸(Y軸)を4つ(または3つ)を同じグラフに描けるグラフのソフトはないでしょうか? エクセルでは縦軸が2つまでしか描けないので、2つのグラフに分けています。 もしくは、エクセルで2つのグラフを大きさや原点のずれがないように重ねる方法でも構いません。 御存知の方、御教示ください。 元データはCSV形式で出力できます。

専門家に質問してみよう