【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

エクセル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列の値は、各セルとも数式で求められているものです。数式で求められた値はほとんど数値なのですが、中には「※」とかの文字が出てしまうことがあります。
この場合、加重平均の答えがエラーになってくれればいいのですが、上記式だと「※」等の文字列はゼロと扱われてしまうようです。そうすると答えがおかしくなってしまいます。何かいい方法はありませんでしょうか?

A 回答 (4件)

No.2です。



>そしてR行に数値以外が表示されたらエラーにしたいのです。
こういうことでしょうか。

=IF(COUNT(R$4:R$8)=SUMPRODUCT((LEN(R$4:R$8)>0)*1),数式,"")
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/03/17 18:49

No.2です。



>ただ、今回やりたいのはR列に数値以外がきたら、
>計算しないようにしたいのです。
つまり、R列に1つでも数値以外のデータがあれば、計算自体をしないということでしょうか?
それなら、質問欄の数式を、

=IF(COUNT(R$4:R$8)=ROWS(R$4:R$8),数式,"")

のようにすればいいと思います。

この回答への補足

なんどもありがとうございます。わたしの説明が悪くて申し訳けありません。
=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では数式が入っているセルは空白以外になってしまいだめでした。

補足日時:2004/03/17 14:28
    • good
    • 0

こんにちは。

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)

としないとエラーになります。

この回答への補足

早速ありがとうございます。
ご教示の式はR列が数値でないものは分母から除いてるわけですね。
これはこれでとても助かりました。ありがとうございます。

ただ、今回やりたいのはR列に数値以外がきたら、計算しないようにしたいのです。
どう変えればいいのでしょうか?

補足日時:2004/03/17 12:45
    • good
    • 0

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)

この回答への補足

早速ありがとうございます。
ご教示の式はR列が数値でないものは分母から除いてるわけですね。
これはこれでとても助かりました。ありがとうございます。

ただ、今回やりたいのはR列に数値以外がきたら、計算しないようにしたいのです。
どう変えればいいのでしょうか?

補足日時:2004/03/17 12:48
    • good
    • 0

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


おすすめ情報