• 締切済み

VBAでオートフィルター コピー、ペースト

VBA初心者です。 膨大なデータの計算に悩んでおります。 ご教授ください。 工場の各商品に使われている材料の使用量を各商品と個数を一括で入力し、計算させるエクセルシートを作成したいのですが、 1商品に使用されている材料は5~10種と不特定です。 シート1のA行に品番コード、B行に個数が入っており。(200列程度) シート2に各商品に使用されている材料のマスターがあります。 A行品番コード、B行材料名、C~Fが材料のサイズ指示。 シート1のA5(商品リストの先頭)をセレクトし商品コードをコピー→シート2の材料マスターに移りオートフィルターで商品に使われている材料を選択→該当した材料、サイズ(行A~H)をコピー※列数は商品によって異なるので該当した全てをコピー→シート1の空白(仮にE5とする)にペースト→シート1のA6をセレクトしそれをA行が空白になるまで繰り返す。 という感じで出来るのかと思うのですが、いかがでしょうか。何しろデータが膨大で計算させるにも時間がかかってしまいそうですが・・・ また別な方法で同様な処理ができれば、それも合わせてお願いします。 不備ご不明な点あれば教えてください。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

質問説明が良くわからない。読解に苦労する。 イメージがつながらない。 シート、列、行を特定した模擬実例を書いて質問できないですか。 多列、多行有る場合は5-6列、10行ぐらいの例を作ること。 >計算に悩んでおります 計算ではなく、処理というようなものでは? 何か掛け算・足し算でもするのですか?個数の掛け算? >膨大なデータ 商品数x材料はいくらぐらい? 10x200?そんなに膨大とは見えないが。 >品番コード、B行に個数が入っており。(200列程度) なぜ200列?200行ではない? 普通エクセルはデータを上から下へ展開するもの。 ーー 実例でも挙げられないですか。 シート関係は3つ? シート1ー商品リスト(品番コードー個数)   品番コードは商品に対するもの?材料に関するもの?   商品らしいね> シート2ーマスタ 品番コード(商品に対応?)ー材料名ーサイズ シート3ー完成品(目指すシート)質問には名も出ない。 ーー 商品ーー>材料ーー>個数のブレークダウンの方法は? 商品(=商品コード)からそれを作る複数の材料をシート2のマスターから取ってくる。 サイズ別もとってくる? ==== (1)VBAで手作業でやるようなことを繰り返す方法はある。 (2)しかし商品ー>材料を検索する方法もあると思う。 (3)シート1を(マスタのキー順の)品番コードでソートし、 シート1とシート2をマッチングすればよい。 (4)大量なら、材料分のレコードを分離して作製し、ソートし、マスタとマッチングして、さらにソートして元に戻す手もあり、処理が早いかも知れない。 2以下はロジックになれて居ないとなかなかコードが作れない。 ーーーーー しかし全面的にVBAコードを回答者に書いてもらわないと、ヒントぐらいでは、プログラム作成がおっつかないのではと予想する。(#1のご回答への反応などから) 質問者には現状無理な課題では。 予想模擬実例 シート1 商品コード 個数 1122   34 1134   23 ・・・ シート2 商品コード    材料  型1 型2 ・・・ 1122     ネジ  42 16 1122     板   12  8 1122     モータ  1  2 1122     計器   3  1 1133     マイコン 1 ・・・ ーー シート3   商品コード 個数 1122  34 ネジ  42 16 ・・・ 1122     板   12  8 1122     モータ  1  2 1122     計器   3  1 ==== フィルタの操作の「マクロの記録」を取りどう繰り返しに持ち込むか どうフィルタ結果をコピー貼り付けするか 毎回変わる部分が有るので(例えば貼り付け先)それをどうするか 考えるほか無いでしょう。 ========= Googleで「オートフィルタ VBA コピー」で照会すれば http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_autofilter.html など 沢山、すぐ見つかる。こんな段階までもすぐ行き着かないようでは本件は難しいと思うが。

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.1

EXCEL-VBAの基本が分かってるとして、ですね。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_autofilter.html http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_advancedfilter.html Range("xx").(Advanced/Auto)Filter でフィルタを掛け、 Range("xx").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy でコピーする というのが基本的な考え方です。 なお、関連してこちらのサイトもチェックされると色々と有意義かもです。 http://www.moug.net/tech/exvba/

UOHIDE
質問者

補足

ありがとうございます。 参考にさせていただきます。 VBA初心者なのでサイト確認させていただきましたが、いまいちどれを使えばよいか解決までは時間を要しそうです。 ^^;がんばります。

関連するQ&A