Excel生成列车运行分钟级计数及可视化的高效优化方案咨询
Excel生成列车运行分钟级计数及可视化的高效优化方案咨询
兄弟,我太懂你这种用Excel暴力堆公式的痛苦了——570万个公式在后台跑,别说Excel卡,换谁看着都头大!其实你这个需求核心就是统计每分钟有多少列车在运行,完全不用给每列车每一分钟都标0/1,换个思路从时间点入手,效率能翻N倍,给你分享几个亲测好用的方法:
方法一:用Power Query做数据转换(最推荐,Excel自带工具)
- 第一步:把你的原始数据(ID、StartTime、EndTime)导入Power Query(点「数据」选项卡→「从表格/范围」,勾选“我的表格有标题”)
- 第二步:给每条列车记录生成对应的分钟序列:在Power Query的「添加列」里选「自定义列」,输入公式
=List.Dates([StartTime], Duration.TotalMinutes([EndTime]-[StartTime])+1, #duration(0,0,1,0)),这样每列车的运行时段就会拆成每分钟一行的记录 - 第三步:分组统计:选中生成的分钟列,点「转换」→「分组依据」,分组列选刚才的分钟列,新列名设为“运行列车数”,操作选“计数行”,一键得到每分钟的统计结果
- 第四步:把结果加载回Excel,直接插入折线图或者柱状图,可视化分分钟搞定,全程没有冗余公式!
方法二:用辅助列+数据透视表(适合不想碰复杂函数的同学)
- 第一步:先做一个时间序列辅助表:在空白列第一行输入
=TIME(INT((ROW(A1)-1)/60),MOD(ROW(A1)-1,60),0),然后下拉1440行,就能快速生成00:00到23:59的所有分钟时间 - 第二步:用
COUNTIFS函数统计每个分钟的运行列车数,在辅助表旁边的列输入公式:=COUNTIFS(原始数据!$B:$B,"<="&A2,原始数据!$C:$C,">="&A2)
这里A2是辅助表里的分钟时间,B列是原始数据的StartTime,C列是EndTime,总共只需要1440个公式,比570万少太多了! - 第三步:选中辅助表的时间和计数数据,直接插图表或者做数据透视表,流畅得飞起
方法三:用Excel动态数组函数(365/2021版本可用)
- 如果你用的是Excel 365或2021,直接用动态数组函数一步到位,连辅助表都省了:
输入后按回车,会自动溢出生成从00:00到23:59的每分钟时间,以及对应的运行列车数,直接用这个数据做可视化就行=LET( times, SEQUENCE(1440,,0,1/1440), counts, BYROW(times, LAMBDA(t, SUM(--(原始数据!$B:$B<=t)*(原始数据!$C:$C>=t)))), HSTACK(times, counts) )
小补充:可视化技巧
- 推荐用折线图展示,能清晰看到全天列车运行的波动趋势,高峰时段一眼就能找到
- 如果想突出高峰时段的占比,也可以用面积图,视觉效果更直观
备注:内容来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

