• 締切済み

VBAマクロ:データシートから情報を抽出して顧客別の出荷表を作成したい

いつもこちらではお世話になっています。 ありがとうございます。 今回はマクロで以下のようなことをしたいと考えていますが、どんな組み方がいいでしょうか? いつもながら勉強不足で申し訳ありませんが、お力を貸して頂ければと思います。 まず、下記のようなデータシートがあります。 日付    商品名     顧客コード 9/10   みかん      A0001 9/12   ぶどう      A0002 9/13   いちご      A0001 9/13   いちご      A0002 9/18   鶏肉       B0013 このデータシート上で(例えば)ボタンを押すと 一度に各顧客毎の「出荷表(納品書)」が作成される(別ファイルで保存される)、というようなマクロを組みたいのです。 …A0001の出荷表は、9/10,9/13のデータが載っているものになります。 (これがそれぞれA0002、A0013の分も同時に作成されてそれぞれ別ファイルで保存される形で) データシートと別に「出荷表(納品書)」ひな形シートを作って、 1行ずつひな型に流し込んでいこうかな?と考えてみたのですが、 (顧客コードで並べ替えをしてから、コードNOがかわる前の行まで 流し込んで別名でファイル保存してみる、とか…でもこれだと 切り替わったあとのコードの分の処理をどう進めてよいかわからず)どうもうまく考えがまとまりません。 どうかよろしくお願い致します!

みんなの回答

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.2

並べ替えが済んでいるものとして疑似コードで表現します。 1行目から1列目が空白になるまでで全件処理できるものとします。 3列目に顧客コードとします。 顧客コードNという変数を用意します。 i=1 while cells(i,1)<>""   顧客コードN=cells(i,3) 集計のキーを保存   ここで顧客ごとの最初の処理   新しいファイルの準備       出荷表の初期化 顧客名称ノセット 合計のクリア 明細転送行の初期化など   while 顧客コードN=cells(i,3)     ここで一件ごとの処理 明細の転送、合計への加算 など     i=i+1 '次のレコードに進める   wend   ここで顧客ごとの最後の処理   合計欄のセット,新しいファイルのsave,close など wend 大まかに集計の流れはこのようにします。 ただ、私が作るならマクロはこのデータとは別のブックに置きます。 経験上データとプログラムは分けておいたほうがあと後面倒が無いようです

aina1105
質問者

お礼

ありがとうございます。 お教え頂いた内容のだいぶ手前でつまづいていますが^^; (集計のキーを保存、、とか) もう少し自分でも勉強してみます。 While wendははじめて見る言葉でした。 ちょっと調べた感じでは複雑な条件分けには向いている?コードでしょうか。 すぐに回答頂きありがとうございました!

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

Excel(エクセル) VBA入門:データを振り分ける http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_furiwake.html こちらを参考に”別シート”に分ける練習からしてみるとか。

