• ベストアンサー

データの集計をして、Excelのブックに保存する処理

1500人分のデータ(有給残日数・振休未消化日数・時間外)を所属別に集計して、 内訳と所属の合計値を所属別にブックを作成して保存し、それに全体の平均値を出したシートを追加して、 グラフを作成し、該当所属長にメールで送信するという作業が毎月あり、 かなりの時間をかけてコピー・ペーストしながら手作業でやっております (なんせ50箇所もあるため、50個のブックに分けるのが大変です。) この一連の作業を、なんとか自動化できないものでしょうか? Excelのマクロを今勉強中で、操作しながら記録するのと、少し改変することができる程度で、詳しい知識はもちあわせておりません。 Accessも、クエリはあつかえますが、SQLとかはわかりませんし、こちらも詳しい知識はもちあわせておりません。 データとしては、 本部コード・所属コード・所属名 ・社員番号・氏  名・時間外対象フラグ・有給残・振休日数・時間外  999900 ・ 999999 ・××支店・777777 ・磯野並平・      Y   ・  10  ・   3  ・  5.5  ・  ・  ・ ××支店のブック  シート1・・・データシート:××支店 所属者のデータ・最終行に合計表示  シート2・・・全体の平均値:××支店の平均値(時間外の合計÷時間外対象者の数)(有給残の合計÷人数の合計)(未消化日数の数÷人数の合計)                ○○支店の平均値 同上   【全支店共通】  シート3・・・グラフ【全支店共通】 といったかんじにしたいのです。 シート2は、グラフを作成するためのものなので、グラフさえできれば、なくてもかまわないです。 Accessを使って、本部コードごとに集計して、Excelにエクスポートをして、その後はマクロでグラフを作成するのがいいのかなと思いますが、本部ごとのデータをそれぞれ分けてエクスポートすることが可能かどうか、マクロでグラフを作成するほうほうがわかりません。 Excelですべてできるものでしょうか? Access大辞典やExcelのマクロの本を買い、インターネットで調べたりいろいろしておりますが、結局どのようにしたらいいのかという根本的なところがわかりませんので、困っております。 どうかお知恵をお貸しください。 よろしくお願いいたします。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

たぶん全てExcel-VBAで可能だと思います。 但し、相当のスキルを要求される処理で、道のりは険しいと思います。 取り合えずブック分けのサンプルを。 以下の条件で、サンプルブックを用意して試してみてください。  1)新規ブックの一番左のシートのセル A1からタイトル行を含むデータがある  2)B列の所属コードでソートされている  3)上記のブックはマクロ実行前に名前を付けて保存されている。 下記を実行すると上記ブックと同じフォルダ内にB列毎のデータを保存します。 以上、参考まで。 '****************************************************************** Sub BookSeparate() Dim myList(), wb As Workbook, tws As Worksheet, i As Integer On Error Resume Next Set tws = ThisWorkbook.Worksheets(1) If Not tws.AutoFilterMode Then   tws.Range("A1").CurrentRegion.AutoFilter End If Call ListCreate(tws, myList, 2) For i = 0 To UBound(myList)  Set wb = Workbooks.Add(xlWBATWorksheet)  wb.Worksheets(1).Name = myList(i)  tws.Range("A1").CurrentRegion.AutoFilter _    field:=2, Criteria1:=myList(i)  tws.Range("A1").CurrentRegion.Copy _    Destination:=wb.Worksheets(1).Range("A1")  wb.SaveAs Filename:=ThisWorkbook.Path & "\" & myList(i) & ".xls"  wb.Close Next i tws.Range("A1").AutoFilter End Sub '****************************************************************** Private Sub ListCreate(ws As Worksheet, rList, myCol As Integer) Dim myLow As Long, cnt As Long myLow = 2: cnt = 0 Do While ws.Cells(myLow, myCol).Value <> ""   If ws.Cells(myLow, myCol).Value <> _    ws.Cells(myLow, myCol).Offset(-1, 0).Value Then    ReDim Preserve rList(cnt)    rList(cnt) = ws.Cells(myLow, myCol).Value    cnt = cnt + 1   End If   myLow = myLow + 1 Loop End Sub

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

noname#52504
noname#52504
回答No.3

