求Google Sheets函数:从指定单元格向右计数空白单元格至首个非空单元格
Google Sheets 单单元格统计起始位置后连续空闲时段数量
需求实现方案
基于你已有的起始单元格定位逻辑,以下单单元格函数可直接实现:从目标起始单元格向右统计连续空白单元格(空闲)的数量,直至遇到首个非空单元格(忙碌):
=IFERROR( MATCH(TRUE, INDEX(INDIRECT(REGEXREPLACE(ADDRESS(1, MATCH(FLOOR($B$1,"0:10"), D$1:CX$1, 0)+3, 4), "[1]", TEXT(ROW(), "0")) & ":CX" & ROW())<>"", 0) - 1, COLUMNS(D:CX) - MATCH(FLOOR($B$1,"0:10"), D$1:CX$1, 0) - 2 )
函数拆解说明
- 保留原有定位逻辑:
原函数REGEXREPLACE(ADDRESS(1,MATCH(FLOOR($B$1,"0:10"),D$1:CX$1,0)+3,4),"[1]",TEXT(ROW(),"0"))负责生成当前行的起始空闲单元格地址(如D5)。 - 转换为可引用范围:
用INDIRECT将生成的地址转为可读取的单元格,再扩展为从该单元格到当前行CX列的范围(INDIRECT(...)&":CX"&ROW()),覆盖后续所有时段列。 - 定位首个忙碌单元格:
INDEX(...)<>""生成布尔数组标记非空(忙碌)单元格,MATCH(TRUE,...0)找到第一个忙碌单元格的相对位置,减1即为连续空闲的时段数。 - 处理全空闲情况:
IFERROR捕获"从起始位置到最后全为空闲"的场景,用COLUMNS(D:CX)-MATCH(...)计算剩余所有空闲时段的总数。
使用注意事项
- 替换
D$1:CX$1为你实际的时间表头列范围; $B$1为你设置的时间输入单元格,保持绝对引用确保函数在各行复用;- 将函数直接粘贴到对应人员行的统计单元格即可,无需额外辅助列。
内容的提问来源于stack exchange,提问作者Blue Pi
相关产品推荐
相关产品推荐

