• ベストアンサー

エクセルで加重平均を求めたい

エクセル2000です。 $D$4:$D$8の数列にR$4:R$8の数列を乗じ、その合計を$D$4:$D$8の数列の和で除して加重平均を求めたいのですが、一応、以下の関数で出来ました。 =ROUND(SUMPRODUCT($D$4:$D$8,R$4:R$8)/SUM($D$4:$D$8),3) 問題は、D列には数値しか入ることがないのでいいのですが、R列の値は、各セルとも数式で求められているものです。数式で求められた値はほとんど数値なのですが、中には「※」とかの文字が出てしまうことがあります。 この場合、加重平均の答えがエラーになってくれればいいのですが、上記式だと「※」等の文字列はゼロと扱われてしまうようです。そうすると答えがおかしくなってしまいます。何かいい方法はありませんでしょうか?

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.4

No.2です。 >そしてR行に数値以外が表示されたらエラーにしたいのです。 こういうことでしょうか。 =IF(COUNT(R$4:R$8)=SUMPRODUCT((LEN(R$4:R$8)>0)*1),数式,"")

shishishishi
質問者

お礼

ほんとに何度もありがとうございました! ええ、まさにこれです!そうかこうやればいいんですね。 ありがとうございました。

その他の回答 (3)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

No.2です。 >ただ、今回やりたいのはR列に数値以外がきたら、 >計算しないようにしたいのです。 つまり、R列に1つでも数値以外のデータがあれば、計算自体をしないということでしょうか? それなら、質問欄の数式を、 =IF(COUNT(R$4:R$8)=ROWS(R$4:R$8),数式,"") のようにすればいいと思います。

shishishishi
質問者

補足

なんどもありがとうございます。わたしの説明が悪くて申し訳けありません。 =IF(COUNT(R$4:R$8)=ROWS(R$4:R$8),数式,"") ではR列の5つのセル全てに数値が入らないとエラーになりますが、したいことはそうではないのです。 D列とR列が対になっており、D列に入力がない限りおなじ行のR列は "" です。ですから2行の場合も3行の場合もあります。そしてR行に数値以外が表示されたらエラーにしたいのです。 D4 に 2000 R4に 0.5 D5 に 1000 R5に 0.8 D6 に 1500 R6に ※等 この場合エラー COUNTで数値の数を求め、COUNTAで空白以外のセル数を求め、一致しなければエラーにしようとも思いましたが、COUNTAでは数式が入っているセルは空白以外になってしまいだめでした。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 No.1の方の2つ目の数式は、 =ROUND(SUMPRODUCT($D$4:$D$8,R$4:R$8)/SUMPRODUCT($D$4:$D$8,ISNUMBER(R$4:R$8)*1),3) としないとエラーになります。

shishishishi
質問者

補足

早速ありがとうございます。 ご教示の式はR列が数値でないものは分母から除いてるわけですね。 これはこれでとても助かりました。ありがとうございます。 ただ、今回やりたいのはR列に数値以外がきたら、計算しないようにしたいのです。 どう変えればいいのでしょうか?

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

R列が文字の行を計算しない場合 文字が特定のものなら =ROUND(SUMPRODUCT($D$4:$D$8,R$4:R$8)/SUMIF(R$4:R$8,"<>※",$D$4:$D$8),3) 文字が不特定の場合は =ROUND(SUMPRODUCT($D$4:$D$8,R$4:R$8)/SUMPRODUCT($D$4:$D$8,ISNUMBER(R$4:R$8)),3)

shishishishi
質問者

補足

早速ありがとうございます。 ご教示の式はR列が数値でないものは分母から除いてるわけですね。 これはこれでとても助かりました。ありがとうございます。 ただ、今回やりたいのはR列に数値以外がきたら、計算しないようにしたいのです。 どう変えればいいのでしょうか?