関連するQ&A

  • <Excel>データベースの中から特定の要件を満たすデータを抽出し、他のシートへ転記

    Sheet1に以下のデータがあるとします。  <納品データ>   A      B      C      D 1 顧客   商品コード  品名    数量   2 ○○    0001    りんご   100 3 △△    0002    みかん   500  4 □□    0003    いちご   200 5 △△    0003    いちご   300      6 ○○    0003    いちご   100    上記データを基にSheet2へ顧客別の納品書を作成します。 納品書の雛形は以下のようなものです。 <顧客別納品書>   A     B     C     D 1         △△   様(敬称)   2 商品コード   品名     数量 3  0002     みかん    500    4  0003     いちご    300      顧客名(上記例だと”△△”)をB1に入力すると、Sheet1を検索しに行き、該当顧客の納品データを抽出し、Sheet2の顧客別納品書に転記するというものを作りたいと考えております。 商品コードと数量さえ抽出→転記できれば、「品名」は別途「品名リスト」等を作成しておき、そこから引っ張ってくれば良いと考えています。 作成要件としては、、、  1.すべて関数による作成  2.オートフィルタ等の使用による手作業は不可 Excelをまったくわからない人でも顧客名だけを入力すれば納品書を作成できるようなレベルのものを考えています。また、VBAを使わないのは私自身が理解できないからです。 恐れ入りますがよろしくお願いします。

  • エクセルで、顧客データを別のシートの表に項目ごとセルに振り分けたい

    エクセル97を使っています。 Sheet1に既に作られた顧客のデータをSheet2の表に挿入したいのですが、 データシートは1行で1名分なのに対し、表シートは2行で1名分になっています。例えば、 Sheet1 の A1 が Sheet2 の A1 に入り、 Sheet1 の A2 が Sheet2 の C1 に入り、 Sheet1 の A3 が Sheet2 の A2 に入り、 Sheet1 の A4 が Sheet2 の B2 に入り・・・ といった具合に、Sheet1と2では項目もバラバラです。 = の前に ' を付けて後で区切り位置で変換する、という方法を以前こちらで教えていただいたのですが、うまくマクロを作ることが出来ません。 更に、顧客データの数の変動が激しいので、表シートの行数をデータの数の分だけ自動に増やしたいのですが、やり方が見つかりません。 すみませんが、どなたかアドバイスをお願い致します。

  • エクセル フィルタで抽出したデータごとに別ファイルを作成したい(マクロ)

    エクセルのフィルタで抽出したデータをタイトル行ごとコピーし、別ファイルを作る、という作業が大量にあります。これをマクロ化したいのですが良い方法はありますか? 出来ればシートに抽出条件の名前を付けて、そのファイル名で保存、までできたらありがたいです。

  • VBA フィルターで抽出したデータを別のファイルの

    VBA フィルターで抽出したデータを別のファイルのシートのセルにヘッダー行とフッター行のあるシートに挿入したい お世話になります。 excel のフィルターで抽出したデータを別のファイルのシートに抽出したデータと同一フォーマットの入っている原紙がありその原紙をコピーしたシートのヘッダー行(A1-A8)の後、9行目からフッター行の手前、52行めまでに貼り付けするを、フィルターで抽出した分繰り返したいのです。原紙 のシートはコピペでしたに20枚ほど作ってあります。 マクロの記述でコピペを繰り返せば作れそうな気はしますが、汎用性が無いので、また私の頭も固いので。 宜しくお願いします。

  • エクセルでデータを抽出し,別シートに転記する方法

    「志望校一覧」というシートに添付ファイルのような書式で約200人のデータが入っています。 これを高校学科別にデータを抽出して書式を変えずに「志望校別」という別のシートに転記したいのですが,何か良いマクロか数式はありますか?実際のデータが入っている行は3行目(A子)から188行までです。並び順は右端のコード順,なおかつ組・番順になると良いのですが…。

  • 複数のシートからデータを抽出し別シートに纏める

    業務で毎日エクセルを使っています。 予め用意された表にデータを入力し、決まった時間にメールに添付して報告しています。 月に一度、毎日入力したデータを別のシートに纏めるのですが、1日分ずつコピペしており、マクロを使って時間短縮できないかと考えるようになりました。 なにぶん最近マクロという言葉を覚えたのでマクロを組むにまでは至っておりません。 どなたか良いアドバイスをいただければと思い、質問させていただきました。 【前提】 業務で使うPCはWindowsXPでExcelは2003です。 入力する表は決まった形式であり、セルの位置も同じです。 1日最大で5シート程使いますが、日によっては1シートの時も2シートの時もあります。 毎報告時に表が全て埋まることはなく、さっき報告した時は5行だったけど次の報告の時は1行だったりします(逆の場合もあります) 月に最大で110シートほどになりますが、先月は70シート程でした。 【やりたいこと/欲しい結果】 ・表のセルからデータがある行を抽出し、別シートに纏める 具体的なセルは、(1)D5~M14の範囲と、(2)D17~M26の範囲です。 ・シート1からシート100の(1)を日付順にまとめて別シート(例:まとめ1)に ・シート1からシート100の(2)を日付順にまとめて別シート(例:まとめ2)に 不慣れな上、質問を頂いてもすぐに返答できないかもしれませんが、よろしくお願い致します。

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

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

  • EXCEL で 数値別に その行を 別sheetの表に 貼り付けたい。

    一回のマクロで 移動できないでしょうか _____________     A   B     C       D 1  日付  コード  仕入れ金額   数量 2  10/2  0098    20       9 3  10/2  0008    21       9 4  10/3  0128    23       10 5  10/4  0098    24       9 6  10/9  0128    23       12 コード0098のデータ行を sheet2 へ コード0128のデータ行を sheet3 へ コード0008のデータ行を sheet4 へ コピーか 移動できないでしょうか? よろしくお願いいたします。

  • book1シート1のデータを別bookシートに移す

    a1シート1のデータ1,2(データ1.5列G行~18列G行,~9000個、データ2.25列G行~38列G行,~9000個)を b1シート1,c1シート1に移行したいのですが、 a1シート1のデータは、9000個と9000個とします。 b1シート1,c1シート1は、16000個前後をできれば最大にしたいと考えています。 このとき移行したいb1シート1(5列G行~18列G行,~16000個)は最終行からでてしまいます。 でてしまう分をc1シート1(5列G行~18列G行,~2000個)に書き移したいと思っています。 分かりやすくと思い9000個と書きましたが、データにより数は、異なっています。 このとき、データ1とデータ2の連結は、空白行なしです。 b1シート,c1シートは、a1シートとは、別bookです。 こんなときのマクロを教えていただければと思い質問しました。 マクロ記録でしましたが、うまくできませんでした。 コードを教えていただけませんか。 よろしくお願いします。 m2010です。

  • Excelで別シートの重複しているデータの

    Excelで重複しているデータの納品数の合計を出したいのですが、COUNTIF等を使ったのですが うまくいきませんでした… ご存知の方教えてください シート1 JANコード  納品数 30972       3 90825      10 497582123    1 シート2 JANコード  納品数 482753      1 30972       10 4564135      1 という表の納品数の合計を出したいです。 シート3 JANコード  納品数合計 30972       13 上記のように別シートに表示は可能でしょうか? わかりづらく申し訳ないです。

専門家に質問してみよう