如何在Google Sheets中检测连续三个零并生成指定提示?
解决方案:Google Sheets检测连续三个0并标记“stop”
场景说明
你需要在对应Trade的H列单元格中,当序列出现连续三个0时,在第三个0对应的位置标记“stop”,后续单元格留空(如Trade4触发连续三个0时,H列对应Trade4的位置写“stop”,Trade5及以后的H列单元格不填值)。
针对逐Trade标记的公式(推荐)
在H4单元格(对应第一个Trade的状态列)输入以下数组公式,按回车即可(新版Google Sheets支持自动数组扩展):
=SCAN("", I4:AB4, LAMBDA(prev_state, current_val, IF(prev_state="stop", "", IF(AND(current_val=0, OFFSET(current_val, 0, -1)=0, OFFSET(current_val, 0, -2)=0), "stop", "") ) ))
公式解释
SCAN:遍历I4到AB4的每个Trade值,累积记录上一个单元格的状态(prev_state)- 若上一个状态已经是
stop,当前单元格直接留空 - 若当前Trade值为0,且左侧相邻的两个Trade值也都是0,触发条件,当前单元格写
stop - 其他情况留空
如果担心OFFSET在数组中的兼容性,可以改用INDEX定位:
=SCAN("", SEQUENCE(1, COLUMNS(I4:AB4)), LAMBDA(prev_state, idx, IF(prev_state="stop", "", IF(AND(INDEX(I4:AB4, idx)=0, INDEX(I4:AB4, idx-1)=0, INDEX(I4:AB4, idx-2)=0), "stop", "") ) ))
整行检测(只要存在连续三个0就标记该行H列)
如果需求是整行只要出现过连续三个0,该行H列统一显示“stop”,可以用以下公式:
=IF(MAX(SCAN(0, I4:AB4, LAMBDA(count, val, IF(val=0, count+1, 0))))>=3, "stop", "keep")
公式解释
SCAN:计算连续0的个数,遇到0就累加计数,遇到非0重置为0MAX:取整行中最长的连续0个数,若≥3则显示stop,否则显示keep
原公式问题说明
你之前用的=IF(AND(ARRAYFORMULA(I4={J4:AB4})),"stop","keep")存在两个核心问题:
AND会将数组结果转为单个布尔值,无法实现逐元素判断- 逻辑仅比较I4与后续单元格是否相等,完全没有检测“连续三个0”的逻辑
内容的提问来源于stack exchange,提问作者Abdul-Aziz Muhammad
相关产品推荐
相关产品推荐

