- 締切済み
マクロにおける按分について
初めまして。 どうしてもマクロについて分からないので教えてください。例えば、商品に『りんご』と『みかん』があり、それぞれ3行ずつの内訳の個数が書いてあったとします。 りんごの1行目だけに金額15000円が入っていたとして、のこりのりんごの2行目と3行目にはブランクとします。トータルのりんごの個数を分母にして、分子にそれぞれの行の個数にして按分したとします。 端数がでたときには1行目にプラスします。 また次の行には『みかん』が書いてあり、りんごと同様にみかんだけで個数按分するといった仕組みにしたいと考えています。 どのような構文を書いてよいのかが分かりません。 教えてください。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- rivoisu
- ベストアンサー率36% (97/264)
回答No.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行目までといったように認識させるにはどのようにしたらよろしいのでしょうか。(商品は常にたくさんありますし、その日その日で行数が変わります。)お手数お掛けしますが、助けてください。お願いします。