アプリ版:「スタンプのみでお礼する」機能のリリースについて

またまた教えてください。
エクセルで注文書を発行印刷したいのです。
Sheet1に注文すべきデータだあります。
セルA1から
仕入先コード 仕入先名 商品コード 商品番号 品目名 単価 注文数
 001      AAA   A111    A001  ABC   100  10
 001      AAA   A112    A002  ADD   200  50
 050      FFF   F555    F051  TYI   500  10
があります。
Sheet2には注文書のフォームがあります。明細行は7桁です。
このとき、仕入先は二つあります。001  と  050 
最初に001を印刷し連続して050を印刷する。仕入先をグループをして
印刷はできるのでしょうか?

A 回答 (1件)

こういう問題はVBAでやるべき課題である。


ーー
説明も大変だが、関数で途中まではやってみる。じっくり考えてみてください。
仕入先コード順に並んでいるのが大前提。
ーー
例データ Sheet1 A-H列 H列は作業列
仕入先コード仕入先名商品コード商品番号品目名単価注文数キー作業列
1田中建材A111A001セメント1001000101
1田中建材A112A002砂2005000102
1田中建材A113A003砂利3002000103
50鈴木塗料F555F051壁塗料5001005001
50鈴木塗料F556G210フィルム1001505002
ーー
H2に =TEXT(A2,"000")&TEXT(COUNTIF($A$2:A2,A2),"00")
と入れて下方向に式を複写。
結果上記H列。
この例では、999社、請求は1社9件以内の仕組みとしている。9999や99などに変えることは出来る。どう変えたらよいかわかりますか?
ーーー
Sheet2
B3:E10
仕入先コード仕入先名     3行目
1田中建材          4行め

請求件数3          6行目
商品コード商品番号品目名   以下9行明細
A111A001セメント
A112A002砂
A113A003砂利

D4 田中建材 =VLOOKUP(B4,Sheet1!$A$1:$B$100,2,FALSE)
D6 請求件数 =COUNTIF(Sheet1!$A1:$A$100,$B$4)
C8 商品コード =IF(ROW()-7>$D$6,"",INDEX(Sheet1!$C$1:$E$100,MATCH(TEXT($B$4,"000")&TEXT(ROW()-7,"00"),Sheet1!$H$1:$H$100,0),1))
D8 商品番号 =IF(ROW()-7>$D$6,"",INDEX(Sheet1!$C$1:$E$100,MATCH(TEXT($B$4,"000")&TEXT(ROW()-7,"00"),Sheet1!$H$1:$H$100,0),2))
E8 品目名 =IF(ROW()-7>$D$6,"",INDEX(Sheet1!$C$1:$E$100,MATCH(TEXT($B$4,"000")&TEXT(ROW()-7,"00"),Sheet1!$H$1:$H$100,0),3))
最後の引数だけ1->2->3と変わるだけ。
単価、注文数は長くなるので省略。類推のこと。
C8:E8を下方向に式を9行複写
結果
上表のとおり。
B4セルの仕入先コードを50 に変えると
仕入先コード仕入先名
50鈴木塗料

請求件数2
商品コード商品番号品目名
F555F051壁塗料
F556G210フィルム

ーーー
問題は明細数には限りがある。超えたときどうするか。
仕入先コードを1->50-->・・と変化させつつ、印刷をしないとならない。
これは自動的にやるには、VBAの世界です。
==
以上関数では、相当複雑で、十分で無いことがわかったでしょう。VBAを勉強してください。
VBAでやればもっとすっきりプログラムが組める。
    • good
    • 0
この回答へのお礼

ありがとうございます。もっとVBA勉強しなければとおもいました。

お礼日時:2008/07/29 16:49

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