• ベストアンサー

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?がついてますが、作業効率化のために使えそうな機能なのでしょうか? すみませんが教えてください。

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

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

ExcelのVBAで(3)を自動化出来ると思いますが、相応のVBA知識が必要でこれから始めるレベルだと正直きついと思います。 どんな感じか試すなら、 1.テスト用の元データブックとテスト用の貼り付け先ブックを   用意して同一ウィンドウ内に開く 2.テスト用の元データブックを選択した状態で、メニューの   ツール-マクロ-新しいマクロの記録でマクロ記録を開始する。 3.最初にテスト用の貼り付け先ブックを選択し、次にテスト用の   元データブックを選択し直してから、実際にオートフィルタ操作と   コピー&ペースと操作を行い、記録終了ボタンを押します。 これでツール-マクロ-マクロ-記録したマクロ名を実行すると、今の操作を自動でやってくれます。 また、ツール-マクロ-マクロで編集を押せば、記録した内容を確認出来ます。 ただし、記録した動作と同じ処理を単純に繰り返すだけなので、貼り付け先の最終行を取得して貼り付けたり、営業所毎のシートを的確に判断して貼り付けたり、オートフィルタの抽出全てに対応させたりするのに相当の書き換え修正が必要になり、それ相応の知識が必要です。 毎日15000件で営業所が20だとすると振分けしてもExcelで営業所毎の1つのシートにまとめられるのは3ヶ月程度ですね。データ件数などを勘案すると、データベースソフトを検討された方が良いと思います。

tomo_mikan
質問者

補足

ごめんなさい、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")というのが、アドインのようです。

その他の回答 (2)

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

#2です。 > 一日300~500件のDataを処理して半年間の合計が15000件程です。 > この件数ならExcelでも可能でしょうか? 可能かどうかの判断は私には出来ません。 1つのシートは65536行までですので、最初に書いてあったデータ量だと3ヶ月程度でシートが埋まってしまうと考えて回答しました。 1つのブックに1シートなのか、1つのブックに複数シートなのかでも変わりますし、それぞれのシートがどのくらいのデータ量かでもレスポンスに影響が出ます。当然ですがデータが多くなればレスポンスは悪くなります。 > 昨日(2)のDataを整える作業を簡単にするため、「ツール-マクロ-マクロ-記録」 > を使ってみました。 > うまく動くかは月曜にやってみないとわかませんが、これもVBAの一部なんですね。 > 教えていただいた(3)の自動化方法も月曜にどんな感じか試してみます。 実データでなくコピーで試した方が良いですよ。 修正していないマクロ記録そのままでは 99.9 % 失敗すると思います。 > 今本を買ってきたりして、VBAの世界に足を踏み入れようとしているのですが・・・ > 一日4時間勉強するとしてどのくらい時間がかかるものなんでしょう 何とも言えないです。 マクロ記録を書き換えて、変数とループと条件文を使えるようになれば結構応用が利きますが。 > VBAをする場合、このアドインとVBAで組んだものがぶつかる可能性もあると言われたの > ですが、そういうことはありえるのでしょうか? > また、回避する方法はすごく難しいのでしょうか? 別スレッドで処理が同時進行するならともかく、ぶつかる事は無いと思います。 処理を走らせるタイミングも異なるように思いますし。

tomo_mikan
質問者

お礼

ありがとうございます。 なんとなく、VBAの感じがわかりました。 また何かありましたら教えてください。

  • coco1
  • ベストアンサー率25% (323/1260)
回答No.1

データが多くなってくると、データベースソフトの方が保守が楽なのは間違いありません。 質問ですが、ダウンロードしてくるデータは一定のフォーマットのテキストデータですか? Excel上でオートフィルタ、ピボットテーブルなどの手段が使えるわけですが、別シートに分けなければならない必然性があるのですか? シートの数=営業所の数は固定ですか?

tomo_mikan
質問者

補足

ご回答ありがとうございます。 一定のフォーマットのテキストDataです。 Excelにクエリーというこの会社で作ったプログラムをアドインしてダウンロードしているようです。 シートに分ける必然性ですが、各営業所拠点に、数Sheetずつメール送信してます。 全体が15000件になるので、ひとつのSheetでは現時点では参照しにくいからとの言うのもあります。 ピボットの場合、Data指定は下記でよいのでしょうか? 行:顧客番号 列:営業所名 Data:その他の項目 月曜日に試して見ます。 シート数は全体では固定です。 ですが、日によってDataが発生した営業所と、そうでない営業所があります。

