You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets连续x分段计数及行拆分技术问询

Google Sheets 行内连续"x"分段计数方案

一、直接在右侧生成连续段计数

假设数据结构为:A列是描述列,B到H列为日期对应的单元格(含"x"或空白),在I2单元格输入以下数组公式,自动填充后即可得到每行的连续"x"分段计数(如示例中的3, 1):

=BYROW(A2:H, LAMBDA(row, 
  IF(INDEX(row, 1)="",,
    TEXTJOIN(", ",,
      FILTER(
        LEN(SPLIT(TEXTJOIN("",, IF(ISBLANK(OFFSET(row,0,1,1,COLUMNS(row)-1)), "|", INDEX(row,0,1,1,COLUMNS(row)-1))), "|")),
        LEN(SPLIT(TEXTJOIN("",, IF(ISBLANK(OFFSET(row,0,1,1,COLUMNS(row)-1)), "|", INDEX(row,0,1,1,COLUMNS(row)-1))), "|"))>0
      )
    )
  )
))

公式逻辑:

  • 用TEXTJOIN拼接每行日期列内容,空白单元格替换为分隔符|,连续"x"会连成一串
  • SPLIT按|拆分后,得到每个连续"x"的组(空组对应原空白段)
  • LEN计算每个组的长度,FILTER过滤掉空组,最后用TEXTJOIN将计数结果用逗号分隔展示

如果已将"x"替换为1、空白替换为0,只需把公式中的ISBLANK(...)改为INDEX(row,0,1,1,COLUMNS(row)-1)=0即可适配。

二、将连续"x"组拆分至新行(保留描述列)

若需要把每个连续"x"组单独拆成一行,且保留原描述列内容,在新工作表的A1单元格输入以下公式(需替换源数据为你的数据所在工作表名称):

=LET(
  data, 源数据!A2:H,
  desc, INDEX(data,,1),
  days, INDEX(data,,2):INDEX(data,,COLUMNS(data)),
  groups, BYROW(days, LAMBDA(row, SPLIT(TEXTJOIN("",, IF(ISBLANK(row), "|", "x")), "|"))),
  result, REDUCE("", SEQUENCE(ROWS(data)), LAMBDA(acc, i,
    LET(
      row_groups, INDEX(groups,i),
      valid_groups, FILTER(row_groups, LEN(row_groups)>0),
      count, ROWS(valid_groups),
      new_rows, IF(count>0, HSTACK(INDEX(desc,i), LEN(valid_groups)), ""),
      VSTACK(acc, new_rows)
    )
  )),
  DROP(result, 1)
)

公式逻辑:

  • 提取描述列和日期列数据,将每行内容转换为|分隔的字符串,拆分后得到所有连续"x"组
  • 遍历每行数据,对每个有效"x"组(非空),生成包含原描述和组长度的新行
  • 用VSTACK拼接所有新行,DROP去掉初始空行,最终得到拆分后的统计表格

内容的提问来源于stack exchange,提问作者AR-7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 09:43:30