Excel Power Query如何将文本转为Duration?适配两种时长格式
解决Excel Power Query中格式不一致的文本转Duration及后续排名、差距计算问题
步骤1:统一文本格式并转换为Duration类型
针对Interval Time列的两种格式(ss.zzz和mm:ss.zzz),通过补全缺失的小时/分钟部分,将文本统一转换为Duration类型:
- 打开Power Query编辑器,选中目标数据表格
- 点击添加列 > 自定义列,输入以下M语言公式:
= let timeStr = [Interval Time], hasColon = Text.Contains(timeStr, ":"), fullTimeStr = if hasColon then "0:" & timeStr else "0:0:" & timeStr in Duration.FromText(fullTimeStr)
- 将新列命名为
Duration Time,可选择删除原Interval Time列
步骤2:按时长计算排名
使用Power Query的排名函数,按Duration Time升序(时间越短排名越高)生成竞技式排名:
在高级编辑器的转换步骤后添加以下代码(注意替换#"重命名的列"为你实际的上一步骤名称):
= Table.AddRankColumn(#"重命名的列", "Rank", {"Duration Time", Order.Ascending}, [RankKind = RankKind.Competition])
注:
RankKind.Competition表示同分同名次、后续名次顺延,符合常规比赛排名逻辑。
步骤3:计算与第一名的时间差距
先提取第一名的最短时长,再计算每行与该时长的绝对差值:
- 添加自定义列,输入以下公式(替换
#"添加的排名"为实际步骤名称):
= let firstDuration = List.Min(#"添加的排名"[Duration Time]) in Duration.Abs([Duration Time] - firstDuration)
- 将新列命名为
Time Gap,该列将显示当前运动员与第一名的时间差(正数表示比第一名慢)
内容的提问来源于stack exchange,提问作者Khorne049
相关产品推荐
相关产品推荐

