こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excelでシート1に記載した在庫を業者別に別シートにコピーする方法を

Excelでシート1に記載した在庫を業者別に別シートにコピーする方法を教えてください。

急遽上司から棚卸表を作れという指示でExcelVbaを触っております。
上司からの指定では、

A(業者名)B(商品名)C(数量)D(単位)E(金額)
○○○    ○○○○   ○○○   ○○○   ○○○

という順に並んでいるセルの業者の部分で条件に合致するものを別シートに移動させてまとめて欲しい
という要望でした。

色々と調べたところ、VBAを使わないと無理と判明。
しかし、まったくの初心者なので分からず仕舞いです。
どういう命令を書けばいいのかさっぱり検討がつきません。
どなたか教えていただけませんでしょうか?
宜しくお願い致します。

投稿日時 - 2010-08-08 02:06:24

QNo.6094409

すぐに回答ほしいです

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

言われて直ぐ出来るほど、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

投稿日時 - 2010-08-08 10:57:41

お礼

親切にありがとうございました。

確かにExcelの機能を再度みなおしてみます。

VBAを確かに甘く見ていたかもしれません。
他回答を頂きました皆様にも重ね重ねお礼を申し上げます。

ありがとうございました。

投稿日時 - 2010-08-09 20:01:33

ANo.3

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

#2さんと同意見です。
オートフィルタで抽出し、コピペしましょう。

業者が多すぎて、VBAで自動化したいというのであれば、まったくの初心者を自称する人には、そんなVBAは管理できないのでやめておいたほうが良いと思います。


どうしてもVBAで使いたいのであれば、まずは、オートフィルタで出来るようになりましょう。
そしてそれを「マクロの記録」で記録して、それを編集するようにしましょう。

Excelの標準的な機能を使えないのにVBAに手を出しても、苦労するだけです。

投稿日時 - 2010-08-09 13:21:10

ANo.2

業者の数が不明ですが、
少なければオートフィルタで業者毎に抽出をして、
別シートにコピペすればとりあえず出来ると思いますが。

投稿日時 - 2010-08-08 08:35:09

ANo.1

質問の内容がイマイチよくわかりません
何の条件に合致なのですか?

VBAコードをここに書いたところで
それをあなたが運用できるとは思えません

VBEってわかりますか?
モジュールってわかりますか?
どのイベントでコードを走らせるのですか?

配列を理解できますか?


VBAでなくピボットテーブルでできると思いますが

投稿日時 - 2010-08-08 07:38:28

あなたにオススメの質問