関連するQ&A

  • エクセルの関数式を教えてください(加重平均について)

    加重平均値(4.5)は予め決めていますので、 配列の一部を求める関数式を教えてください。 (質問の内容) 以下のu~zの値を求めたいです。        A       B 1      0       u 2      6       v 3      1       w 4     7       x 5     4      y 6     4      z          4.5 (通常の加重平均の求め方)      A      B 1      0      0.1 2     6       0.3 3     1      0.1 4     7      0.2 5     4      0.2 6     4       0.1          =SUMPRODUCT(A1:A6,B1:B6)=4.5 以上で4.5が返されます。 よろしくお願いします。

  • エクセルで数式の入ったセルの平均値を出したい

    こんにちは 教えていただきたいのですが、エクセルの数式が入ったセルの平均値を出したいのです。 例えば、 D5-F5列:ifやsum文で組み立てた数式の結果 G5列:上記セルの平均値 Ctrl+Shiftを押しながらD-Fを選ぶとできると聞いたこともあったのですが、やはり結果は、#DIV/O!になってしまいます。 D-Fには、空白もあり、その結果を出す数値は流動的になります。 すみませんが、教えてください。よろしくお願いいたします。

  • 平均の出し方

    Excel初心者です。 下記のような平均を出す関数を教えてください。 日毎に3列使い、日々の処理数を集計しています。 A列、B列、D列、E列は数値又は空欄。 日計:C列はsum(A:B) 日計:F列はsum(D:E) 月合計計:Q列はsum(C,F・・・) Z列に処理平均を出したい。 C列とF列の値がゼロの時は平均の対象外にする。 average(C4,F4)とすると、数式が入っているせいか、結果が1.5になってしまいます。 ここにゼロや数式が入っているセルを除いた平均を出し、Z4に3と出るようにしたいです。 範囲が10個以上あるので、範囲指定もうまくできません。   A   B   C     D    E    F  ・・・    Q        Z 1 9/1           9/2               9月 2 午前 午後 終日  午前 午後 終日       月合計   処理平均 3  4   1   5    1    3   4         9       4.5 4               2    1   3         3        3 5  1   5   6                      6        6 6  6   1   7    5       5         12        6 宜しくお願い致します。

  • Excelの使い方

    Excelの中のある列にデータ(数値)が入っていて、次の列に(ある行に対して)前の列の数値の平均値を計算した値を表示したいんですが数式とかどう書いたらいいですか?たとえば行をG、列をRとすると、前の列に3つの平均をとる場合 G1R1 | G2R1 | G2R2(ここに←の3つの平均) G3R1 | って感じでG2R2のところに左の(前の列)の平均を表示させたいんですけど、どういう数式を書けばできますか?

  • 《エクセル》 平均値の求め方

    いつもお世話になります。 列Aに分類、列Bに数値がある場合に、「列Aの重複する分類の平均値を求める。ただし、列Bの値がゼロや空白だった場合、それを計算から除外する」という配列数式を組みたいのですが、うまくいきません。 お手数ですが、宜しくお願い致します。

  • Excelで、複数列の和を求める式

    Excelで、A1~A10,B1~B10,C1~C10,D1~D10にそれぞれ値があり、E列に、E1にA1からD1までの和、E2にA2からD2までの和、のようにE10まで出したいと思います。E1=SUM(A1:D1)として、下にコピーすればできますが、「E1からE10までの配列数式」として求める式はありますか。SUMの":"と、配列数式の":"が重複してうまくできません。

  • =SUM(ROUND(A1,0),ROUND(A3,0),ROUND(A10,0))をもっと簡単に

    エクセル200です。 A1、A3、A10の各セルにある数値を四捨五入してから合計するのに =SUM(ROUND(A1,0),ROUND(A3,0),ROUND(A10,0)) でできるのはもちろん存じておりますが、もっと簡単に書く方法はないでしょうか? A2、A4からA9までのセルが空白であれば =SUMPRODUCT(ROUND(A1:A10,0)*1) A2、A4からA9までのセルが文字列であれば {=SUM(IF(ISNUMBER(A1:A10),ROUND(A1:A10,0),""))}(配列数式) でできるのですが、数値であるために使えません。 上記のA1、A3、A10はあくまで一例で、実際は同一列ではありますがもっとセル数が多いのです。そのため簡単に書ける方法を探しています。 よい方法があればご教示くださいませ。

  • エクセルで、入力のないセルを無視した計算

    おせわになります。      A  B  C   1  3     5   2  4     3   3  2     1 SUM 9  0  9 → 平均 6 上のような、シートがあり、合計、平均が、に数式が設定されており、A,B,C列に数値を入力すると自動で計算されますが、B列に数値を入れない場合があり、このとき、合計に0を返すため、平均値が間違った値になります。これを回避する方法を教えてください。 基本的には、合計の数式をなんとかする事になると思うのですが。。。

  • Excelで可変範囲内での平均値を出したい

    特定の範囲内で0以上の数値が入っている箇所までの平均値をだしたいのですが 関数でできますでしょうか。 【例】 A B C D E F --------------------------- 10 0 2  0 0 0 この場合、A列~C列までの平均値(4)を出したいです。 また、各数値は関数(SUM(A1:A2)等)で出力されており、可変になります。 エクセル初心者ですみませんが、よろしくお願いいたします。

  • エクセルの簡単な表計算の方法

    単に合計の数式が知りたいだけなのですが、 例)A2:A6の数値とD2:D6の数値を足す場合 数式はどうなりますか? =SUM(A2:A6)+(D2:D6)とか=SUM(A2:A6+D2:D6)では正しい答えが出ませんでした。 よろしくお願いします。

専門家に質問してみよう