これは私には些細な質問のように思えましたが、正しく行うことができません。私のデータセットの一部は次のようになります
1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0
1の2つの「実行」(それが正しい単語かどうかはわかりません)が含まれています。1つは長さが3で、もう1つは長さが5です。
Googleドキュメントまたは同様のスプレッドシートアプリケーションを使用して、これらの実行の中で最も長いものを見つけるにはどうすればよいですか?
これは私には些細な質問のように思えましたが、正しく行うことができません。私のデータセットの一部は次のようになります
1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0
1の2つの「実行」(それが正しい単語かどうかはわかりません)が含まれています。1つは長さが3で、もう1つは長さが5です。
Googleドキュメントまたは同様のスプレッドシートアプリケーションを使用して、これらの実行の中で最も長いものを見つけるにはどうすればよいですか?
Excel では、単一の数式を使用して、連続する 1 の最大数を取得できます。つまり、
=MAX(FREQUENCY(IF(A2:A100=1,ROW(A2:A100)),IF(A2:A100<>1,ROW(A2:A100))))
CTRL+ SHIFT+で確認ENTER
Google スプレッドシートでは、同じ数式を使用できますが、CSE を使用するのではなく、arrayformula でラップします。つまり、
=arrayformula(MAX(FREQUENCY(IF(A2:A100=1,ROW(A2:A100)),IF(A2:A100<>1,ROW(A2:A100)))))
空白のない A2:A100 のデータを想定
編集:whuberの提案は、私がこの応答を更新しないには単純すぎます。現在の行が1に等しいかどうかをチェックする単純なIFステートメントを使用できます。等しい場合はカウンター(前の行+ 1)を開始し、そうでない場合は0からカウンターを再開します。
B1の最初の行を1または0に初期化する必要があります。セルの数式を書き込んだら、残りの行を埋めたら、セルの数式の動的更新を使用します。
だからあなたは始めるでしょう。
A B
1 1
1 =IF(A2=1, B1+1, 0)
1
0
0
1
1
1
1
0
0
0
次に、記入します。
A B
1 1
1 =IF(A2=1, B1+1, 0)
1 =IF(A3=1, B2+1, 0)
0 =IF(A4=1, B3+1, 0)
0 =IF(A5=1, B4+1, 0)
1 =IF(A6=1, B5+1, 0)
1 =IF(A7=1, B6+1, 0)
1 =IF(A8=1, B7+1, 0)
1 =IF(A9=1, B8+1, 0)
0 =IF(A10=1, B9+1, 0)
0 =IF(A11=1, B10+1, 0)
0 =IF(A12=1, B11+1, 0)
そして、ここで列Bの結果は次のとおりです。
A B
1 1
1 2
1 3
0 0
0 0
1 1
1 2
1 3
1 4
0 0
0 0
0 0
うまくいけば、ロジックはGoogleドキュメントに拡張可能です。