- ベストアンサー
Excelで業者別に在庫を別シートにコピーする方法
- Excelでシート1に記載した在庫を業者別に別シートにコピーする方法を教えてください。
- 急遽上司から棚卸表を作れという指示でExcelVbaを触っております。上司からの指定では、A(業者名)B(商品名)C(数量)D(単位)E(金額)という順に並んでいるセルの業者の部分で条件に合致するものを別シートに移動させてまとめて欲しいという要望でした。
- VBAを使わないと無理と判明。しかし、まったくの初心者なので分からず仕舞いです。どういう命令を書けばいいのかさっぱり検討がつきません。どなたか教えていただけませんでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
言われて直ぐ出来るほど、VBAを甘く見てはならない。日頃常々VBAをやっている人が、その問題に応じた疑問点を、その際、急遽勉強するぐらいで無いと。 質問の書きぶりからして、今すぐは無理なレベルと思う。VBAを2-3ヶ月懸命に勉強してからの話。 ーー >VBAを使わないと無理と判明。 EXCELを良く知らずに言っていませんか。これも怪しい気がする。 操作で、データーフィルターフィルタオプションの設定などで出来ないか勉強するほうが相応しいだろう。会社数が多い(20ぐらい超の場合か)と操作が大変だが。 ーーー 質問のポイントが実例などで説明されてないので良く判らない。良くないが、コードを教えてくれ、と言う場合も、具体例が無いと、コードは記述できないのはわかるでしょう。 業者別に別シートに分離できたとして、其れで済みですか。合計など必要なのか、その中の1部を取り、不要な行は捨てるのか具体的なことは書いてない。 ーー データを会社別に別シートにするだけなら、参考までにやってみよう 例データ Sheet1 会社 販売(B、C列) 東京産業 10 大手町建物 20 渋谷木材 30 品川木材 10 目黒物産 20 大久保衣料 30 上野電気 10 東京産業 20 大手町建物 30 渋谷木材 10 品川木材 20 目黒物産 30 大久保衣料 10 上野電気 20 赤羽塗料 30 大久保衣料 10 シートをコピーして、会社でソート Sheet2 B列 C列 会社 販売 赤羽塗料 30 上野電気 10 上野電気 20 大久保衣料 30 大久保衣料 10 大久保衣料 10 大手町建物 20 大手町建物 30 品川木材 10 品川木材 20 渋谷木材 30 渋谷木材 10 東京産業 10 東京産業 20 目黒物産 20 目黒物産 30 コード 標準モジュールに Sub test01() d = Sheets("Sheet2").Range("B65536").End(xlUp).Row 'データ最下行 MsgBox d n = 3 '3番目のシート s = 2 '2行目からデータが始まる。以後sは会社の初出行を示す For i = 3 To d If Sheets("Sheet2").Cells(i, "B") = Cells(s, "B") Then '会社名が同じなら Else Sheets("Sheet2").Range("A" & s & ":C" & (i - 1)).Copy Sheets(n).Range("a2") 'Sheets(n).Name = Cells(s, "B") n = n + 1 s = i End If Next i Sheets("Sheet2").Range("A" & s & ":C" & i).Copy Sheets(n).Range("a2") '最後の戸締り End Sub 手作業で、出現会社数だけの白紙シートを、Sheet2の右すなわち3番目から右に作っておく。(プログラムででも出来るが勉強して。) そして実行 結果 例えばSheet2から三番目のシートは 大久保衣料 30 大久保衣料 10 大久保衣料 10
その他の回答 (3)
- nattocurry
- ベストアンサー率31% (587/1853)
#2さんと同意見です。 オートフィルタで抽出し、コピペしましょう。 業者が多すぎて、VBAで自動化したいというのであれば、まったくの初心者を自称する人には、そんなVBAは管理できないのでやめておいたほうが良いと思います。 どうしてもVBAで使いたいのであれば、まずは、オートフィルタで出来るようになりましょう。 そしてそれを「マクロの記録」で記録して、それを編集するようにしましょう。 Excelの標準的な機能を使えないのにVBAに手を出しても、苦労するだけです。
- n-jun
- ベストアンサー率33% (959/2873)
業者の数が不明ですが、 少なければオートフィルタで業者毎に抽出をして、 別シートにコピペすればとりあえず出来ると思いますが。
- aloha8861
- ベストアンサー率10% (7/70)
質問の内容がイマイチよくわかりません 何の条件に合致なのですか? VBAコードをここに書いたところで それをあなたが運用できるとは思えません VBEってわかりますか? モジュールってわかりますか? どのイベントでコードを走らせるのですか? 配列を理解できますか? VBAでなくピボットテーブルでできると思いますが
お礼
親切にありがとうございました。 確かにExcelの機能を再度みなおしてみます。 VBAを確かに甘く見ていたかもしれません。 他回答を頂きました皆様にも重ね重ねお礼を申し上げます。 ありがとうございました。