如何用Power Query将Excel中dd:hh:mm:ss格式文本转为分钟数
Power Query 将dd:hh:mm:ss文本转换为总分钟数
方法一:拆分列直接计算
适合快速处理单字段或少量字段:
- 把数据导入Power Query:选中数据区域,点击「数据」选项卡→「自表格/区域」(勾选「我的表格有标题」)
- 拆分目标列:选中要转换的文本列,点击「转换」→「拆分列」→「按分隔符」,分隔符选「冒号」,拆分方式选「拆分为列」,「拆分到」选「最多次数」,生成4列分别对应天、时、分、秒
- 转换数据类型:选中这4列,点击「转换」→「数据类型」→「整数」
- 添加自定义列:点击「添加列」→「自定义列」,输入公式(替换成实际拆分后的列名):
[列名_天]*1440 + [列名_时]*60 + [列名_分] - 清理冗余:删除拆分出来的4列,保留新生成的总分钟数列即可
方法二:自定义函数批量处理
适合大量字段重复转换的场景:
- 创建自定义函数:
- 点击「主页」→「新建源」→「空白查询」,右键重命名为
ConvertToTotalMinutes - 在公式栏粘贴以下代码:
(text as text) as number => let SplitParts = Text.Split(text, ":"), Days = Number.From(SplitParts{0}), Hours = Number.From(SplitParts{1}), Minutes = Number.From(SplitParts{2}), TotalMinutes = Days*1440 + Hours*60 + Minutes in TotalMinutes
- 点击「主页」→「新建源」→「空白查询」,右键重命名为
- 批量转换字段:
- 回到你的数据查询,选中需要转换的列(可按住Ctrl多选),点击「转换」→「调用自定义函数」
- 在弹出的窗口中,函数名选择
ConvertToTotalMinutes,「参数」选择当前列,确定后自动生成总分钟数列
为什么Duration函数会报错?
Power Query的Duration.FromText只支持hh:mm:ss或d.hh:mm:ss(天和小时用点分隔)的格式,你的数据是dd:hh:mm:ss(全冒号分隔),不符合函数的识别规则,所以会报错。
内容的提问来源于stack exchange,提问作者sand_glokta
相关产品推荐
相关产品推荐

