- ベストアンサー
エクセル 正確な平均
次のような場合、0を無視して平均を出す方法を教えてください。 A B C 1 24 2 57 3 34 4 84 5 0 6 0 平均 1,3,5の平均を出す数式を教えてください。「0」は無視して。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
このシートをデータベースと考えるなら、こんな事も出来ます。 D欄に識別できる名前を入れたとします (1)表示→ツールバー→フォーム (2)コンボボックス を選択して、シートの空いた所(例えば E1 のあたりに大きさを指定して貼付けします (3)コンボ選択→右クリック→コントロールの書式設定 (4)入力範囲…D1:D6、リンクするセル…F1 「OK」 (5)G1(セルに)=INDEX(A1:C6,F1,1) INDEX(範囲、検索する値、表示する値) 表示する値=範囲の左から何番目を表示するかの意味 ※F1…範囲指定した順番のNo.(連番)、G1…F1のNo.より取得した値を表示 時間があれば、お試し下さい。任意の値が表示できます(^^; これを6個作成すると、任意の選択が6つ出来ます。 他にも色々できますが、簡単に出来る1つの例として... 実際にこの様な事をするのであれば、データ部のシートと表示・集計するシートを分けた方が宜しいかと思います。
その他の回答 (8)
- kaisendon
- ベストアンサー率44% (114/257)
A B 1 24 1 2 57 1 3 34 4 84 5 0 1 6 0 >A1,A2、A5の平均という不規則な場合はどうしたらよいのでしょうか? 規則性がないのであれば、ワークシート関数で 「A1、A2、A5の平均を、0を無視して求める」ということは 不可能です。 上記の表では A1は 24、 A2は57、 A5は0 なのでここで求めたい平均は (24+57+0)/3= 27 ではなくて (24+57)/2= 40.5 を求めたいと言う事ですよね? この場合は、不規則な条件(1行目、2行目、5行目)を 判断させるためにB列に目印として「何か」を入力します。 (例示の場合は「1」を入力している行を判断すると言う意味です 但し、「1」に限らず「何か」は何でもいいです。 目印になる物を手作業で入力する必要がある、と言う事です) そして、上記の表で 「A1、A2、A5の平均を、0を無視して求める(求めたい解は 40.5)」 為の式は =AVERAGE(IF((A1:A6<>0)*(B1:B6<>""),A1:A6)) 配列数式なので Ctrl+Shift+Enter同時押しにて確定 といった感じになります。
- imogasi
- ベストアンサー率27% (4737/17069)
#4です。補足に関して。 1.3.5というのは奇数というようなルールが背後にあるのですか。 あるなら初めの質問の1,3,5mの前に奇数行1,3,5の・・ と書いていただければ、私や#1、#2、#3のご回答のようなことは起こらないのに。 本題で、そういうルールがない場合は難しいと思います。 #6のご回答はそれ(奇数)を使ってます。 一般には「セル範囲を指定」というところを個別列挙指定が出きる関数(SUMなど) とできない関数(COUNTIF)とあるようなので。
お礼
そんなんですか。奇数偶数での処理までということですね。わかりました。でも、それがわかっただけでも勉強になりました。ありがとうございます。
- kaisendon
- ベストアンサー率44% (114/257)
こんばんは >A1,A3,A5の平均だけをだしたい >0を無視して平均を出す との事なので、 =AVERAGE(IF((A1:A6<>0)*(MOD(ROW(A1:A6),2)=1),A1:A6)) 配列数式なので Ctrl+Shift+Enter同時押しにて確定 (式が{ }で囲まれます) こういった感じでは如何でしょうか? ちなみに、 ・A2,A4,A6の平均だけをだしたい ・0を無視して平均を出す ならば =AVERAGE(IF((A1:A6<>0)*(MOD(ROW(A1:A6),2)=0),A1:A6)) 配列数式なので Ctrl+Shift+Enter同時押しにて確定 といった感じでしょうか?
お礼
ありがとうございます。今回は偶数番号、奇数番号のように規則的な範囲になりますが、例えばA1,A2、A5の平均という不規則な場合はどうしたらよいのでしょうか?教えてください。
- arare2005
- ベストアンサー率31% (63/199)
sum関数ではなく足し算の入れ方でしょうか? (A1+A3+A5)/2
- imogasi
- ベストアンサー率27% (4737/17069)
24 57 34 0 0 84 として =AVERAGE(IF(B1:B6=0,"",B1:B6)) と入れて、SHIFT+CTRL+ENTERを同時押しする。 (配列数式) 49.75 になりました。結果はこれでよいですか。 合計を件数=COUNT(B1:B6)ー0の件数=COUNTIF(B1:B6,0)で割る素直な 方法もあります。
お礼
ありがとうございます。実はこの表の縦全部の平均ではなくこの場合、A1,A3,A5の平均だけをだしたいので範囲の出し方がわからないんですよ
- merlionXX
- ベストアンサー率48% (1930/4007)
質問がいまいち良く分からないのですが、もしA1からA6に数値があり、そのうち0は無視して平均を出すということであれば以下の式で出来ます。 =SUM(A1:A6)/COUNTIF(A1:A6,">0")
お礼
ありがとうございます。実はこの表の縦全部の平均ではなくこの場合、A1,A3,A5の平均だけをだしたいので範囲の出し方がわからないんですよ
- shkwta
- ベストアンサー率52% (966/1825)
A1:A6の0を無視した平均は、 =SUM(A1:A6)/COUNTIF(A1:A6,"<>0") で出ます。 ご質問の最後の一行は意味がわかりません。
お礼
ありがとうございます。実はこの表の縦全部の平均ではなくこの場合、A1,A3,A5の平均だけをだしたいので範囲の出し方がわからないんですよ。
- bari_saku
- ベストアンサー率17% (1827/10268)
0を消して空白にすれば、普通の式で出ると思いますが、それではだめですか?
お礼
ありがとうございます。でも、0は出るとして教えていただけますか?
お礼
ありがとうございます。そんな工夫でできるんですね。まいりました。