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

Google Sheets:查找起始行之后首个含0单元格对应时间

Google Sheets:计算起始时间后首个0值对应的结束时间

需求说明

你需要统计各区域人员在场的起止时间:

  • 起始时间:已实现,找到区域列首个非0单元格对应的A列时间
  • 结束时间:需找到起始时间所在行之后的首个0单元格对应的A列时间

数据示例:

TimeSection1Section2
9:00am10
9:30am10
10:00am11
10:30am01

解决方案

核心思路

先定位起始时间的行号,再从该行之后的区域中查找首个0值,最后映射到A列的时间。

1. 提取起始行的相对行号(可复用)

以Section1(B列)为例,用以下公式获取首个非0单元格在B2:B中的相对行号:
=MATCH(TRUE,INDEX($B$2:$B>0,0),0)
示例中该公式返回1,对应工作表的第2行。

2. 结束时间公式(整合版)

直接使用以下公式得到Section1的结束时间:

=IFNA(INDEX($A$2:$A, MATCH(TRUE,INDEX($B$2:$B>0,0),0) + MATCH(TRUE, INDEX(OFFSET($B$2:$B, MATCH(TRUE,INDEX($B$2:$B>0,0),0), 0)=0, 0))))

逻辑拆解:

  • OFFSET($B$2:$B, MATCH(...), 0):从起始行的下一行开始,截取B列剩余数据
  • 第二个MATCH:在截取的范围内找到首个0的相对行号
  • 两个行号相加,得到目标单元格在A2:A中的位置,用INDEX返回对应时间

3. 更简洁的XLOOKUP写法

如果你的Google Sheets支持XLOOKUP,用这个更直观:

=IFNA(XLOOKUP(0, OFFSET($B$2:$B, MATCH(TRUE,INDEX($B$2:$B>0,0),0), 0), OFFSET($A$2:$A, MATCH(TRUE,INDEX($B$2:$B>0,0),0), 0),,0,1))

逻辑拆解:

  • 两个OFFSET分别生成起始行之后的B列数据和对应A列时间区域
  • XLOOKUP(0, 查找区, 返回区,,0,1):精确匹配0,从区域开头搜索,返回对应时间

适配其他区域

要计算Section2(C列)的结束时间,只需把公式中的$B$2:$B替换为$C$2:$C,例如:

=IFNA(XLOOKUP(0, OFFSET($C$2:$C, MATCH(TRUE,INDEX($C$2:$C>0,0),0), 0), OFFSET($A$2:$A, MATCH(TRUE,INDEX($C$2:$C>0,0),0), 0),,0,1))

注意点

  • 若起始行之后无0值,公式返回空白(IFNA处理了匹配失败的错误)
  • 确保数据区域连续,无空行干扰匹配结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 14:50:12