Power BI导入Excel数据时,Power Query Editor时间格式转换问题
解决Power BI中Excel时长文本转可计算格式的问题
方法一:转成Duration类型(保留时长格式)
- 导入数据后进入Power Query编辑器
- 选中要处理的时长列(总工时/实际工时),点击「添加列」→「自定义列」,根据你的时长格式选对应公式:
- 如果是标准
hh:mm:ss或d.hh:mm:ss格式,直接用:Duration.FromText([你的列名]) - 如果是特殊格式(比如
h:mm、mm:ss),拆分各部分构建Duration:
以h:mm为例:let parts = Splitter.SplitTextByDelimiter(":")([你的列名]), hours = Number.From(List.First(parts)), minutes = Number.From(List.Last(parts)) in #duration(0, hours, minutes, 0)
- 如果是标准
- 确定后新列就是可计算的Duration类型,支持求和、筛选等操作
- 遇到异常值(空值、乱码),加异常捕获避免报错:
try Duration.FromText([你的列名]) otherwise null
方法二:直接转成数值型小时数
如果只需要统计总时长,不需要保留时长格式,可以转成小时数:
- 在Power Query中添加自定义列,用公式:
let duration = Duration.FromText([你的列名]), totalHours = Duration.TotalHours(duration) in totalHours - 生成的列是Decimal类型,直接做求和、平均值都没问题
异常格式处理
如果你的时长文本是无分隔符的格式(比如123456代表12小时34分56秒),先拆分再转换:
let text = [你的列名], hours = Number.From(Text.Start(text, 2)), minutes = Number.From(Text.Middle(text, 2, 2)), seconds = Number.From(Text.End(text, 2)) in #duration(0, hours, minutes, seconds)
内容的提问来源于stack exchange,提问作者mrk777
相关产品推荐
相关产品推荐

