• 締切済み

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

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

みんなの回答

  • Chiquilin
  • ベストアンサー率30% (94/306)
回答No.3

> 関数を用いてデータを集計したい 何でも数式だけでやりたがる人が多いですね。 ★連続として =SUM((FREQUENCY(ROW(A$1:A$50000),(A$1:A$50000<>"○")*ROW(A$1:A$50000))-1=★)*1) 計算を別セルに分けた方がいいと思います。

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

 今仮に元データがA2以下に並んでいて、E2以下に連続回数が入力されていて、F2以下にE列に入力されている連続回数に該当する例が何回あるのかという事を表示させるものとします。  又、C列を作業列として使用するものとします。  まず、C2セルに次の様な関数を入力して下さい。 =IF($A2="○",SUM($C1)+1+2000000*($A3<>$A2),"")  尚、上の式において何故2000000を加えているのかと言いますと、Excelでは行数が1048576行(Excel2007よりも前のバージョンでは65536行)までしかないため、どれ程連続していたとしても1048576回以上連続している事はあり得ず、1048576以上の数を加算しておけば、連続しているデータをカウントして行っている途中の数値であるのか、連続しているデータの中で最後の行の所の値なのかを区別出来るからです。  次に、C2セルをコピーしてC3以下に貼り付けて下さい。  次に、F2セルに次の様な関数を入力して下さい。 =COUNTIF($C:$C,$E2+2000000)  次に、F2セルをコピーしてF3以下に貼り付けて下さい。  以上で準備は完了で後はE列に表示したい連続回数を入力しますと、F列に該当箇所が何箇所あるのかが表示されます。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

>5万行ほどあり、関数を用いてデータを集計したい では、B列に数えるための作業列を配置して集計するのが一番合理的な方法です。一発で計算しようとしても、エクセルがしばらくフリーズするのがオチです。 添付図: A1にタイトル行 A2以下に○ B1は空白 B2に =IF(A2="",0,IF(A2<>A3,-B1+1,B1-1)) 以下コピー D列に連続の数字 E2: =COUNTIF(B:B,D2) 以下コピーして完成。

aporon1216
質問者

お礼

お返事ありがとう御座います! 教えて頂きました方法で作業をしてみたいと思います!

関連するQ&A