最速怪談選手権

当方 XP で 2000 です。以下の様な処理を行いと思うのですが、どうしても分りません。
名前 入金額 月分
A 4,000 H21年3月分
A 800 H21年4月分
C 2,000H21年4月分
E 3,900 H21年3月分
E 2,100 H21年4月分
E 1,300 H21年5月分 のデータを以下の
ようプリントする。
(領収書)
A 4,800 H21年3月分
H21年4月分 プリント
(領収書)
C 2,000 H21年4月分 プリント
(領収書)
E 7,300 H21年3月分
H21年4月分
H21年5月分 プリント
1顧客1行でしたら Do~Loop で出来るのですが、n行あるので、どうしてもわかりません。
宜しくお願いします。

A 回答 (2件)

デジタルライフ > ソフトウェア > Office系ソフト で質問した方が回答がたくさん来ますよ。



例えば、セル(i,x) からのデータの取得とブレーク処理はこんな感じでできます。

'1~3列目のデータを、11~13列目にコピーして印刷する場合
i = 2
j = 1
Do
Namae = Cells(i, 2).Value   '2列目の名前を取得
Kingaku = Cells(i, 3).Value   '3列目の金額を取得
Tsuki = Cells(i, 4).Value   '4列目の月を取得

'ブレーク処理
If Namae <> Namae0 And i > 2 Then    '名前が1つ前と違うか?(1個目は除く)
GoSub PrintShori   '11~13列をプリントする処理へ
xxx   '11列~13列をクリアする処理をここに入れる
j = 1   '印刷対象の行をリセット
ElseIf Namae = "" Then   '終了条件 データがなかったら抜ける
Exit Do
End If

Cells(j, 11).Value = Namae   '11列目にコピーしておく
Cells(j, 12).Value = Kingaku
Cells(j, 13).Value = Tsuki

Namae0 = Namae   '次の処理のために名前を覚えておく
j = j + 1
i = i + 1
Loop
a = MsgBox("処理終了!!")

この回答への補足

各入金データそのままの明細は出来ましたが、名前は1つ 金額は合計 月分は明細でプリントしたいのですが、よく分りません。

補足日時:2009/06/20 14:35
    • good
    • 0
この回答へのお礼

入口が デジタルライフ とは夢にも思いませんでした。
仕事の関係で利用させていただいてましたので ず~と このカテゴリーでしか おもいつかなかったです。
違うところにず~といて、本当の居場所をやっと発見したと言った気持ちで、本当にうれしくなりました。
ありがとうございました。

お礼日時:2009/06/20 09:08

コードは分かる方とお見受けしますので発想だけ。



要は「名前・期間単位で集計して、ブレークしたら印刷」で良いわけで、
「ブレークする条件に"名前"と"期間"の2つがある」と考えれば済みます。
当然その外側に「レコードが終わってないか」という判断も必要ですから
ループは2重になりますね。

即ち、内側のループは

Do~ Loop While (名前が同じ) or (期間が同じ)

という発想で済むはずです。ブレークした後は合計値を0にして、
最後まで繰り返せば良いだけですから、その外側に

Do~ Loop While (金額>0)

これで外側のループはいいはずです。

この回答への補足

実は、コードも余り分っていません。VLOOKUP を使うのか INDEX を使うのか、変わるセル位置をどう指定するのかよく分りません。

補足日時:2009/06/19 17:38
    • good
    • 0

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