アプリ版:「スタンプのみでお礼する」機能のリリースについて

図のように、縦に向かってチェックボックスがあって、その連勝と連敗表示を他のセルで出したいと考えています。
たとえば、3連勝なら3みたいな感じで、それ以下は表示しない。3連勝から上は連勝通りに数字が出るみたいな。

また、チェックボックスは、上から順番にすべてをチェックしていくものではありません。

3列目にチェックして、次は、10列目のように間は空くことが前提です。
どのようにすれば良いでしょうか?

「Googleスプレッドシートの質問です。」の質問画像

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

  • それから、
    回答にもなってないのに、何を調子こいてタメ口きいてんだお前?
    それで父親か、笑える。

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/01/10 11:36

A 回答 (3件)

No2です。



ご要望のようなので、ご参考までに。
以下は、あくまでもエクセルによる方法です。

◇1. 関数による方法
エクセルの場合、関数から直接チェックボックスの値は参照できないのと、チェックボックスの位置とセル位置にも関係がないため、まず、チェックボックスのリンクセルの設定で値を読めるようにしておきます。
添付図ではチェックボックスのあるセルにリンクさせて、表示文字色を白に設定してあります。
この結果、チェックボックスにはTRUE/FALSEの値が入っていますが、見た目にはわからないようになっています。(無理に同じセルにしなくても、別の列にリンクさせても良いです)
これにより、ご質問の内容は「TRUEが連続する回数を表示する」と同じ意味になります。

関数で、対象セルから上方にある最初のFALSEを求めます。
※ ご提示の図ではセルの行数が不明ですが、チェックボックスのある最初の行を3行目と仮定しています。
添付図で、K3セルでの式を考えてみると、
 =IFERROR(AGGREGATE(14,6,ROW(I$3:I3)/NOT(I$3:I3),1),2) ---①
とすることで、直近にあるFALSEの位置(行番号)を求められます。
連続回数を求めるには、自分の行番号との差を求めればよいので、
 =ROW() - ①
で算出できますが、この値が3(回)以上の場合だけ表示するというのが条件なので、
添付図のK3セルには
 =IF(ROW()-①<3,"",ROW()-①)
に相当する式を入れて、K、L列にフィルコピーしてあります。


◇2. ユーザ定義関数による方法
エクセルでは、ユーザが定義した関数を利用できます。
スプレッドシートでも同様の手段が設けられていたかと思います。
添付図では、N3セルに
 =countSeries(I3)
を入力し、N、O列にフィルコピーしています。
(countSeries はユーザ定義関数名。名前は自由です。)
当然ですが、結果はK、L列と同様になります。

実際には、エクセルはVBA、スプレッドシートではGAS(javascript)によることになるため、言語が違うので単純な置き換えはできませんが、ロジックはほぼそのまま利用できるはずと思います。
内容的には簡単なものなので、とりあえず以下に記しておきます。
Function countSeries(ByRef t As Range) As Variant
Dim rw, col
 Application.Volatile
 countSeries = ""
 col = t(1).Column
 If (col < 9 And 10 < col) Or Not t(1) Then Exit Function
 countSeries = 0
 For rw = t(1).Row To 3 Step -1
  If Not Cells(rw, col) Then Exit For
  countSeries = countSeries + 1
 Next rw
 If countSeries < 3 Then countSeries = ""
End Function


◇3. イベント処理による方法
ユーザ定義関数を用いる代わりに、チェックボックスの値が変化した際に計算処理を行う仕組みを設定する方法です。
スプレッドシートでもイベント処理の設定は可能なはずです。

実際の内容としては、ユーザ定義関数と似たようなものですが、セルに直接結果を記入することになるので関数等の設定は不要になります。
こちらの方法の場合は、イベントの設定方法や処理方法もエクセルとはまったく異なるものになると推測しますので、具体例は省略しておきます。
「Googleスプレッドシートの質問です。」の回答画像3
    • good
    • 0

こんばんは



Googleスプレッドシートはほとんど知りませんけれど、エクセルでよければ同様のことを実現する方法は複数案考えられますし、そちらであれば提示することは可能です。

一方で、スプレッドシートはエクセルに似せて作られてはいますが、完全な互換性があるわけではないので、仕様や書式にもいろいろと違いがあると想像されます。

質問者様の技量が不明ですが、エクセルでの方法をスプレッドシートに応用・展開できる程度であるのなら多少の参考にもなるでしょうけれど、コピペ専門の場合はまず役に立たないでしょうから、無駄手間になるだけなのでやめます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
応用できるか定かではありませんが、教えてもらえますか?

お礼日時:2021/01/10 22:39

連勝の定義は?



順不同なら判定は無理。
チェックした順番というのなら、それをどこかに記憶させる仕組みが必要。
この回答への補足あり
    • good
    • 0
この回答へのお礼

上から順番にカウントして、
勝のほうに、チェックが連続していれば、連勝。

逆に負のほうに、チェックが連続していれば、連敗。


順不同? 言ってる意味がわからない。

お礼日時:2021/01/10 11:31

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