御自力で管理が大変なようでしたら無料のソフトの利用はどうでしょうか?
maxmaシステムズ 『 こりゃ楽だ 』
http://www002.upp.so-net.ne.jp/BeHapppy/welcom.html
ご参考まで。
世良満久
〆
▽2
●
a-kuma3 ●400ポイント ベストアンサー |
マクロを書いてみました。
process_slip を実行すると、「★」シートから「納品書」シートにデータをコピーして印刷します。
Const MAX_ROW = 10000 ' 突っ走るのが怖いので Sub clear_slip() Set s_slip = Worksheets("納品書") s_slip.Range("B19:H35").ClearContents End Sub Sub make_slip(r1, r2) Set s_list = Worksheets("★") Set s_slip = Worksheets("納品書") s_slip.Cells(4, 2).Value = s_list.Cells(r1, 6).Value ' 氏名 ← F列 ※ここを追加しました s_slip.Cells(6, 4).Value = s_list.Cells(r1, 8).Value ' 〒 ← H列 s_slip.Cells(7, 2).Value = s_list.Cells(r1, 9).Value ' 住所 ← I列 s_slip.Cells(13, 3).Value = s_list.Cells(r1, 10).Value ' 電話番号 ← J列 r_to = 19 s1 = s2 = s3 = 0 For r = r1 To r2 s_slip.Cells(r_to, 2).Value = s_list.Cells(r, 1).Value ' 商品名 ← A列 s_slip.Cells(r_to, 8).Value = s_list.Cells(r, 3).Value ' 金額 ← C列 s1 = s1 + s_list.Cells(r, 3).Value ' 金額 ← C列 s2 = s2 + s_list.Cells(r, 4).Value ' 送料 ← D列 s3 = s3 + s_list.Cells(r, 5).Value ' 合計 ← E列 r_to = r_to + 1 Next s_slip.Cells(36, 8).Value = s1 s_slip.Cells(38, 8).Value = s2 s_slip.Cells(39, 8).Value = s3 End Sub Sub print_slip() Set s_slip = Worksheets("納品書") s_slip.PrintOut Preview:=False End Sub Sub process_slip() Set s_list = Worksheets("★") Set s_slip = Worksheets("納品書") r1 = 2 r2 = 3 Do While r2 < MAX_ROW If s_list.Cells(r1, 6).Value <> s_list.Cells(r2, 6).Value Then For r = r1 To r2 - 1 Step 17 Call clear_slip rr = r + 16 If rr > r2 - 1 Then rr = r2 - 1 End If Call make_slip(r, rr) Call print_slip Next r1 = r2 If IsEmpty(s_list.Cells(r1, 6)) Or s_list.Cells(r1, 6).Value = "" Then Exit Do End If End If r2 = r2 + 1 Loop End Sub
以下のことを前提としてます。
で、質問の画像では文字がつぶれてたので、よく分からなかったところがあります。
意図通りになっていないところがあるかもしれません。
以下のように値を複写しています。
因みに、氏名は一覧から複写しなくても良かったんでしょうか。納品書だから、手書きにするということかな、という気もしてますが。
後、お金に絡むことなんで、一応、免責事項を書いておきます(ビビリです X-|
金額の確認は、人間の目でしっかりとお願いします。
(免責事項)
マクロの処理・計算の間違いによる損害が出ても、私は一切の責任を負担しません。
利用は、自己責任でお願いします。