• ベストアンサー

excel のマクロ を教えてください。

当方 XP で 2000 です。以下の様な処理を行いと思うのですが、どうしても分りません。 名前 入金額 月分 A 4,000 H21年3月分 A 800 H21年4月分 C 2,000 H21年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行あるので、どうしてもわかりません。 宜しくお願いします。

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

  • ベストアンサー
回答No.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("処理終了!!")

nonnbee
質問者

お礼

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

nonnbee
質問者

補足

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

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • FEX2053
  • ベストアンサー率37% (7995/21384)
回答No.1

コードは分かる方とお見受けしますので発想だけ。 要は「名前・期間単位で集計して、ブレークしたら印刷」で良いわけで、 「ブレークする条件に"名前"と"期間"の2つがある」と考えれば済みます。 当然その外側に「レコードが終わってないか」という判断も必要ですから ループは2重になりますね。 即ち、内側のループは Do~ Loop While (名前が同じ) or (期間が同じ) という発想で済むはずです。ブレークした後は合計値を0にして、 最後まで繰り返せば良いだけですから、その外側に Do~ Loop While (金額>0) これで外側のループはいいはずです。

nonnbee
質問者

補足

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

すると、全ての回答が全文表示されます。

関連するQ&A