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

求Excel公式:统计非零积雪深度最长连续序列及起止日期

Excel公式实现积雪深度连续序列统计与日期获取

针对你提出的三个需求(统计最长连续积雪序列长度、获取起止日期),以下是无需手动操作的纯Excel公式解决方案,同时说明原公式报错的原因:


1. 统计大于0的积雪深度最长连续序列长度(HP列)

适用Excel 365/2021(动态数组支持)

直接输入以下公式即可:

=MAX(IFERROR(FREQUENCY(IF(D3:HO3>0,COLUMN(D3:HO3)),IF(D3:HO3<=0,COLUMN(D3:HO3))),0))

适用旧版Excel(如2019及更早)

输入公式后需按 Ctrl+Shift+Enter 以数组公式形式确认:

=MAX(IFERROR(FREQUENCY(IF(D3:HO3>0,COLUMN(D3:HO3)),IF(D3:HO3<=0,COLUMN(D3:HO3))),0))

公式逻辑:

  • 先筛选出积雪深度>0的单元格列号,再以无积雪(空值/<=0)的单元格列号作为间隔点
  • 用FREQUENCY计算每个连续积雪序列的长度,MAX取最大值
  • IFERROR处理无积雪数据的情况,返回0避免错误

2. 获取最长连续序列的起始日期(HQ列)

适用Excel 365/2021

使用LET函数简化逻辑,可读性更强:

=LET(
    cols, COLUMN(D3:HO3),
    valid, IF(D3:HO3>0, cols, ""),
    runs, SCAN("", valid, LAMBDA(a, v, IF(v<>"", IF(a="", v, a), ""))),
    max_len, MAX(FREQUENCY(valid, IF(valid="", cols))),
    start_col, XLOOKUP(max_len, FREQUENCY(valid, IF(valid="", cols)), runs,, 0, -1),
    INDEX(D2:HO2, MATCH(start_col, cols, 0))
)

适用旧版Excel

输入后按 Ctrl+Shift+Enter 确认:

=INDEX(D2:HO2,MATCH(MAX(IF(FREQUENCY(IF(D3:HO3>0,COLUMN(D3:HO3)),IF(D3:HO3<=0,COLUMN(D3:HO3)))=MAX(FREQUENCY(IF(D3:HO3>0,COLUMN(D3:HO3)),IF(D3:HO3<=0,COLUMN(D3:HO3)))),IF(D3:HO3>0,COLUMN(D3:HO3),""))),COLUMN(D3:HO3),0))

公式逻辑:

  • 定位最长连续序列的起始列号,再通过INDEX匹配第2行对应的日期
  • 旧版公式通过嵌套IF和FREQUENCY找到最长序列的起始列,365版本用SCAN标记每个序列的起始列,再用XLOOKUP快速匹配

3. 获取最长连续序列的结束日期(HR列)

适用Excel 365/2021

=LET(
    cols, COLUMN(D3:HO3),
    valid, IF(D3:HO3>0, cols, ""),
    runs, SCAN("", valid, LAMBDA(a, v, IF(v<>"", v, ""))),
    max_len, MAX(FREQUENCY(valid, IF(valid="", cols))),
    end_col, XLOOKUP(max_len, FREQUENCY(valid, IF(valid="", cols)), runs,, 0, -1),
    INDEX(D2:HO2, MATCH(end_col, cols, 0))
)

适用旧版Excel

输入后按 Ctrl+Shift+Enter 确认:

=INDEX(D2:HO2,MATCH(MAX(IF(FREQUENCY(IF(D3:HO3>0,COLUMN(D3:HO3)),IF(D3:HO3<=0,COLUMN(D3:HO3)))=MAX(FREQUENCY(IF(D3:HO3>0,COLUMN(D3:HO3)),IF(D3:HO3<=0,COLUMN(D3:HO3)))),IF(D3:HO3>0,COLUMN(D3:HO3),""))+FREQUENCY(IF(D3:HO3>0,COLUMN(D3:HO3)),IF(D3:HO3<=0,COLUMN(D3:HO3)))-1,COLUMN(D3:HO3),0))

公式逻辑:

  • 与起始日期公式逻辑类似,定位最长序列的结束列号后匹配日期
  • 旧版公式通过“起始列号+序列长度-1”计算结束列号

原公式报错原因

你提供的原公式:

=MAX(FREQUENCY(IF(ISNUMBER(D4:HO4);COLUMN(D4:HO4));IF(ISNUMBER(D4:HO4);COLUMN(D4:HO4))))

逻辑错误在于FREQUENCY的参数用法:该函数要求第二个参数是间隔点数组(即用来分割数据的边界),而你同时用了有数据的列号作为两个参数,导致无法正确计算连续序列长度,因此触发报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:37:32