- ベストアンサー
エクセルで連続した1と0が何回出たかをカウントする
エクセルでONとOFFを時系列で1(ON)と0(OFF)で表しており、 ONになった回数を数えたいと思っています。 例)下記の数字がA1~A20に入っている 0 0 0 1 0 0 1 1 1 0 0 1 1 0 0 0 1 1 1 0 1がON、0がOFFなので、ONになった回数は4回 このような処理をエクセルで行うには どのような方法がありますでしょうか? ご教示いただきたく、よろしくお願いいたします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
#3です。 =IF(A1=1,1,0)+SUMPRODUCT((A1:A19&A2:A20="01")*1) A1 が1の時は、On になるので、1を加えます。
その他の回答 (5)
{=SUM((A1:A19=0)*(A2:A20=1))} (配列数式)
お礼
返信遅くなり、申し訳ありません。 試してみましたが、どうもうまくいきませんでした。 またの機会にご教示願います。
- mshr1962
- ベストアンサー率39% (7417/18945)
1の出た回数-1が連続した回数として =COUNTIF(A1:A20,1)-SUMPRODUCT((A1:A19=1)*(A2:A20=1)) B列使ってもいいなら B1=A1 B2=IF(AND(A1=0,A2=1),1,0) でB2をB20までコピーして =SUM(B1:B20) で表示
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 その数字がどのように入っているのか良く分からないです。 > 0 0 0 1 0 0 1 1 1 0 0 1 1 0 0 0 1 1 1 0 ↓ 00010011100110001110 半角スペースが入っているようですが、文字列として、隙間なく入っているという条件で、 上限を、一応、20桁までにしました。 =SUMPRODUCT((MID("0"&A1,COLUMN($A1:$T1),1)&MID("0"&A1,COLUMN($B1:$U1),1)="01")*1) 最初の「0」は、最高桁が、「1」がたっている時の条件です。 >ONになった回数は4回 つまり、Off が On となったということを想定していますから、On の状態のままでは、1回しかないということです。
補足
説明が足りていませんでした。 A1に0、A2に0、A3に0、A4に1、A5に0、A6に・・・・ が入っているという条件です。
- Cupper
- ベストアンサー率32% (2123/6444)
文字列のカウントですね。 考え方は、"10" のパターンを数えるために、"10" を文字列から削除した場合と、元の文字列の長さを比較する・・・です。 =(LEN(CONCATENATE(A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1))-LEN(SUBSTITUTE(CONCATENATE(A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1),"10","")))/2 長いですけど、こんな感じです。
補足
1と0は文字列ではなく、数字という条件です。 数字の場合も上記でOKなのでしょうか?
セルB1に「=A1」と入力します。 セルB2に「=IF(AND(A1=0,A2=1),1,0)」と入力します。 セルB3からB20にセルB2をコピー&ペーストします。 あとはB1からB20までの1の数を数えれば(「=SUM(B1:B20)」など)OK。 いかがでしょうか?
お礼
返事が遅くなり、申し訳ありません。 他に行を付け足さず、結果を得ることができました。 ありがとうございました。