電子書籍の厳選無料作品が豊富!

エクセル2000
で平均を出しています。
アベレッジ関数で出しましたが,
1,2,3,0という4つの数の平均を出すとき
0は含まないで計算させたいときはどうしたらいいでしょうか?
コントロールで1,2,3を選択してというやり方はわかりますが,
その0が1,2,0.3という並び方もあるんです。
オートフィルで関数をコピーしたいので,
0がある場合は0を省きそのほかを平均するという関数の入れ方を教えてください。

A 回答 (7件)

あやや。

おはずかしい。
マイナスの存在忘れてました(汗

別々の場所に入ってる数値。ですか。
COUNTIFの関数の対象が、<範囲>のため、個別セルの選択ができないみたいですね。
ならば、

=SUM(a1,c1,e1)/(COUNT(a1:e1)-COUNTIF(a1:e1,"=0"))

a1からe1の間に、対象となる数値以外の数値がなければ、これで出るはずです。

もし、対象がa列、c列、e列で固定とかなら、

=SUM(a1,c1,e1)/(COUNTIF(a1:a1,"<>0")+COUNTIF(c1:c1,"<>0")+COUNTIF(e1:e1,"<>0"))

こうすればいいんですけど。。。。。なんか、スマートじゃないですね(汗

素直に、計算で使用したい数値を別のセルへ抜き出し、連続した範囲にしてから、
CUNTIFなり、DCOUNTなりを使って計算したほうがよさげですね。
    • good
    • 0

> 私のデータは個別選択なのです。


> (a1,c1,e1)

一番簡単なのは、どこか別の場所に持っていって数える O_Denwaさんの方法
ですね。たとえばf101:f103あたりに =a1 =c1 =e1 としておいてcountifで
数えると。

あと、b1やd1が文字列や空白文字("")の場合はcountif(a1:e1, "<>0")だと数に
入れちゃうけどcountif(a1:e1, ">0")ならはじくので、数値が必ず正ならそっち
を使うという手口も考えられるし、ちょっと複雑になるけど配列を使って
{=sum(not(iserror(a1/a1))*1, not(iserror(c1/c1))*1, not(iserror(e1/e1))*1, )}
なんてヤルととびとびの範囲で0でない数値の個数を数えてくれますが、なにを
やってるのかわけがわかんなくなりやすいので推奨しません。
    • good
    • 0
この回答へのお礼

ありがとうございました。
連続データに直してみます。

お礼日時:2002/08/06 10:51

平均=合計/件数の基本式に返る。

AVERAGE関数を使わない。
件数が曲者なんですが、COUNT関係の関数は
COUNT,COUNTA、COUNTIF,DCOUNT
DCOUNTA,COUNTBLANK等あります。
ここではDCOUNTAを使います。
A1セルからA10セルまで
計数
1
0
2
3
4
0
5
小計
6
とし何処でも良いがE1:E2に
計数
>0
と入れる。
件数は=DCOUNTA(A1:A10,1,E1:E2)で出ます。上記例で6。
特徴は0を数えない。文字の入っているセルも数えない。

この回答への補足

ありがとうございます。
a1:a10とするとうまくいきました。
でも。
a1,d1,f1などのようにデータが飛んでいる場合はどうしたらいいでしょうか?
飛んでいるデータで試してみたら,
エラーになってしまいました。

補足日時:2002/08/05 11:37
    • good
    • 0

合計は0があってもなくても同じです。

だから合計を「0以外のデータの個数」で
割ってやれば「0を無視した平均」がでるわけです。

=sum(データ範囲)/countif(データ範囲, "<>0")

データが必ず正の数であるなら、O_Denwaさんの条件でもいいです。小学校5年か
6年レベルの問題ですね。

この回答への補足

ありがとうございます。
データ範囲の部分が連続範囲ならいいのですが。(a1:c1)
私のデータは個別選択なのです。
(a1,c1,e1)
この場合にはエラーになってしまうのですが,
どうしたらいいでしょうか?

補足日時:2002/08/05 11:04
    • good
    • 0

Excelの関数って詳しくないので、よくしらんのですが、


アベレージ関数使わずに、平均出したらどうでしょうか?
A1からA4までに数字が入ってるとして、

=SUM(A1:A4)/COUNTIF(A1:A4,">0")

こんな感じで出ませんか?

この回答への補足

ありがとうございます・
連続データでやっみるとうまくいきました。
でも,a1,c1,e1などのように個別選択でするとエラーが出てしまいます。
どうしたらいいですか?

補足日時:2002/08/05 10:45
    • good
    • 1

こんにちは



僕は、あまり関数が複雑になるのが個人的にいやなので
こんな方法でやっています。

1.平均を取る数値のセルの横に非表示のセルを設ける
2.そこに、ゼロ以外なら平均取るセルの値を入れる
=IF(A1<>0,A1,"")
3.平均取るセルではなくて2.のセルで平均を取る
これなら、空白セルは平均に含まれないのでゼロを含みません。

直接回答になってないので、あくまでも、参考にしてください
    • good
    • 0

こんにちは。


直接セロを無視する関数は知らないのですが、

AVERAGE関数は数字以外の文字を無視するので、

数値がゼロなら、文字に変換するなど(例えば、=IF(A1=0,"*",A1)とか・・)
してもうひとつ数字の羅列を書き出し、その羅列に対して
AVERAGE関数を適用してはどうでしょう。
その計算用の羅列の行なり列なりを非表示にすれば、
最終的なみてくれも問題ないと思います。
    • good
    • 0
この回答へのお礼

ありがとうございました。
参考になりました。

お礼日時:2002/08/06 10:50

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