一回も披露したことのない豆知識

たびたび恐れ入ります。現在、アンケートの集計をしています。

B列に価格、C列に1~4の数値もしくはブランクが入っています。

「C列が1のものの価格の平均値を出す」のが目的で、配列数式の式は

{=AVERAGE(IF(C2:C100=1,B2:B100,""))}

としました。

一応それらしい答えが出ましたので、念のためフィルタをかけてC列が1のもののみを表示させ、SUBTOTAL関数を使って平均値を出すと、配列形式で出した数値とは微妙に違ってしまいます。

手計算をすると、SUBTOTAL関数を使った場合と同じ値になりますのでおそらくそちらが正しいのだと思います。

答えが変わってしまうのは、どうしてでしょうか?
以後同様に、配列数式を多用する予定ですので、非常に困っています。

どうかよろしくお願い致します。

A 回答 (1件)

当たっているかどうかはわかりませんが:


C列のデータの中に、数値でなく文字列の"1"が入っているとAVERAGEとSUBTOTALは異なる結果を返します。
(AVERAGEは文字列"1"の行を無視し、SUBTOTALは文字列"1"の行を含めます)
    • good
    • 0
この回答へのお礼

こちらの回答が大きなヒントになり、自己解決できました。

C列が1でB列がブランクの場合、配列数式ですとアプリケーションがブランクを0としてしまっているのが原因のようです。
(平均を出す時の、分母の数字が大きくなってしまう)

平均値を出すので、「データなし」と「0」では大きく意味合いが違ってしまうので、また新たな問題が発生しましたが、謎が解決しお陰様ですっきりしました。

どうもありがとうございました。

お礼日時:2005/08/31 10:37

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