いろいろなアプローチが考えられますが、 配布するブックをその都度ゼロから作成するのは大変なので、まずは、  >>所属名を切り替えるだけでその月の当該所属の配布用ブックになるような雛形<< を作ることを考えた方が簡単かと思います。 ●元データについて  雛形のブックが常に最新のデータを参照するよう、  最新のデータが一定の場所に一定のファイル名で存在する必要があります。 ●シート1について  Excelのデータベースクエリを使うのが簡便かと思います。  下記のページの説明が判りやすいですね。    ■外部データの取り込み(パラメータークエリの利用):条件によるデータの抽出  http://www11.plala.or.jp/koma_Excel/contents6/mame6041/mame604101.html  このページではExcelからExcelへの取り込みを例にしていますが、  元データがテキストファイルやmdbの場合でもいけます。 ●シート2について  >全体の平均値:××支店の平均値  >【全支店共通】  とありますが、当該所属についての集計なのでしょうか?  それとも1500人全体についての集計なのでしょうか?  前者であれば、シート1で取り込んだデータに応じて  数式等で値が表示されるようにしておけば済みます。    後者であれば、別途集計する必要があります。  元データがExcelのブックであれば、  元データ側のシートに結果が表示されるようにしておいて、  配布用ブックに貼り付ければよいかと。  ただし、外部に送信するので、  元データを参照している部分は値として確定する必要があります。 ●シート3について  シート2の値を参照するようにしておけば、  シート2の値が変わればグラフも勝手に変わりますね。 結局、一度雛形を用意しておけば、 手動で操作する(自動化にはマクロが必要になる)部分は… 1.(必要ならば)全体の集計データを配布用のブックに貼り付ける ×1回 2.所属名を切り替える(書き換える) ×50回 3.(必要ならば)保存する ×50回 4.メールで送信する ×50回 の4点ということになります。 1は毎月1回のことなので、手動でもたいした手間ではありませんが、 あえてマクロでやるなら「ブック間の転記」ということになります。 2,3は是非自動化したいところですね。 「特定のセルを順に書き換えて保存」というだけの動作ですから、 質問すれば回答がつくと思います。 4は、個人情報に関することですから、自信がなければ手動でやった方が無難だと思いますが、 マクロでやるなら、SendMailメソッドとか、あるいは下記のようなシステムを使うとか…。  ■CDOでメール送信  http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_800_080.html 以上、ご参考まで。長乱文陳謝。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

あえて言います。 こんな盛りだくさんの仕事の全部を、回答者に丸投げでやってくださいというのは無理です。普通はシステム担当部署か、業者にやってもらう事項のはず。 もっと自分で勉強して、課題を小さく分けて、1つずつ解決していかないと。 エクセルでもアクセスでも、マスター的な原資料はできるだけ分けないほうが良いと思う。50部署にブックを分けるなんて、私の考えでは、絶対しません。 分けなければならない理由は何でしょうか。 印刷ぐらいしか考え付かないが。各部にその電子データを配っているのでしょうか。 まず (1)部ごとにデータを行の固まりにする方法。==>ソート (2)行の塊を取り出す方法=>例えば別ブックの1シートに 書き出す。 (3)1つのブックのシートをメイルで送る方法(下記では、アクチブ・シートしか送らないようだ) (4)部ごと送信を連続して、終わりまで行う方法。 を調べてください。 しかし(3)はファイルーメイルの送信、あたりをやれば、良いがマクロの記録で記録しませんね。 するとエクセルの範囲外の機能の利用になるので、勉強が難しい。 ただWEBで例が載っていると思うので調べてください。 例えば http://officetanaka.net/excel/vba/tips/tips45.htm ーー これらの課題はVBAでも超上級だと思うので、しばらくは調べまくらないと、すぐは無理でしょう。

Oceans12
質問者

補足

