• ベストアンサー

エクセル 正確な平均

次のような場合、0を無視して平均を出す方法を教えてください。    A    B    C 1  24 2  57 3  34 4  84 5   0 6   0 平均  1,3,5の平均を出す数式を教えてください。「0」は無視して。

質問者が選んだベストアンサー

  • ベストアンサー
  • arare2005
  • ベストアンサー率31% (63/199)
回答No.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)
回答No.8

    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同時押しにて確定 といった感じになります。

motaro2
質問者

お礼

 ありがとうございます。そんな工夫でできるんですね。まいりました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.7

#4です。補足に関して。 1.3.5というのは奇数というようなルールが背後にあるのですか。 あるなら初めの質問の1,3,5mの前に奇数行1,3,5の・・ と書いていただければ、私や#1、#2、#3のご回答のようなことは起こらないのに。 本題で、そういうルールがない場合は難しいと思います。 #6のご回答はそれ(奇数)を使ってます。 一般には「セル範囲を指定」というところを個別列挙指定が出きる関数(SUMなど) とできない関数(COUNTIF)とあるようなので。

motaro2
質問者

お礼

 そんなんですか。奇数偶数での処理までということですね。わかりました。でも、それがわかっただけでも勉強になりました。ありがとうございます。

  • kaisendon
  • ベストアンサー率44% (114/257)
回答No.6

こんばんは >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同時押しにて確定 といった感じでしょうか?

motaro2
質問者

お礼

 ありがとうございます。今回は偶数番号、奇数番号のように規則的な範囲になりますが、例えばA1,A2、A5の平均という不規則な場合はどうしたらよいのでしょうか?教えてください。

  • arare2005
  • ベストアンサー率31% (63/199)
回答No.5

sum関数ではなく足し算の入れ方でしょうか? (A1+A3+A5)/2

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

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)で割る素直な 方法もあります。

motaro2
質問者

お礼

 ありがとうございます。実はこの表の縦全部の平均ではなくこの場合、A1,A3,A5の平均だけをだしたいので範囲の出し方がわからないんですよ

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

質問がいまいち良く分からないのですが、もしA1からA6に数値があり、そのうち0は無視して平均を出すということであれば以下の式で出来ます。 =SUM(A1:A6)/COUNTIF(A1:A6,">0")

motaro2
質問者

お礼

 ありがとうございます。実はこの表の縦全部の平均ではなくこの場合、A1,A3,A5の平均だけをだしたいので範囲の出し方がわからないんですよ

  • shkwta
  • ベストアンサー率52% (966/1825)
回答No.2

A1:A6の0を無視した平均は、 =SUM(A1:A6)/COUNTIF(A1:A6,"<>0") で出ます。 ご質問の最後の一行は意味がわかりません。

motaro2
質問者

お礼

 ありがとうございます。実はこの表の縦全部の平均ではなくこの場合、A1,A3,A5の平均だけをだしたいので範囲の出し方がわからないんですよ。

  • bari_saku
  • ベストアンサー率17% (1827/10268)
回答No.1

0を消して空白にすれば、普通の式で出ると思いますが、それではだめですか?

motaro2
質問者

お礼

ありがとうございます。でも、0は出るとして教えていただけますか?

関連するQ&A