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

Excel中如何通过公式按1小时时间区间提取对应B列的最大值?

按1小时时间区间提取对应列最大值的公式实现

前提说明

假设你的时间数据在A列(示例范围A2:A9),数值数据在B列(示例范围B2:B9),目标新表放在D、E列:D列展示时间区间,E列展示对应时段的最大值。


方法1:Excel 365/2021+ 动态数组方案(自动生成结果)

适合大数量级数据,无需手动下拉填充:

  1. 生成唯一小时区间标签
    在D2单元格输入公式,自动提取并去重所有小时段的区间标识:
=UNIQUE(TEXT(A2:A9,"HH:00-HH:59"))

公式会将A列时间转换为12:00-12:59、13:00-13:59这类标准区间格式。

  1. 批量计算对应区间最大值
    在E2单元格输入公式,自动匹配D列区间并输出最大值:
=BYROW(UNIQUE(TEXT(A2:A9,"HH:00")),LAMBDA(hour,MAXIFS(B:B,A:A,">="&hour,A:A,"<"&TEXT(VALUE(hour)+1/24,"HH:00"))))

也可以直接用HSTACK合并区间标签和最大值,一步生成完整结果表:

=HSTACK(UNIQUE(TEXT(A2:A9,"HH:00-HH:59")),BYROW(UNIQUE(TEXT(A2:A9,"HH:00")),LAMBDA(hour,MAXIFS(B:B,A:A,">="&hour,A:A,"<"&TEXT(VALUE(hour)+1/24,"HH:00")))))

方法2:兼容旧版Excel的数组公式(手动下拉)

如果你的Excel版本不支持动态数组,按以下步骤操作:

  1. 先在D列手动输入所有需要统计的小时区间(比如12:00-12:59、13:00-13:59)
  2. 在E2单元格输入公式,按Ctrl+Shift+Enter触发数组公式后下拉填充:
=MAX(IF((A$2:A$9>=TIME(LEFT(D2,2),0,0))*(A$2:A$9<TIME(LEFT(D2,2)+1,0,0)),B$2:B$9,""))

方法3:Google Sheets 一键统计方案

在Google Sheets中用QUERY函数直接分组统计,自动生成带表头的结果:
在D2单元格输入:

=QUERY({A2:A9,B2:B9},"SELECT FORMAT(A,'HH:00-HH:59'), MAX(B) WHERE A IS NOT NULL GROUP BY FORMAT(A,'HH:00-HH:59') LABEL FORMAT(A,'HH:00-HH:59') '时间区间', MAX(B) '最大值'")

核心逻辑说明

所有方案的核心都是按小时维度划分时间区间:判断时间是否落在[HH:00, (HH+1):00)的左闭右开区间内,再对对应B列数值取最大值。动态数组和QUERY函数能自动处理海量数据,避免手动维护区间列表的繁琐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:47:35