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

如何在Google Sheets/Excel中用ARRAYFORMULA计算到指定值的剩余行数?

用ARRAYFORMULA计算当前行到下一个特定值的剩余行数

针对你需要在Google Sheets中用单个ARRAYFORMULA实现的需求,这里提供两种可行方案:

方案1:使用XMATCH(推荐,Google Sheets新版支持)

在B1单元格输入以下公式:

=ARRAYFORMULA({"Result"; IF(A2:A="",, IF(A2:A=1, 0, XMATCH(1, A2:A, 0, ROW(A2:A)) - ROW(A2:A)))})

公式逻辑:

  • {"Result"; ...}:为B列设置表头
  • IF(A2:A="",, ...):跳过A列的空行
  • IF(A2:A=1, 0, ...):当A列当前行是1时,B列直接返回0
  • XMATCH(1, A2:A, 0, ROW(A2:A)):从当前行开始向下查找第一个值为1的行号,确保每一行都从自身位置向后搜索
  • 用找到的目标行号减去当前行号,得到到下一个1的剩余行数

方案2:使用VLOOKUP(兼容旧版Google Sheets)

如果你的Google Sheets版本不支持XMATCH,可使用此公式:

=ARRAYFORMULA({"Result"; IF(A2:A="",, IF(A2:A=1, 0, VLOOKUP(ROW(A2:A), FILTER({ROW(A2:A), ROW(A2:A)}, A2:A=1), 2, TRUE) - ROW(A2:A)))})

公式逻辑:

  • FILTER({ROW(A2:A), ROW(A2:A)}, A2:A=1):生成所有A列为1的行号列表
  • VLOOKUP(ROW(A2:A), ..., 2, TRUE):查找大于等于当前行号的最小目标行号(即下一个1所在行)
  • 同样通过行号差值得到剩余行数

为什么你的原公式不符合预期?

你之前使用的COUNTIFS是统计当前行及之前的0的数量,方向是向前计数,而需求是向后计算到下一个1的行数,因此逻辑方向相反,无法得到正确结果。上述两种方案都是通过向后查找下一个1的位置来实现需求,完全匹配你的示例结果。

内容的提问来源于stack exchange,提问作者Thomas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:47:32