Excel时间区间去重问题:生成无重复连续时间区间
解决Excel动态生成无重复连续时间区间问题
方法一:Excel 365/2021 动态公式法(自动更新)
适配新版本Excel,结果随原始数据自动同步更新:
- 提取唯一小时起始点:在新工作表的A2单元格输入以下公式,直接回车即可(Excel 365/2021支持动态数组,无需数组输入):
说明:=SORT(UNIQUE(IF(WTW!D4:D100<>"",LEFT(TEXT(WTW!D4:D100,"HH"),2)&":00","")))UNIQUE自动去重,SORT保证时间按升序排列,IF过滤空值,TEXT提取小时并格式化为HH:00格式。 - 生成连续时间区间:在B2单元格输入公式,下拉填充到A列有值的行:
说明:=A2&" - "&TEXT(VALUE(A2)+TIME(1,0,0),"HH:00")VALUE(A2)将文本时间转为数值,TIME(1,0,0)实现加1小时,再转回HH:00格式,最终拼接成完整区间。
方法二:Power Query法(灵活适配大/动态数据)
适合数据量较大或需要复杂处理逻辑的场景,支持一键刷新更新:
- 打开WTW工作表,选中D列数据(包含表头,无表头可手动添加),点击「数据」选项卡→「从表格/区域」,导入Power Query编辑器。
- 添加自定义列提取小时起始点:点击「添加列」→「自定义列」,输入公式:
= Time.StartOfHour([D]) - 移除重复项:选中刚添加的自定义列,点击「开始」→「移除重复项」。
- 排序:选中自定义列,点击「排序升序」按钮,确保时间按顺序排列。
- 添加结束时间列:再次添加自定义列,输入公式实现加1小时:
= [自定义列] + #duration(0, 1, 0, 0) - 合并区间列:添加第三个自定义列,拼接起止时间:
= Text.From([自定义列], "HH:mm") & " - " & Text.From([自定义列.1], "HH:mm") - 清理列:删除不需要的原始列和中间列,仅保留合并后的区间列。
- 关闭并上载:点击「关闭并上载」,将结果导出到新工作表。后续原始数据变化时,右键点击结果表格→「刷新」即可更新。
方法三:旧版本Excel(无动态数组功能)
适配Excel 2019及更早版本,通过辅助列实现:
- 提取小时起始点:在新表A2输入你的原公式,下拉填充到对应行:
=IF(WTW!D4="","",LEFT(TEXT(WTW!D4,"HH"),2)&":00") - 标记唯一值:在B2输入公式,下拉填充:
公式会标记每行的小时值是否为首次出现,=COUNTIF($A$2:A2,A2)=1TRUE代表唯一值。 - 筛选唯一值:选中B列,点击「数据」→「筛选」,仅勾选
TRUE,复制A列可见单元格到新区域(如C列)。 - 生成区间:在D2输入公式,下拉填充:
后续原始数据变化时,重新下拉填充A、B列,再筛选复制即可更新结果。=C2&" - "&TEXT(VALUE(C2)+TIME(1,0,0),"HH:00")
内容的提问来源于stack exchange,提问作者Stag
相关产品推荐
相关产品推荐

