dポイントプレゼントキャンペーン実施中!

A1からA13迄に次のデータが 並んでいます。
1 0 2 2 0 1 1 2 1 0 1 2 1
B1からB4迄に次のデータが 並んでいます。
1 2 2 1
A列には0,1,2のデータがランダムに日々追加記入されます。
B列はA列の2の数に閉ざされた間の1のデータをカウントします。 
B1=1とはA3までの1のカウント数  
B2=2とはA4とA8の2の値で挟まれた間の1のカウント数 
B3=2とはA8とA12の2の値で挟まれた間の1のカウント数
B4=1とはA12以下の1のカウント数
B4セルはA14以下追加記入され、つぎの2が出現するまでカウントします。      
2が出現するとB5セルに移り、更なる2が出現する迄1をカウントします。
B列にどんな関数を使えばいいものでしょうか。 
以前このコーナーで連続パターン毎の出現回数を”FREQUENCY関数”を
使い見事に解決していました。この真似をして連続パターンの出現回数を
出現順B列に並べようとしたのですが、私の力不足で上手くいきませんでした。
再度の投稿で文面が思いどうりに表示出来てるか心配ですが、宜しくお願い致します。

質問者からの補足コメント

  • 早速ご指摘感謝致します。
    ご指摘(1)の場合現実には2が3回4回と、つずく場合も有ります。
    また、(2)にも関連しますが2と0が交互に出現する場合も有ると思います。
    2,0の数はカウントしないでいただきたい。B列には0は無く1以上の数のみになって
    ほしいです。
    面倒なご相談で申し訳ありません。宜しくご教示おねがいします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/02/02 00:22

A 回答 (5件)

Excel を主体に業務をおこなっているようでしたら、Google スプレッドシートで作業するのは、非合理的かと思われます。


この質問を、締め切りして、以下のカテゴリで再度質問なさった方が良いかもしれません。
“コンピューター・テクノロジー >Microsoft Office >Excel(エクセル)”
    • good
    • 0
この回答へのお礼

ご指摘ありがとうございます。こちらが初心者ゆえ大変なご迷惑をおかけいたしました。
貴重なお時間をいただき重ねてありがとうございました。

お礼日時:2021/02/03 10:01

> Andro様お世話になっています。

この、スクリプトを1字1句間違えないように入力したつもりですが、
回答欄のスクリプトを、コピー&ペーストしましょう。
[保存]可能で[▷実行]するときに “承認” が必要です。
    • good
    • 0

No.2 承認方法

「データの間隔とカウントと表示方法」の回答画像3
    • good
    • 0
この回答へのお礼

Andro様お世話になっています。この、スクリプトを1字1句間違えないように入力したつもりですが、1度目は失敗し、2度目は更に丁寧に入力しました。大、小文字、スペース等気を付けたつもりですが、保存すると次の様なエラーメッセージが表示され、先に進めません。
”SyntaxError: Unexpected identifier(行 4、ファイル「コード.gs」)”
4行目のことを指していると思いますが、”Bound Script”。
初心者目には、理解不能です。
又、回答No3の承認方法はどうすれば良いのか途方に暮れています。
ご教授いただきながら、レベルが違い過ぎて申し訳ありません。

お礼日時:2021/02/02 22:08

1. Google ドライブ を開き、[新規][Google スプレッドシート]を選択、「無題のスプレッドシート」を開きます。


2. [ツール][スクリプトエディタ]から、「無題のプロジェクト」を開きます。
3. すでに記述のあるスクリプトを削除して、以下のスクリプトを貼り付けます。
function myFunction() {
// スプレッドシートを取得する
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();// Container Bound Script
var sheet = spreadsheet.getSheets()[0];// シート数を指定して取得
var maxCol = sheet.getMaxColumns();
sheet.getRange(2, 1, 1, maxCol).clearContent();
// 1行を読み込む
var record = sheet.getRange(1, 1, 1, 13).getValues();
var cnt1 = 0, col = 1;
for (var i=0; i < record[0].length; i++) {
if (record[0][i]==1) {
cnt1++;
}
if (record[0][i]==2 || i==record[0].length-1) {
if (cnt1 > 0) {
sheet.getRange(2, col).setValue(cnt1);
cnt1 = 0;
col++;
}
}
}
}
4. [保存]ボタンを押下して、[myFunction]を選び、[▷実行]を押下します。
「データの間隔とカウントと表示方法」の回答画像2
    • good
    • 0
この回答へのお礼

早速の回答、ありがとうございました。初心者の私には、このスクリプト
の意味するところは理解不可能ですが、ご指導のとうり、このスクリプトを
貼り付け、実行してみます。
結果が楽しみです。本当にありがとうございました。

お礼日時:2021/02/02 11:32

ご質問者の条件説明の中で、明確に説明されていない点があります。

以下のケースはどうするのかわかりません。
○A列で2が登場し、次の2が登場するまでの間に1がないケースで
(1)2が連続して登場するので間に1がない。つまり1のカウントが0である
(2)2が登場して次の2が登場するまでの間が全て0である。つまり1のカウントが0である
上記(1)は明確に説明はありませんが、B列の例示を見る限りは(1)のケースは「カウント0を表示しない」だと予測できます。
では(2)のケースはどうするのでしょうか?
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!