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

こんにちは。VBA初心者なのですが、加重平均のプログラミングの仕方が分からず困っています。

例えば、下の表で、最後の行まで計算する場合、どのようにプログラムするのでしょうか?
(何百行もあり、膨大な計算になると仮定します。)

   A    B    C
1 5,000  100  ___  ←C1に加重平均値
2 3,000  200
3 2,000  400
4  :    :  
5  :    :

かなり困っているので、どなたか助けてください・・・
よろしくお願いしますm(_ _)m

A 回答 (2件)

下記でどうでしょうか。



Dim rngA As String
Dim rngB As String

rngA = Range("A1", Cells(Rows.Count, 1).End(xlUp)).Address
rngB = Range(rngA).Offset(, 1).Address
Range("C1").Formula = "=SUMPRODUCT(" & rngA & "," & rngB & ")/SUM(" & rngB & ")"

あるいは

Dim rngA As Range
Dim rngB As Range

Set rngA = Range("A2", Cells(Rows.Count, 1).End(xlUp))
Set rngB = rngA.Offset(, 1)
With WorksheetFunction
Range("C3").Value = .SumProduct(rngA, rngB) / .Sum(rngB)
End With
    • good
    • 0
この回答へのお礼

無事に解決できました!
xls88さん、どうもありがとうございます!m(_ _)m

お礼日時:2010/01/10 19:50

一列を計算用に設けてはいけませんか?列Dを計算用に使用します。



1)セルD1に式[=A1*B1]を入力。
2)セルD1を「コピー」(だけ)
3)Ctrl+Shift+Endキーを押下。
4)「貼り付け」
5)セルC1に式[=IF(SUM(B:B)=0,"",SUM(D:D)/SUM(B:B))]を入力。
    • good
    • 0
この回答へのお礼

早々のご回答ありがとうございます。
お答えいただいた通り、セル計算でも十分計算可能なのですが、
VBAを使って加重平均をプログラミングしたいんです・・・
もし、おわかりでしたら教えてくださいm(_ _)m

お礼日時:2010/01/10 03:48

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