• ベストアンサー

エクセルでのランダムに連続するデータの平均の出し方

1列に空白行が無い状態で○と×の連続するデータがあるとします。 以下のような状態の時、○と×それぞれの平均連続回数を関数で求める事は可能でしょうか? 1度、別列にて整理した方がやり易いでしょうか? お力をお貸しくださいませ。宜しくお願いします。 例)○=4連と5連がそれぞれ1回なので平均4.5。×=3連と2連がそれぞれ1回なので平均2.5。 ○ × × × ○ ○ ○ ○ × × ○ ○ ○ ○ ○

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 使用しているExcelのバージョンがExcel2007以降(Excel2007自体も含む)のものである場合には、作業列は1列だけでOKです。  今仮に、○や×がA2以下に入力されているものとします。  又、C列を作業列として使用するものとします。  まず、C2セルに次の関数を入力して下さい。 =IF(OR($A2="",$A2=$A3),"",COUNTIF($A$1:$A2,$A2)-SUMIF($A$1:$A1,$A2,C$1:C1))  次に、C2セルをコピーして、C3以下に貼り付けて下さい。  その上で「○の平均連続回数を表示させたいセル」には次の関数を入力して下さい。 =AVERAGEIFS($C:$C,$A:$A,"○",$C:$C,">0")  同様に、「×の平均連続回数を表示させたいセル」には次の関数を入力して下さい。 =AVERAGEIFS($C:$C,$A:$A,"×",$C:$C,">0")  以上です。

mfc4
質問者

お礼

勉強になりました ありがとうございました。

その他の回答 (4)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

 回答No.4です。  前回の回答では作業列を必要としていて、しかもExcel2007以降でなければ使用出来ない方法でしたが、後になってから作業列を必要とせず、しかもExcel2007よりも前のバージョンのExcelでも使用可能な方法を考え付きましたので、再度投稿させて頂きます。  但し、今回の方法はSUMPRODUCT関数を使用しておりまして、SUMPRODUCT関数は繰り返し計算処理を行う関数であるため、処理対象となるセル範囲(今回の件の場合は行数)があまりにも多くなる場合には処理が重くなり、計算が終了するまでに時間が掛かる様になってしまう事もありますので注意して下さい。  尚、処理対象となる行数が何行くらいにまで増えると処理の重さが問題になって来るのかは、使用するパソコンの処理能力によって大幅に変わって来ますので、何行以上だと問題になるのかという事を一概に言う事は出来ませんが、2002年製のパソコンでも2千行程度であれば処理の重さが大して気になるほどでは御座いませんでしたし、近年のパソコンは2002年製のものとは比べ物にならないほど高速化しておりますので、○や×の入力欄が何万行にもなるのでもなければ、おそらく処理に長い時間を要する様な事にはならないのではないかと思います。  それで、御質問文の内容では○や×が何列の何行目から何行目までの範囲に入力されているのか不明なため、取りあえず仮の話として、○や×が入力されているのはA2:A16のセル範囲であるものとします。  その場合、「○の平均連続回数」を求める関数は次の様なものとなります。 =IF(COUNTIF($A$2:$A$16,"○"),COUNTIF($A$2:$A$16,"○")/SUMPRODUCT(($A$2:$A$16<>$A$1:$A$15)*($A$2:$A$16="○")),0)  又、「×の平均連続回数」を求める関数は次の様なものとなります。 =IF(COUNTIF($A$2:$A$16,"×"),COUNTIF($A$2:$A$16,"×")/SUMPRODUCT(($A$2:$A$16<>$A$1:$A$15)*($A$2:$A$16="×")),0)

  • hayasi456
  • ベストアンサー率40% (2402/5878)
回答No.3

失礼しました質問を良く読んでなかったようです。

  • hayasi456
  • ベストアンサー率40% (2402/5878)
回答No.2

=COUNTIF(範囲,検索条件) で oとxそれぞれを数えられます。 例 範囲 C2:C51  =COUNTIF(C2:C51,"o")  =COUNTIF(C2:C51,"x") 参考URL http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/count.htm#countif 平均は添付図ですと o は =F2/50 x は =F3/50

mfc4
質問者

お礼

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

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.1

A列の2行目から下に○と×のデータが入力された状態で検証してみました。 B2:D16を処理の作業用に使います。 B2=IF(A2=A1,B1+1,1) C2=IF(OR($A2<>C$1,$B2=1),"",IF($B2>$B3,$B2,"")) C2セルをD2へコピーします。 B2:D2を選択して下へ16行目までコピーします。 C17=AVERAGE(C2:C16) C17をD17へコピーします。 結果は貼付画像のようになります。

mfc4
質問者

お礼

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

関連するQ&A