• ベストアンサー

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

  • ☆Excel VBAでAVERAGE関数を使うとき・・・

    こんにちは。VBA初心者です。 VBAでAVERAGE関数を使いたいのですが、参照範囲を最終行まで指定したい場合、 どのようプログラムすれば良いのでしょうか?     A   B   C    1 5000  2 2000  3 3000  4 1000  5 6000  6  :  7  :    ← A列の値を平均する。           A列には膨大な行が存在すると仮定します。 VBAに詳しい方、教えてください。 どうか、よろしくお願いしますm(_ _)m

  • 加重平均-重みのつけ方

    加重平均の考え方についてお尋ねします。 2つのグループの身長データが次のようにあるとします。  (A)165,176,169,170(B)158,163,166 全てのデータの算術平均は、約166.7になります。 【質問1】このデータに重みをつけて計算をしたいのですが、どのように(ランクとかクラス別や男女別など)重みをつけるべきなのかがそもそも分かっておりません。次のいずれが正しい方法に該当するのでしょうか?該当しない場合もその旨を教えてください。 【質問2】また1)の考え方だけが正しい場合、そもそも加重平均をするには、AとBが同じ属性のデータ(2クラス分の男子データ)の時にのみ統計的に有効なのか?異なる属性データ(Aが男子でBが女子)でも有効なのかも教えていただけると助かります。 1)ABでわける  Aの平均=(170 x4)  Bの平均=(162 x3)  ((170x4)+(162x3))÷(4+3)≒166.7 2)度数分布1(スタージェスの公式)  階級の数n(4)階級の幅(4.5)最小値(158)最大値(176)  (162.5 x1) (167.0 x3) (171.5 x2) (176.0 x1) の4グループに分け計算。総和÷(1+3+2+1)≒168.9 3)度数分布2(単なる思いつきの6センチ間隔)  (158 x1) (164 x1) (170 x4) (176 x1) の4グループに分け計算。総和÷(1+1+4+1)≒168.2 加重計算の結果が通常の算術平均と同じ値になる場合が多く、単なる計算の簡便法なのかと混乱しつつあって、この計算方法の意義がどこにあるのかも分からなくなりつつあります。 相撲部 80kg x3と柔道部 50kg x2の加重平均は68kgで、普通の平均(80+80+80+50+50)÷5でも68Kgで同じ。 製品のボリュームごとに応じて販売単価が異なるような場合に加重平均の計算が活用されると聞いたことがあるのですがどのような表にすればよいのか皆目見当もつきません。

  • エクセル VBAにおける平均計算につきまして

    エクセルにおけるVBAの平均計算に対するプログラミングについて教えてください。 内容としては、 ある列に対して(ここではA列とします)数値が入力されており、 その入力されている範囲は毎回入力する度、入力範囲がまちまちになっているとします。 その「まちまちな入力範囲に対して」平均値をVBAにて求めたい場合、 Averageにて範囲指定を入力する際に、どのようにプログラミングすればよろしいのでしょうか? ※具体的にはA列の「数値が入力されているアクティブなセル」を指定したいのですか、どうすればよいでしょうか? 回答をお願い致します。

  • エクセルVBAで表の平均値を出す。

     はじめまして、よろしくお願いします。 シート2に    A  B  C  D  ・  ・  ・  ・  IV 1       赤  青  ・  ・  ・  ・  ・  2       7  14  ・  ・  ・  ・  ・ 3       6  12  ・  ・  ・  ・  ・ 4       5  10  ・  ・  ・  ・  ・ 5       4  8   ・  ・  ・  ・  ・ 6       3  6   ・  ・  ・  ・  ・ 7       2  4   ・  ・  ・  ・  ・ 8       1  2   ・  ・  ・  ・  ・ 9  という表があります。その表の(C5-C6),(C4-C5),(C3-C4),(C2-C3)の平均値をシート1のC2へ、同じく(D5-D6),(D4-D5),(D3-D4),(D2-D3)の平均値をシート1のD2へ、列IVまで計算するVBAの仕方を教えていただきたいと思います。実際のシートでは計算行数はかなり多くなります。列では途中空白列があります。できる方、よろしくお願いします。

  • 株式発行高の加重平均について

    加重平均で年間の株式発行高を求める計算について質問です。 株式分割などが発生した場合、年の最初から株式が増えていたと仮定して計算するのは何故ですか? どういう理由があるのか、これをやらないとどうなるのか、教えて下さい。 よろしくお願いします。

  • エクセルで計算が出来ません。

    エクセルで表を作成し平均値を出したいのですがどうしても出来ません。教えてください。   A    B   C   D   E   F(合計)     1280    25   4823  325   1   6128      362   2220 1890 466 1 4938 4736 1650 436 1234 1 8056 0 0   0 19122 平均値                             6374 というように平均値を出したいんですが、なん行かの表を作っておいて最後の行で計算をしたいのです。Eの列はFの列がスペースでないときには、1を立たせ入力がないつまり空白のときは、0になるようにしたいのです。最後に入力があった行(1)を足して合計を割れば出来ますが、F行= " ","0","1"とう式は成り立ちません。よい方法を教えてください。 

  • 加重平均と現在使用されている購入材料の求め方

    エクセル初心者です。 以下のような表でB列‐材料購入日、C列‐購入材料重量、D列‐購入材料単価、E列に本日の使用重量を入力すると、D列に加重平均単価を四捨五入で自動計算させたいと思います。 1行目の購入材料から使用していき、使い切ったらわかるように、A列に『済』と表示させたいと思います。自動計算での加重平均の求め方の式と、現在使用中の材料はいつ購入材料なのか?わかるように、使い掛け購入材料の残高がわかるように自動で計算する方法を教えていただけますか。   A  B  C  D   E  D 1 済 1/30  200kg @100  150kg @100  2 済 2/10  250kg @60  120kg @77 3   3/16  300kg @75  100kg @60 4   4/2   100kg @90  220kg @

  • エクセルVBAでのまとめ計算

     初めまして、よろしくお願いします。 データーで    A      B     C     D      E ・・・ 1              5     7      2 2              3     7      0 3 4              6     3      6 5              2     8      3 6              0     3      4 ・     ・      ・      ・      ・ ・     ・      ・      ・      ・ 100             3     4      5 という表がありますA列には(C列の値/(D列以降の平均値))をB列には(C列の値-(D列以降の平均値))を表示させたいと思います。たまに3行のような空白の行があります。関数式ではなく、VBAで解る方、よろしくお願いします。

  • EXCEL VBA 行の値を累計したいのですが・・

    VBA初心者です。 VBAでEXCELの行の値を累計したいのですが、プログラムの仕方がわかりません。 どなたかわかる方教えてください。     A    B   C    D   E ・・・・ 1  1000 3000 2000 4000 3000  2  2000 5000 1000 3000 2000  3  4000 2000 3000 1000 5000   :     実行結果     A    B    C    D    E  ・・・・ 1  1000 4000 6000 10000 13000 2  2000 7000 8000 11000 13000   ←行の値の累計 3  4000 6000 9000 10000 15000 : 行と列はたくさんあって、最後のセルまで累計する方法を教えていただけるとありがたいです。 どうぞよろしくお願いします。m(_ _)m

  • 加重平均距離の計算方法がわかりません

    仕事でこまってますので、よろしくお願いいたします。 あるトラックが、各場所の荷物を集めて、帰ってきたときの加重平均距離を算出したいのですが、数学が苦手でまったく計算式が頭に浮かびません。 a地点--b地点--出発点--c地点--d地点--e地点 |----Akm---|----Ekm-------| -----|-Bkm-|----Dkm--| ----------|-Ckm-| 運搬距離に重みをつけて、平均距離をだしたいので よろしく、ご指導のほど、お願いいたします。<m(__)m>

専門家に質問してみよう