すみません。質問の仕方が悪かったですね。 すべて回答者さまにやってくださいとお願いしているのではなくて、 自動化するに当たって、どのような手順で、どのようなソフトを使うのがよいか、ご指導いただきたかったのです。 私はアクセスで集計して、各部ごとにテーブル作成クエリか何かでエクセルにエクスポートしたものを作成し、それに全体の平均値のシートをマクロで付け加えるという方法までしか考え付かなかったのですが、それもできるかどうかは不明なので、ほかにいい方法があるか? エクセルで全部できるのかどうか? エクセルで集計まではわかりますが、行の塊を取り出すという方法は、わかりません。 各部にその資料をメールで送信しなければいけないため、ブックは分けなければなりません。 メールで送るのは手作業でもかまわないです。それまでの作業が少し楽になればと思いまして・・・。 メールを送るところまで自動化できるとは、すごいですね。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルについて教えてください。

    エクセルについて教えてください。毎月、社員の残業時間を、各支店に分けてグラフにして提出するという作業があります。毎月作成するのが手間なので、シート1にデータを貼り付けるとシート2に自動的にデータが入って、グラフも完成するようにしたいのですがどのような方法がありますか?ピボットテーブル以外でなにかいいいい方法があれば教えてください。わかりずらい説明で申し訳ありません。よろしくお願いします。 シート1     1         2         3         4         5        6 1 社員番号     社員名     残業時間   所属部署名   所属支店名   内勤OR外勤 シート2     1        2        3 1           内勤      外勤   2  ○○支店   残業時間  残業時間 シート3 残業時間をまとめたグラフ

  • 【エクセルVBAマクロ】データ集計処理について

    お世話になります。 以下のような形式のデータファイルがあります。 勤怠を集計するデータファイルです。 (出勤=1、欠勤=2) 左から:支店、名前、1日、2日、3日  北海道 山田 1 1 2     田中 2 2 2 東京  山本 1 1 1     西村 1 2 2 大阪  ・・・     ・・・  という感じで、これを集計し支店毎に日にちごとに出勤何名、欠勤何名、合計何名 というデータを作りたいのですが、マクロの組み方を教えていただけますでしょうか? 現在はこれを手作業でおこなっており、時間がかかる、入力ミスが出るといった問題がおこっております。 何卒、宜しくお願い致します。

  • エクセルのファイル別データの集計について

    初心者なのでよろしくお願いします。 次のようなケースでおたずねします。 会社の本部で作成したエクセルファイルの「売り上げ表」フォームを各支店(約100店舗)にインターネットのメールに添付して送信します。 各支店はこのファイルにデータを入力後、インターネットのメールに添付して本部に送信します。 この送付された各添付ファイルのデータを本部で当初のフォームに集計したいのですが、なるべく効率的にするにはどうしたらよいですか? エクセル2000を使ってます。 よろしくお願いします。

  • エクセルデーター集計について

    現在1月から12月まで各月毎のシートと集計表があります。 そのシート内の集計表は  A  ・   B     ・ C ・ D ・ E ・・・・・・・・BB 1担当・顧客ナンバー・日付・苗字・名前・・・・・・・・ 2田中 3佐藤 4小川 5田中 6田中 7佐藤 8井上 ・ 150位まで(行については月により変動あり) と各列と行にデータが入力されてます。 担当者は12名で元になるデータ表には活動順に担当者名が入力されてます。 やりたい事は (1)各担当別の月別集計と年間集計シート作成 月毎にシートを作成でなく、あくまで担当者毎の月毎集計と12か月の年間合計転記を同一シートにする事は可能でしょうか。(個人成績表の為) またその時担当別にシート作成が出来るとうれしいです。 (2)全担当者の月集計一覧シート 一つのシートに全担当者の月別集計(1月から12月)を一覧にしたいのですが、各担当者の月別合計欄を転記の認識なのですが、他にいい方法もありますか? (3)全担当者の年間集計一覧シート (2)の合計を転記の認識です。他にありますか? 以上3点を作成したいと思ってます。 (1)が出来れば何とかなるような気はしますが、どなたかご教授お願い致します。 項目はA~BBまで横一列にあり 担当者の入力も横一列なのでvlookupでも考えましたが、マクロで何とか出来るなら挑戦してみようかと思ってます。 集計表自体他のブックからのリンクやなんやらで20M位ファイルサイズがあり、今回の(1)(2)(3)は新規ブックに作成したいと思います。

  • excelでブックを開くのが遅い

    初めて利用させて頂きます。 質問は下記となります。 エクセルにてマクロを使用したブック、 使用していないブック。 それぞれ最終的に2mb程の容量となり レイアウトに差はありません。 前者は月初から月末までの各日毎に2シートずつ作成していきます。 後者は当月日数×2シートがすでに作成されている状態です。 後者はブックを開く時間は3秒前後に対し 前者はブックを開く時間は20秒前後です。 前者のマクロはブックを開く際には全く動きません。 なぜ前者は開くのに時間がかかるのか わかりません。 時間が掛かる理由と対象法について、 教えていただけると幸いです。

  • Excelのシート間で数式のコピーができません

    Excel2007でシート間でコピーをしたいのですが 数式のコピーができません。 数式がコピーされず0や#REFになってしまうときと 何度かやっているとなぜか運良くできることがたまにあります。 各シートには各月の出退勤のタイムシートを元に カウントした出勤日数、合計勤務時間、平均勤務時間があり、 1年間分をひとつのシートにまとめたいと思っているのですが なかなかうまくいきません。 まとめたものでグラフを作成したいのですが 良い方法はありますでしょうか。

  • Excel マクロ データ集計

    Excel マクロ データ集計 Sheet1にある情報を集計して、集計結果をSheet2に貼り付けるマクロを考えています。 「Sheet1」のA列、B列、C列が合致した場合に同じ商品とみなします。 C列で「新鮮」とついている場合には、商品名で一致させて、Sheet2の 同じ商品名のところに記載します。 「Sheet2」に貼り付ける際、「Sheet1」のA列は不要です。 どのようなマクロを作成すればよろしいでしょうか。 画像を添付します。 「Sheet2」は完成形です。

  • Excelの保存サイズ

    Excel2003で作成したファイルサイズが大きくなったので(1,689KB) データの古い部分を消去したのですが サイズが小さくならず 試しに データの入っているセルやグラフを全部削除したのですが それでも1,289KB有り 理由が解りません 作成したファイル内容は シートが1個 セルに数値を平均4桁入力 423行 A~BD(56列)使用 グラフ5個 マクロを組込みしています 1:サイズを小さくする為にセルのデーターを消去するだけでは駄目なのでしょうか? 2:何処かに隠されたデータが有る気がするのですが それを消去出来ないでしょうか? 兎に角サイズが大きくなったファイルを 作り直さないで一部を消去して サイズを小さくする方法を御存知の方のアドバイスをお願い致します  

  • Excel エクセル

    Excel エクセル [シート1]の、D列に複数の支店名(東京支店、名古屋支店・・・)が入力されています。 同一の支店名も複数あります。 1.支店名のシートを自動的に作成 ex.[東京支店]シート、[名古屋支店]シート ・・・ 2.[シート1]D列の同一支店名の行を該当のシートに書き込み と言う様な事は可能でしょうか?。 マクロ初心者で調べられる限りでトライはしてみましたが、どうしても出来ません。 ご教授のほど よろしくお願いいたします。 ex. [シート1] 列  A  B   C   D   ああ  い   う   東京支店   か   きき  くく  名古屋支店   ささ  し   すす  名古屋支店   た   ちち  つつ  東京支店      ↓ [東京支店]シート ああ い う 東京支店 た ちち つつ 東京支店 [名古屋支店]シート か きき くく 名古屋支店 ささ し すす 名古屋支店 毎月作成されるデータをエクセルを知らない初心者が対応するため、 どうしてもマクロで作成したボタンを押すだけで自動的に処理できるようにしたいのです。

  • エクセルで毎日配信されるデータを抽出したい

    こんにちは。 毎日サイトからメールでエクセルデータが添付され送られてくる相場一覧について相談させてください。 【送られてくるデータ】 エクセル シート:5枚 【現在の作業】 このシートのうちの4枚の一部分に欲しいものの相場が載っているので、それをコピーして、 別に作ったカレンダーに貼り付け、折れ線グラフにしています。 【改善したいこと】 ○送られてくるエクセルデータの中から 必要なデータから必要な部分だけを自動で抽出したい ○抽出データをカレンダーに毎日更新して載せたい ○そのデータを折れ線グラフで表したい 今、行っている作業をマクロで記録して、 マクロ起動用のファイルを作成し、届いたデータを開いてマクロを起動させようとしたのですが、 うまくできませんでした。 このような場合、どのようにして作業するのがいいのでしょうか? 毎日の作業なので、あまり手間と時間をかけたくないのですが、 マクロは記録位しか経験がなく、困っています。 どなたかご教示お願いいたします。

専門家に質問してみよう