dポイントプレゼントキャンペーン実施中!

エクセルVBAで売上帳を作成しているのですが、毎日の売上・入金を記載しているシートから、顧客別に売上シートを作りたいのです。

作成しているシートは
   A    B     C    D   E   F    G      H
1 日付 顧客NO. 顧客名 品名 数量 単価 売上金額 入金金額



というように作っていて、これを元に顧客NO.を指定すると、該当する行のみを抜き出して、別のシートに転記されるというようにしたいのです。

どのような命令文を作ればよいのでしょうか?

A 回答 (4件)

簡単ですよ。



抽出元データシート:"A"
抽出先データシート:"B"

"A"に貼り付ける行を格納する変数:lSrcRow
"B"に貼り付ける行を格納する変数:lDstRow
"A"→"B"に貼り付ける列を格納する変数:lCol
※変数名の1文字目"l"はLong型の変数ですよという意味です。


1.初期設定
・lSrcRow = 2
・lDstRow = 2

2.顧客番号抽出処理
2-1.lSrcRow行のA列にデータ入力がない場合→END
2-2.lSrcRow行の顧客番号チェック。
    OK?→4.へ。
    NG?→2-3へ。
2-3.lSrcRow = lSrcRow + 1
2-4.2-1に戻る

3.END
処理終了

4.顧客別データ転記処理
・lCol = 1(A列)
4-1.lCol = 1(A列)~ 8(H列)までループ。下記処理を実施。
"B".Cells(lDstRow, lCol) = "A".Cells(lsrcRow, lCol)
4-2.lDstRow = lDstRow + 1
4-3.2-3に戻る。

※4.データ転記処理を別関数にする必要はないと思います。


基本的な処理はこんな感じで、あとはこれに色々アレンジすればできると思いますが。

それにしてもこの表だと、顧客No.と顧客名の入力ミスが懸念されますね。その辺が多少気になりますが。
    • good
    • 0
この回答へのお礼

ありがとうございます。
教えていただいた方法でやってみようと頑張ったのですが、私の知識不足のため、よく理解することができませんでした。

いろいろ調べながらもうちょっと頑張ってみたいと思います。

ちなみに顧客NO.を入力すると顧客名が出てくるようにVLOOLUPを使っています。
一応両方表示されると便利だったので。

お礼日時:2009/03/13 09:47

先ずは、マクロの記録でサンプル作成してみてください。


マクロの記録の開始
1、オートフィルター、抽出したい顧客Noで絞込み
2、1行目からたっぷりと行を選択、コピィ
3、ほかのシートを選択、貼り付け
4、データのシートへ戻って、オートフィルター解除
マクロの記録の終了
少し手直しすればよいと思います。
一例ですが、オートフィルター実行部分を
Selection.AutoFilter Field:=2, Criteria1:=InputBox("ID")
とかINPUTBOXにしてしまえば如何でしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

INPUTBOXの代わりに、指定したセル内に入力したIDで抽出したいのですが、なかなかうまくいきません。

もうちょっと頑張ってみたいと思います。

お礼日時:2009/03/13 09:57

>これを元に顧客NO.を指定すると、該当する行のみを抜き出して、別のシートに転記されるというようにしたいのです。


>どのような命令文を作ればよいのでしょうか?
どのように条件を与えるのでしょう。

あとコピぺ自体はA~H列の範囲で選択するか、A~I列で貼付けた後I列を削除すれば
手作業でもできますが・・・?

それとも顧客別シートへの振り分けを考えているのでしょうか?
だとすると、
>顧客NO.を指定すると
がかみ合わないから違うかな。

この回答への補足

>どのように条件を与えるのでしょう。
指定したセルに顧客NO.を入力すると、別シートにその顧客のみの行を抜き出して転記するようにしたいのです。

全体の売上帳と、顧客ごとの売上帳を作りたかったのですが、毎年稼働する顧客数が何十件にもなるため、必要な時に必要な顧客の売上のみ表示させるようにしたいのです。

手作業でも出来ますが、抜き出しミスなどがあれば困るので、できれば自動で抽出される方法をとりたいのです。

補足日時:2009/03/06 10:32
    • good
    • 0

VBAにこだわっていますか?



これくらいなら、オートフィルタで十分に対応できると思いますが
(コピー処理は手動ですが。。。)。
1.オートフィルタで「顧客NO.」を絞り込み
2.結果をコピー
3.別シートに貼り付け

これで簡単に出来ると思います。

VBAだと、余計手間隙かかりますよ。

この回答への補足

すみません!ひとつ書き忘れました。

I列に差額(売上-入金)が入っているのです。
転記する部分はH列までで、顧客別のシートでは、顧客ごとの差額を
計算させたかったので。

オートフィルタだと差額部分もそのまま抜き出してしまうので、VBAにこだわっていたのです。

説明不足ですみませんでした。
宜しくお願いします。

補足日時:2009/03/05 11:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!