- ベストアンサー
EXCELで0を除いた平均値を求めるには?
表記内容の例題として、A1からA10まで数字があります。 A 1 10 2 12 3 0 4 0 5 15 6 0 7 10 ・ ・ ・ ・ ・ ・ 10 12 上記内容の場合、0を除いた平均値は SUM(A1:A10)/COUNTIF(A1:A10,"<>0")となるかと思います。しかし、例えばA2からA4までを非表示にした場合も内容が変わりません。表示されている項目のみで且つ、0を除外した計算式はどのような関数が良いのでしょうか? よろしくお願い致します。
- XXwaiwaiXX
- お礼率26% (4/15)
- オフィス系ソフト
- 回答数2
- ありがとう数1
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
まず XXwaiwaiXX さんが書かれた計算式では分母が"8"になり、非表示にする前の計算も正しい答えは出ないと思います。8~9行もカウントされるからです。 分母は COUNTIF(A1:A10,">0") とします。 次に「例えばA2からA4までを非表示にした場合」と書かれていますが、どのような操作で非表示にするのでしょうか。推定としては次の2つの方法が考えられますが、それについてこう言う方法もありますということで書いてみます。非表示の方法がもし違ってたらごめんなさい。 (1) A2からA4を行ごと(2~4行)非表示にする場合。 A B 1 1 10 2 0 12 3 0 0 4 0 0 5 1 15 6 1 0 7 1 10 ・ ・ ・ ・ 10 1 12 上記のようにA列の前に新たに列をもうけ例えば非表示にする行には"0"を、また表示させたい列には"1"入れる。合計を表示させるセル(B11)に次の式を入れます。 式 =SUMIF(A1:A10,1,B1:B10)/COUNTI(B1:B10,">0") これにより2~4行を非表示にしても答えは同じ。 (2)非表示にするのにオートフィルターを用いる場合。 A B 1 a b 2 1 10 3 0 12 4 0 0 5 0 0 6 1 15 7 1 0 8 1 10 ・ ・ ・ ・ 11 1 12 上記のように1行目の前に行を1行追加し、列の項目に名前をつける(a,b)表中の任意のセルをクリックし「データ」「フィルター」「オートフィルター」をクリックし、a の矢印をクリックし"1" を選ぶ。 B12 には次の式を入れる =SUBTOTAL(9,B2:B11)/COUNTIF(B2:B11,">0")
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 これは、汎用性のあるユーザー定義関数SUMTOTALです。 使用法は、 'VSUM(集計方法,範囲,ゼロオプション) で、集計方法は、 1 は AVERAGE 2 は COUNT 3 は COUNT 9 は SUM です。 ゼロオプションは、デフォルトはFALSE ですが、TRUE を入れると0を勘定にいれません。また、文字列も、現在の場合、勘定には入れません。(ゼロの扱いはしない、ということです) なお、とりわけ、質問のみということではなく、汎用性や発展性を考えた関数です。 こういうスタイルをお望みでない場合は、また、ご相談ください。他の方法を考えてみます。 '----------------------------------------- '<標準モジュール登録> Function VSUM(集計方法 As Integer, _ 範囲 As Range, _ Optional ゼロオプション As Boolean) As Double 'VSUM(集計方法,範囲,ゼロオプション) '非表示になっている行は集計しない Dim c As Variant, i As Long, Sum As Double, Z As Boolean If ゼロオプション = True Then Z = True Select Case 集計方法 Case 1 '平均 For Each c In 範囲 If c.EntireRow.Hidden = False Then If Z = True And c.Value <> 0 And VarType(c) = vbDouble Then Sum = Sum + c.Value i = i + 1 ElseIf Z = False And VarType(c) = vbDouble Then Sum = Sum + c.Value i = i + 1 End If End If Next Sum = Sum / i Case 2 'Count For Each c In 範囲 If c.EntireRow.Hidden = False Then If VarType(c) = vbDouble Then If Z = True And c.Value <> 0 Then i = i + 1 ElseIf Z = False Then i = i + 1 End If End If End If Next Sum = i Case 3 'Counta For Each c In 範囲 If c.EntireRow.Hidden = False Then If Z = True And c.Value <> 0 Then i = i + 1 ElseIf Z = False Then i = i + 1 End If End If Next Sum = i Case 9 '合計 For Each c In 範囲 If c.EntireRow.Hidden = False Then If VarType(c) = vbDouble Then Sum = Sum + c.Value End If End If Next End Select VSUM = Sum End Function
関連するQ&A
- エクセルでの関数
SUM(COUNTIF(AJ11:AL11,"(7)"), COUNTIF(AJ11:AL11,"(8)"), COUNTIF(AJ11:AL11,"(9)"), COUNTIF(AJ11:AL11,"(10)"), COUNTIF(AJ11:AL11,"(11)")) SUMとCOUNTIFでの組み合わせ関数を使ったときに、カウントされた数字が0の場合にセル上が0表示でなく無表示にしたいのですが、良い方法が有りますでしょうか? お願いします。
- ベストアンサー
- Windows XP
- Excelの平均値について。
画像のようにA列の4:20にランダムの数字が表示されます。 そこで4の倍数の箇所だけの平均値をA2に表示したいのですが、どうすればよろしいでしょうか。 ただし、空白と0の場合は計算に入れないとします。
- ベストアンサー
- その他MS Office製品
- エクセル2003 計算されないようにしたい
例 A列 B列 1 =A1+A2 2 =A2+A3 3 =A3+A4 (A4は空白です) となっている場合に B1=3 B2=5 B3=3 になると思うんですが この時に空白のセルと計算結果を出すときは0もしくは 計算されないようにしたいです。 最終的にB列にSUM関数を使って合計を出したいのですが A列に求めたい数字が片方しか入ってない場合 (数字が入っているセル+空白セル)はSUM関数の合計に入れたくないです。 なので上記の例では B列にSUM関数をした場合11ではなく8にしたいです。 それには文字列を入力して#VALUE!にするしかないですか? でもその状態にしてSUM関数で合計を出したときも#VALUE!になってしまいます。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルで平均値の求め方は?
エクセルで平均値の求め方がわかりません。 以下のような表の場合で、回答者の平均年齢を求めるにはどうしたらいいんでしょうか。 A B 年齢 件数 16 5 17 10 18 11 19 10 20 14 21 8 22 9 23 18 24 13 25 18 26 19 これまでは、 (1)年齢×件数=nを計算し、C列に仮配置 (2)SUM(C1:C10)/SUM(B1:B10) で計算していました。 よくわかる解説ページを教えていただくだけでも結構ですので、よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルについて
エクセルについて フィルタで表示された0以外の数値の平均値を出す方法がわかりません。 SUBTOTALとSUM(A●●:A●●)/SUM(COUNTIF(A●●:A●●,{"<0,",">0"}))を 組み合わせれば。。。と考えたのですが、上手くいきません。 どなたかアドバイスをお願い出来たらと思っております。 よろしくお願いいたします。
- ベストアンサー
- その他(ソフトウェア)
- エクセルで3列おきの平均値を
こんにちは! エクセルで、3列おきのセルの値の平均値を出したいのですが、値がエラー(#N/Aと表示されている)場合は、平均を求める計算の中に含めないようにしたい・・・というのはどうやって設定したらよいのか、お教えください! 関数等、色々試して見たのですが、よくわかりませんでした・・・。どうぞどうぞ宜しくおねがいたします!
- ベストアンサー
- オフィス系ソフト
- Excel平均値のSUMIF/COUNTIFのCOUNTIFの条件
毎月の集計で常に平均値を知りたいのですが、経過日については日々数字が入ります。後日分について、空白部分のカウントをしないように関数をいれ、現在までの平均値を把握したいと思います。 SUMIF(A1:A31)/COUNTIF(A1:A31)だと誤って空白もカウントしています。望んでいる経過日までの平均値が出ません。 空白をカウントしない関数を教えていただけませんでしょうか?
- ベストアンサー
- オフィス系ソフト
- エクセル2003 合計した数式に単位を付けたい
「sum」「countif」などの関数を使って出した合計の数字に「人」や「センチ」などの単位を付けて表示したいのですが、どのように設定したら良いですか? (エクセル2003をXPで使っています。)
- ベストアンサー
- オフィス系ソフト
- エクセルでおしえてください
シート1のA1~A3の合計を、B1にSUM関数で計算させてます。シート2のB1にシート1のB1に関数が入力されていれば1、関数以外の文字や数字が直接入力されている時には0を表示させるにはどうすればいいのでしょうか?。
- 締切済み
- オフィス系ソフト
- Excelでオートフィルターをかけているのですが
よろしくお願いします。 Excel2000でオートフィルターをかけ、 指定した内容のみを表示させています。 この表示されている数字だけをSUM関数などで 計算させたものを特定のセルに出したいのですが、 どうすればよいのでしょうか?
- ベストアンサー
- オフィス系ソフト
お礼
非常に解りやすくご案内頂きありがとうございます。 非表示の方法ですが、1・2の両方を試してみたのですが 肝心な絞込みを理解していませんでした。 =SUMIFと=SUBTOTALの使い方が違うのですね。すいません。 こんな知識レベルで答えを求めていたので非常に助かりました。 もう一度データを整理してみます。 ありがとうございました。