• ベストアンサー

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

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

  • mfc4
  • お礼率75% (12/16)

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

  • ベストアンサー
  • 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/8248)
回答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

  • EXCEL連続した回数のカウント

    エクセル初心者です。 連続した数字の回数のカウントの仕方が分からず困っております。 A列に0と1が50個並んでいます。 50個の0と1はその並び順が変化します。 1が先頭から5個以上、連続して並んだ時に、その1が連続した回数を特定のセル(例えばB1)に表示するようにしたいのです。 下の例1ではA3から1が8個連続していますので、B1のセルに8が入るようにしたいのです。 並びが変わりますので、先頭のA3が0の例2や、1が5個以上連続しない例3の場合は、B1のセルは空白のままになるようにしたいのです。 1が先頭のA3から5個以上連続した時だけ、その先頭から連続した回数(個数)を数えるようにしたいのです。 どうぞよろしくお願いします。 (例1)   A列   B列   C列・・ 1行 2行  3行 1 4行 1 5行 1 6行 1 7行 1 8行 1 9行 1 10行 1 11行 0 12行 0 ・ (例2)   A列   B列   C列・・ 1行 2行  3行 0 4行 1 5行 1 6行 1 7行 1 8行 1 9行 1 ・ (例3)   A列   B列   C列・・ 1行 2行  3行 1 4行 1 5行 1 6行 1 7行 0 8行 0 ・

  • エクセルで連続回数などを調べたいです。

    エクセルで連続回数などを調べたいです。 なるべく簡単に出来る方法があればぜひ宜しくお願いします。 例えば      A列   B列 1行目   い    64 2行目   い   100 3行目   あ    30 4行目   あ    40 5行目   あ    20 6行目   い   -77 7行目   い -60 8行目   あ   -80 9行目   あ   -50 10行目   あ -100 ・    ・ ・    ・ ・ 800行目 というように数字が入っているとして、 1.A列が「あ」で、B列に「正」が連続で出てきた回数の最も多い回数を調べたい。  (A列が「い」の場合や、「正」では無く「負」の場合も) 2.さらに、1の結果それぞれの数字を合計したい。 というときはどんな式になりますでしょうか? 上の、1行目~10行目で言えば、 「あ」の場合の「正」の最大連続回数は「3」 「い」の場合の「正」の最大連続回数は「2」 「あ」の場合の「負」の最大連続回数は「3」 「い」の場合の「負」の最大連続回数は「2」 それぞれの合計数は 「あ」の「正」の最大連続回数「3」の合計数が「90」 ・・・・ のように出したいのです。 それぞれの答えを入力するセルは違います。 こちら、関数もよく分からない状態です・・・。 マクロなどは、「マクロ」という言葉しか分からない状態です。(すいません・・・) 大変お手数をおかけ致しますが、お詳しい方がいらっしゃれば、どうぞ宜しくお願いします。

  • エクセルで連続セルの出現回数を出したいです。

    例えば、A列に、0と1だけのデータが(数万行)あります。 A列 0 0 0 →a 1 →c 1 0 0 0 →a 0 →b 0 1 0 1 1 1 1 0 このデータから、 a:0が3連続した回数 b:0が3連続した次のデータが0だった回数 c:0が3連続した次のデータが1だった回数 (4連続は含まず) こういったデータを出したいのですが、エクセルでどのような方法がありますでしょうか? (上記の例では、a2回、b1回、c1回) よろしくお願い致します。

  • エクセルで直近の連続回数を求める

    ある条件の結果、合格を1、不合格を0として記録し、直近で連続合格した回数を求めたいのですが、どのような関数を使うと良いでしょうか。 図では7回目まで終了していて、 【条件A】の場合、直近の結果が0なので連続回数は「0」。(返す値は0か空白) 【条件B】の場合、直近の結果が空白なので連続回数は「0」。(返す値は0か空白) 【条件C】の場合、連続回数は「2」。 各条件の結果には空白のセルも混在し、回数が上がると列を増やす予定で、その右端に連続回数を求める仕様です。出来れば、マクロを使わず関数で求めたいと思っています。 よろしくお願いします。

  • Excel 関数:連続した文字列の数の集計方法

    Excelであるデータの統計を取っており、連続した文字列(○)の数を出して比較したいと考えております。 最終的に以下のようなデータが欲しいと思っております。 2連続:100回 3連続:80回 4連続:50回 (例)※ハイフンは空白のセルになります。 ○ ○ - ○ ○ ○ - ○ - ○ ○ - ○ - ○ ○ ○ - ○ ○ ○ ○ 上記の場合ですと、最終的に得たい情報は、 2連続:2回 3連続:2回 4連続:1回 5万行ほどあり、関数を用いてデータを集計したいと思っております。 どなたかご存知でしたら教えて頂けますでしょうか。 宜しくお願い致します。

  • excelで連続出現数の頻度の算出

    お知恵をお貸しください。 シート1にデータがA列は01~09が文字列、10は数値 B列は10~15,C列 は16~20…というふうに入っています。 たとえば、01が下の行に2回連続して入ったら2回連続が1カウント、 離れた行にまた2回連続で入ったらまた1カウントで、合計2回連続ということで 違うシートには2回 2 という風に連続した回数が何回あったかを 出したいのです。 なにかいい方法はありませんか。 お示ししたのは画像ファイルですので、関数の式またはマクロの構文をお知らせいただけると助かります。 よろしくお願いいたします。

  • エクセルで連続するデータの個数だけカウントする

    エクセルは2013を使用しています。 シートには各セルに「○」 「×」 「□」 「空白」が入力されています。    A   B  C 1  ○   ○ 2  × ○   3  × ○ □ 4     ○ □ 5  ○ × □ 6  × □ ○ 7  ○ □   8       ○ 計  2 5 3 ※A列の計・・・×が連続している ※B列の計・・・○と□が連続している ※C列の計・・・□が連続している このように連続するデータの個数だけをカウントする方法を教えて下さい。 よろしくお願い致します。

  • EXCELで連続した同じ値をグループと見なして数を数えるには?

    EXCELで連続した同じ値を1グループと見なしてグループ数を数える方法を探しています。つまり以下のようなデータがある時、A列中に何グループあるのかを関数で算出したいのです。 行   A 1   ○ 2   ○ 3   × 4 5   ○ 6   ○ 7   ○ 8   × 9   × 10   ○ 11   ○ 12   ○ 13   ○ 例中のA1~A13の範囲内では、A1~A2、A5~A7、A10~A13 を○のグループと見なして、グループ数は「3」ということになります。 このカウントをする関数式を1つのセルの中に作成して計算させたいのです。 ・ 列内には他に、×と空白があります。 ・ ○は必ず2つ以上連続しています。 ・ ○がいくつ連続してグループを作るかはわかりません。 ・ グループとグループの間に入る×と空白の数は不規則です。 これは職場で使っている管理表です。 当初、他列の各行にA列の前後の値から判断する式を入れて合計して求めていたのですが、パソコンスキルの低い不特定多数の人が使用するため、関連するセルに削除挿入されたりしてエラーが頻出し、集計している別シートの方にも影響を出しています。そのため、各行に計算式を入れる方法は避けたいのです。 お知恵をお貸しください。 よろしくお願いいたします。

  • Excelで連続数字をカウント

    1~3までの数字がA列にランダムに入力されています。 例) A -- 3 2 2 1 2 1 3 2 2 別のシートに、「1」「2」「3」と縦にそれぞれ行を分け、横列にはそれぞれの連続回数(1,2,3,4,5,6,7,8・・・) を入力させたいです。 「1」の1回が⚪︎⚪︎回、2連続が⚪︎⚪︎回、3連続が⚪︎⚪︎回・・・ 「2」の1回が⚪︎⚪︎回、2連続が⚪︎⚪︎回、3連続が⚪︎⚪︎回・・・ 「3」の1回が⚪︎⚪︎回、2連続が⚪︎⚪︎回、3連続が⚪︎⚪︎回・・・

  • Excel 2003 連続データ

    文字列にしたセルに 1と入力して連続データは 1,2,3,4,5・・・・と なります。 これを 10,20,30,40・・・・と 増えていくように設定できますでしょうか? 10,11,12,13,14・・・としか できなくて 困っています; なにか ヒントを・・・ やっぱり 関数ですかね?

専門家に質問してみよう