関連するQ&A

  • エクセル2003のVBA

    お尋ねします。 契約書管理台帳をエクセル2003で作成中です。 シート1には、日付、契約書名、顧客コード、顧客名等 シート2には、顧客コード、顧客名等、顧客名カナ等、顧客情報がリストになっています。 契約書が来たときに、顧客コードをシート2より、ひっぱりたいのです。 リストを考えたのですが、500件ほどあり、とても選べません。 なので、イメージとして カナ検索、例えばフォームに、グーといれれば、グー株式会社を検索し、 0001というコードをセルに表す、という感じです。 VBAを使わなくて良ければ、それが一番いいのですが、色々検索すると、 使わないとできなさそうなので。。。。 どなたか、ご教授ください。よろしくお願いします。

  • エクセルの質問です。

    エクセルの質問です。 二つのシートがあり、Aのシートには全顧客情報が入っています。約一万件です。 もう一つのBのシートも顧客情報なのですが、Bシートに載っていない顧客情報をAシートから取り出したいのです。 それぞれのシートには、顧客コード、顧客名、契約金額、住所などがあり、その情報も一緒に取り出したいのです。 関数、マクロなどは初心者なので、詳しく教えてくださると助かります。 宜しくお願いします。

  • Excelで複数の条件を満たすセルを数えたい

    数字が入った列と都道府県が入った列がある表があります。 数字が30以上50未満で都道府県名が東京で何件、 神奈川で何件… と繰り返しデータを拾いたいのですが、 COUNTIFがうまく使えていないようでできません。 いい方法はありませんか。

  • エクセルVBAでブックの分割

    下記のようなデータがあります。 支店code 顧客名 属性 顧客コード A01 ああああ 1 0123456 A01 いいいい 1 0123457 A01 うううう 2 A01 ええええ 1 0123459 A55 かかかか 1 A55 きききき 2 0123461 A55 くくくく 3 0123462 B22 ささささ 4 0123463 B22 しししし 1 0123464 C56 たたたた 2 0123465 D88 なななな 1 0123466 全部で約800件ほどです。実際には顧客コード以降にも多くのデータがあります。 これを支店コードごとに別ブックに分割し、さらに顧客コードごとにそれぞれ別シートにしたいのです。(シート名は顧客名) 中には顧客コードが未記入のものがあり、その場合はそのデータは無視します。 とても手におえません。お助けいただけると幸いです。

  • エクセル内でのVBAの質問です。

    閲覧ありがとうございます。 エクセルの作業ファイルにてVBAのコードを作成しているのですが、中々思う通りに実行できないので、ご教授願います。 実行したい内容については以下の通りです。 ボタン1を押すと(添付画像上段のブック)、マイドキュメント内にある「データ転送ソフト2」という名前のブックを開き、そのブックのシート「A」内(添付画像下段)の、ボタン1を押したシートのF1セル(添付画像上段のブック)と同じ文字(日付)の列と"う"と入力された行の交差したセルの数値(添付画像下段の紫色のセル)をコピーして、ボタン1を押したシートのT4のセル(転送値1:の右隣にある薄緑のセル)に貼り付ける作業が行えるコードをご教授願いたいです。 要約しますと、作業しているシートのボタン1を押すと、別の場所にあるブックを開き、そのシート内の条件に沿った数値をコピーして、作業しているシートの指定されたセルに貼り付ける作業が行いたいです。 とても分かりにくい文章で申し訳ございませんが、お願いします。 可能ならば、コードの解説もつけてくださると嬉しいです。

  • エクセルでの顧客管理

    エクセル初心者です。顧客管理で2件こまっています。 (1)A列・・会社名、B列・・携帯番号、C列・・担当者名です。別の表にVLOOKUPによって検索したい会社名前を入れると携帯番号と担当者が表示されるようになっています。しかし、同じ会社に複数の担当者がおり複数担当者がいる場合は使えません、同会社の全員の携帯番号と担当者名が出てくるような関数もしくは方法はありませんか?会社ではアクセスが使える環境ではありません。なんとかエクセルのみで乗り切るのは難しいでしょうか? (2)(A)のワークシートにA列顧客名 B列住所 C列担当者名(3人)のデータがあります。このデータを担当者別にそれぞれの担当者のワークシートに反映させたいのです。追加の顧客は(A)で入力しそれが各担当者別のワークシートに反映される方法はありませんか?

  • EXCELの円滑な方法

    EXCEL1シートにデータが100件あるとします(名前、電話番号、都道府県) これを都道府県名別にEXCELシートを複数に一回で振り分けるやり方を考えています。 フリーソフトまたはプログラミングで作る事ってできますでしょうか。 ※主キーを都道府県とし、1レコード毎に振り分け

  • Excel VBAの質問です。

    エクセル2010を使用しています。 Excel VBA で二つのシートを比較して合致するレコードの行を削除する方法 値下げ,まとめのシートがありまして、 値下げ:b列に商品コードのデータ まとめ:a列に商品コードのデータ のようなExcelのデータがあります。 ここから、値下げのシートの商品コードを一つ一つ読み込みながら、まとめの商品コードと比較して、合致した値下げの商品コードの行を削除するプログラムを作りたいです。 商品コードのデータ数は毎回違い、値下げとまとめでも商品コードのデータ数は違います。 どなたかご教示いただけないでしょうか? よろしくお願いいたします。

  • エクセルでデータの検索

    エクセル2000ですが、 シート1に約4000件のデータ、シート2に約4300件の データがあります。 データの構成は同じで2列目 のコードで同じものかどうか区別できます。 シート1とシート2を比較して、同じでない300件を 探し出したいのですが、どうすれば簡単に出来るで しょうか。 月に1回このような作業が起きます。

  • VBAを使った、Excelでのシート間データ抽出

    はじめまして。みなさまどうか教えてください。 Sheet1にはA列に250行程、コードが存在します。 Sheet2にはA列(コード)からI列まで、そして1000行程データが存在します。 Sheet1にあるコードは重複はなく、Sheet2のコード内に必ず同じコードがあります。 Sheet2にも重複コードはありません。 そこでSheet1のコードを使い、Sheet2を検索し、同一コードのデータ(A列からI列の行すべて)を全て(250件分)、Sheet1のコード記載順(A1、A2、A3・・・・)で、Sheet3に抽出したいのです。 どうか、よろしくお願いします。