• ベストアンサー

Excel VBAで加重平均を計算したい!

こんにちは。VBA初心者なのですが、加重平均のプログラミングの仕方が分からず困っています。 例えば、下の表で、最後の行まで計算する場合、どのようにプログラムするのでしょうか? (何百行もあり、膨大な計算になると仮定します。)    A    B    C 1 5,000  100  ___  ←C1に加重平均値 2 3,000  200 3 2,000  400 4  :    :   5  :    : かなり困っているので、どなたか助けてください・・・ よろしくお願いしますm(_ _)m

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

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.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

VBAbiginer
質問者

お礼

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

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

一列を計算用に設けてはいけませんか?列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))]を入力。

VBAbiginer
質問者

お礼

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

関連するQ&A

専門家に質問してみよう