从 null 或 1 值计算当前和最长的连续记录

Count current and longest streak from null or 1 values

我正在尝试从 google sheets 中的空值或 1 值计算最长和当前的连胜纪录。

要在数据洞察中使用,但我必须在表格中进行计算。

我试过 post 下面的一个咒语,但它对我不起作用,而且我的空值不是 0,它必须保持这种状态(sheet 中的行是从 google 表单中追加,我在其中检查我是否养成了习惯)。

有空请帮忙,谢谢

这是带有一些示例数据的价差sheet https://docs.google.com/spreadsheets/d/1GaaEJ24ERulPftYAILOuokY929HInkh-SjAJUEvrW5M/edit?usp=sharing

values to visualize in streaks

使用它来获得数据中的最长连胜:

=arrayformula( 
  if( 
    len(join(""; Data!A1:A)); 
    max( len( split( 
      concatenate( left(isblank(Data!A1:A)) ); 
      "T" 
    ) ) ); 
    "no streak" 
  ) 
)

这是为了获得数据中的最后一次连胜:

=+sort( 
  if( 
    len(join(""; Data!A1:A)); 
    len( transpose( split( 
      concatenate( left(isblank(Data!A1:A)) ); 
      "T" 
    ) ) ); 
    "no streak" 
  ); 
  sequence( rows( 
    transpose( split( 
      concatenate( left(isblank(Data!A1:A)) ); 
      "T" 
    ) ) 
  ) ); 
  false 
)

看看你的sample spreadsheet

最长:

=INDEX(COLUMNS(SPLIT(FLATTEN(SPLIT(TRIM(QUERY(IF(A1:A=""; 0; "×");;9^9)); " 0 "; )); " ")))


全部:

=INDEX(QUERY(LEN(SUBSTITUTE(FLATTEN(TRIM(SPLIT(QUERY(
 IF(A1:A=""; "×"; "¤");;9^9); "×"; ))); " "; )); 
 "where Col1 <> 0"))


最后一个:

=INDEX(QUERY(SORT(LEN(SUBSTITUTE(FLATTEN(TRIM(SPLIT(QUERY(
 IF(A1:A=""; "×"; "¤");;9^9); "×"; ))); " "; )); 
 SEQUENCE(ROWS(A1:A)-COUNTA(A1:A)); 0); "where Col1 <> 0 limit 1"; ))