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

如何在Power Query Editor中将文本时间按自定义区间分组用于Excel/Power Pivot

Power Query 自定义时间区间分组操作步骤

步骤1:转换文本时间字段为标准时间类型

首先要将文本格式的时间转为可计算的日期时间类型,才能做后续的区间判断:

  • 选中你的文本时间列,在顶部「转换」选项卡点击「数据类型」,选择「日期/时间」即可自动识别转换
  • 如果遇到格式特殊识别失败的情况,可新增自定义列用DateTime.FromText指定格式转换,示例代码如下:
    = DateTime.FromText([你的文本时间字段名], [Format="yyyy-MM-dd HH:mm:ss", Culture="zh-CN"])
    转换完成后可删除原文本时间列,避免后续操作混淆。

步骤2:新增列标记所属时间区间

根据你的分组需求选择对应方案:

场景1:按固定周期分组(如按小时、每2小时、每30分钟等)

直接用DateTime.RoundDown函数按周期向下取整即可,示例(按1小时分组):
= DateTime.RoundDown([转换后的标准时间列名], #duration(0,1,0,0))
参数调整规则:#duration(天,小时,分钟,秒),按2小时分组就修改为#duration(0,2,0,0),按30分钟分组修改为#duration(0,0,30,0)即可。生成的列会显示对应区间的起始时间,可直接作为分组维度。

场景2:按自定义不规则时段分组(如早6点-早9点、晚17点-20点等)

用条件判断对应时段即可,示例代码(新增自定义列):

= let
    小时值 = Time.Hour([转换后的标准时间列名])
in
    if 小时值 >=6 and 小时值 <9 then "早高峰(6-9点)"
    else if 小时值 >=11 and 小时值 <14 then "午间(11-14点)"
    else if 小时值 >=17 and 小时值 <20 then "晚高峰(17-20点)"
    else "其他时段"

如果需要按「日期+时段」拆分不同天的同类型时段,可将日期拼接在时段前:
= Text.From(DateTime.Date([转换后的标准时间列名])) & " " & 上述时段判断结果

步骤3:按时间区间分组聚合

  • 选中上一步生成的「时间区间」列,在顶部「转换」选项卡点击「分组依据」
  • 在弹窗中选择你需要的聚合规则:求和、计数、平均值等,对应选中要聚合的数值字段
  • 点击确定后即可得到最终分组结果,可直接加载到Power Pivot或Excel工作表中使用。

注意:如果你的时间文本仅含时刻不含日期,可使用Time.FromText转换为time类型,后续判断逻辑同上,只需将DateTime相关函数替换为Time对应的函数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:39:03