- ベストアンサー
ExcelとVBA?の質問です。困ってます。
今扱っているDataを顧客情報Dataに例えて説明しますので すみませんが(3)の作業について効率の良い方法があったら教えてください。 【列項目】 1.契約種類 2.顧客コード 3.氏名 4.年齢 5.契約種類 6.契約金額 6.営業所(都道府県名) 7.担当者コード 【データ数 15000件つまり15000行】 【作業内容】 (1)毎日サーバーから前日のDataを指定してダウンロードします。(クエリー機能使用) (2)VlookUPなどの関数を使用してデータを整える。 (ex:担当者コードから他ファイルを参照して「担当者名」列を追加する等 (3)昨日分までのデータ(約15000件)を保存した別ファイルに営業所(都道府県名)毎にSheetを分けて、本日分を追加 【(3)の現在の方法】 オートフィルタで営業所(都道府県)毎に選んで、Sheetにコピー なんとか簡単にに営業所(都道府県)別Sheetに分けることは出来ないでしょうか? ちなみに、毎日のダウンロードデータの中の営業所数は日によってまちまちです。20~30件 説明が下手でわかりにくかったら聞いてください。 仕事で作業の効率化を要求されて困ってます。 いっそファイル形式をアクセスに変えた方がいいんでしょうか?(アクセスは良くわからないので別途勉強要) ExcelにVBA?がついてますが、作業効率化のために使えそうな機能なのでしょうか? すみませんが教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ExcelのVBAで(3)を自動化出来ると思いますが、相応のVBA知識が必要でこれから始めるレベルだと正直きついと思います。 どんな感じか試すなら、 1.テスト用の元データブックとテスト用の貼り付け先ブックを 用意して同一ウィンドウ内に開く 2.テスト用の元データブックを選択した状態で、メニューの ツール-マクロ-新しいマクロの記録でマクロ記録を開始する。 3.最初にテスト用の貼り付け先ブックを選択し、次にテスト用の 元データブックを選択し直してから、実際にオートフィルタ操作と コピー&ペースと操作を行い、記録終了ボタンを押します。 これでツール-マクロ-マクロ-記録したマクロ名を実行すると、今の操作を自動でやってくれます。 また、ツール-マクロ-マクロで編集を押せば、記録した内容を確認出来ます。 ただし、記録した動作と同じ処理を単純に繰り返すだけなので、貼り付け先の最終行を取得して貼り付けたり、営業所毎のシートを的確に判断して貼り付けたり、オートフィルタの抽出全てに対応させたりするのに相当の書き換え修正が必要になり、それ相応の知識が必要です。 毎日15000件で営業所が20だとすると振分けしてもExcelで営業所毎の1つのシートにまとめられるのは3ヶ月程度ですね。データ件数などを勘案すると、データベースソフトを検討された方が良いと思います。
その他の回答 (2)
- papayuka
- ベストアンサー率45% (1388/3066)
#2です。 > 一日300~500件のDataを処理して半年間の合計が15000件程です。 > この件数ならExcelでも可能でしょうか? 可能かどうかの判断は私には出来ません。 1つのシートは65536行までですので、最初に書いてあったデータ量だと3ヶ月程度でシートが埋まってしまうと考えて回答しました。 1つのブックに1シートなのか、1つのブックに複数シートなのかでも変わりますし、それぞれのシートがどのくらいのデータ量かでもレスポンスに影響が出ます。当然ですがデータが多くなればレスポンスは悪くなります。 > 昨日(2)のDataを整える作業を簡単にするため、「ツール-マクロ-マクロ-記録」 > を使ってみました。 > うまく動くかは月曜にやってみないとわかませんが、これもVBAの一部なんですね。 > 教えていただいた(3)の自動化方法も月曜にどんな感じか試してみます。 実データでなくコピーで試した方が良いですよ。 修正していないマクロ記録そのままでは 99.9 % 失敗すると思います。 > 今本を買ってきたりして、VBAの世界に足を踏み入れようとしているのですが・・・ > 一日4時間勉強するとしてどのくらい時間がかかるものなんでしょう 何とも言えないです。 マクロ記録を書き換えて、変数とループと条件文を使えるようになれば結構応用が利きますが。 > VBAをする場合、このアドインとVBAで組んだものがぶつかる可能性もあると言われたの > ですが、そういうことはありえるのでしょうか? > また、回避する方法はすごく難しいのでしょうか? 別スレッドで処理が同時進行するならともかく、ぶつかる事は無いと思います。 処理を走らせるタイミングも異なるように思いますし。
お礼
ありがとうございます。 なんとなく、VBAの感じがわかりました。 また何かありましたら教えてください。
- coco1
- ベストアンサー率25% (323/1260)
データが多くなってくると、データベースソフトの方が保守が楽なのは間違いありません。 質問ですが、ダウンロードしてくるデータは一定のフォーマットのテキストデータですか? Excel上でオートフィルタ、ピボットテーブルなどの手段が使えるわけですが、別シートに分けなければならない必然性があるのですか? シートの数=営業所の数は固定ですか?
補足
ご回答ありがとうございます。 一定のフォーマットのテキストDataです。 Excelにクエリーというこの会社で作ったプログラムをアドインしてダウンロードしているようです。 シートに分ける必然性ですが、各営業所拠点に、数Sheetずつメール送信してます。 全体が15000件になるので、ひとつのSheetでは現時点では参照しにくいからとの言うのもあります。 ピボットの場合、Data指定は下記でよいのでしょうか? 行:顧客番号 列:営業所名 Data:その他の項目 月曜日に試して見ます。 シート数は全体では固定です。 ですが、日によってDataが発生した営業所と、そうでない営業所があります。
補足
ごめんなさい、Data件数の説明が間違ってました。 一日300~500件のDataを処理して半年間の合計が15000件程です。 この件数ならExcelでも可能でしょうか? 昨日(2)のDataを整える作業を簡単にするため、「ツール-マクロ-マクロ-記録」を使ってみました。 うまく動くかは月曜にやってみないとわかませんが、これもVBAの一部なんですね。 教えていただいた(3)の自動化方法も月曜にどんな感じか試してみます。 VBAに少し興味をもって勉強しようかと思っているのですが、VBAをマスターするのは大変なんですね。 今本を買ってきたりして、VBAの世界に足を踏み入れようとしているのですが・・・一日4時間勉強するとしてどのくらい時間がかかるものなんでしょう また、昨日HelpDesk担当の人に聞いたのですが、この会社のExcelはサーバーからDataをダウンロードするために、クエリー機能をアドインしているそうです。 VBAをする場合、このアドインとVBAで組んだものがぶつかる可能性もあると言われたのですが、そういうことはありえるのでしょうか? また、回避する方法はすごく難しいのでしょうか? ちなみにExcelでファイルを開く作業をマクロ記録して、記録内容を確認すると、下記のようなものになりました。 -------- Workbook.Open Filename:="D:\Userdata\AS400db\Mater_data\営業所コード一覧.xls" Application.Run Range("ScOnwindow") -------- Application.Run Range("ScOnwindow")というのが、アドインのようです。