電子書籍の厳選無料作品が豊富!

初めまして。
どうしてもマクロについて分からないので教えてください。例えば、商品に『りんご』と『みかん』があり、それぞれ3行ずつの内訳の個数が書いてあったとします。
りんごの1行目だけに金額15000円が入っていたとして、のこりのりんごの2行目と3行目にはブランクとします。トータルのりんごの個数を分母にして、分子にそれぞれの行の個数にして按分したとします。
端数がでたときには1行目にプラスします。
また次の行には『みかん』が書いてあり、りんごと同様にみかんだけで個数按分するといった仕組みにしたいと考えています。
どのような構文を書いてよいのかが分かりません。
教えてください。

A 回答 (1件)

Sub 按分()


Dim 合計個数 As Long
Dim 合計金額 As Currency
Dim i As Long
Dim 行数 As Long
行数 = Cells(1, 1).End(xlDown).Row
合計金額 = Cells(1, 2)
合計個数 = WorksheetFunction.Sum(Range(Cells(1, 1), Cells(行数, 1)))
For i = 2 To 行数
Cells(i, 2) = Round(合計金額 * Cells(i, 1) / 合計個数, 0)
Next
Cells(1, 2) = 合計金額 - WorksheetFunction.Sum(Range(Cells(2, 2), Cells(行数, 2)))
End Sub

1列目に個数、2列目に金額として、1行目2列目に合計金額が入っているっているとして
実際は3行ではないのでしょうからLoopを使いました。

この回答への補足

rivoisuさま
早速のご返信ありがとうございます。こんなにレスポンスが速く来るとは思っていませんでした。小生の説明がよくなかったのですが、(画像添付がうまくいきませんでしたので、直接「補足内容」に入力します。
実際は下記のような感じでシートが作成されております。(二重線以下がエクセルシートです。)
A列は商品(りんご、みかんなど)B列は個数(上から15、10、17)
C列は金額(1行目の『りんご』15000、4行目の『みかん』の2000)です。
*商品名 * 個数 * 金額
=================================
1 *りんご * 15(個) * 15000
---------------------------------
2 *りんご * 10(個) *
---------------------------------
3 *りんご * 17 (個) *
---------------------------------
4 *みかん * 5 (個) * 2000
---------------------------------
5 *みかん * 4 (個) *
---------------------------------
6 *みかん * 3(個) *
---------------------------------
rivoisuさまのやり方でマクロを作成してみたのですが、1行目のりんごの¥15,000で『りんご』と『みかん』のトータル個数で按分する結果になりました。(¥2000を5:4:3で割りたいのですが、うまくできませんでした。)
(行数)りんごは1行目から3行目まで、みかんは4行目から6行目までといったように認識させるにはどのようにしたらよろしいのでしょうか。(商品は常にたくさんありますし、その日その日で行数が変わります。)お手数お掛けしますが、助けてください。お願いします。

補足日時:2010/01/21 17:17
    • good
    • 0

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