PowerQuery计算时长在编辑器正常 加载至Excel工作表显示空白
问题原因及解决方案
核心原因
- 你创建
TimeDelayHours列时数据类型设置错误:两个datetime值相减得到的是时间差,你强制将其指定为了type time类型。Power Query中的time类型仅用于表示单日的时刻,取值范围限制在00:00:00到23:59:59,既不支持负值,也不支持超过24小时的时长,不符合时间差的存储需求,这类超出存储范围的值加载到Excel工作表时就会显示为空白。你计算的TimeDelayMins列可正常显示,就是因为你将其设置为了数字类型,不存在time类型的取值范围限制问题。 - 跨端格式兼容问题:Power Query的
time类型值导出到Excel时,如果和工作表单元格的默认时间格式不匹配,也会触发显示异常。
修复方案
修改TimeDelayHours列的创建代码,将数据类型从type time替换为type duration即可,duration是Power Query专门用于存储时间差的类型,支持正负值、也支持超过24小时的时长,导出到Excel可正常显示:
// 修改前代码 #"Add TimeDelayHours" = Table.AddColumn( #"Add DayOfWeek", "TimeDelayHours", each (([AdministeredDt]-[prescribedate])), type time ), // 修改后代码 #"Add TimeDelayHours" = Table.AddColumn( #"Add DayOfWeek", "TimeDelayHours", each ([AdministeredDt]-[prescribedate]), type duration ),
如果需要在Excel中显示为累计小时格式,可在加载完成后设置该列单元格的自定义格式为[h]:mm:ss,方括号[h]可以让小时数超过24时正常累加显示。
内容的提问来源于stack exchange,提问作者user3012629
相关产品推荐
相关产品推荐

