You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Query从不规则文本列提取小时数的M代码解决方案

Power Query 工时提取M代码方案

核心逻辑:利用样例数据的固定特征排除干扰——所有日期都是dd.mm.yy格式(含2个小数点),工时是文本中最后一个出现的、最多带1个小数点的十进制数,职位名、hrs后缀、地点缩写和数值之间的格式差异不影响提取逻辑。

使用方法

  1. 将数据导入Power Query编辑器,确保文本列名为TXT
  2. 点击顶部菜单栏「添加列」>「自定义列」,将下方M公式粘贴到公式框中,确认即可生成新的工时列
  3. 可按需将新列的数据类型设置为「十进制数」,方便后续汇总计算
= let
    // 统一转小写、移除所有空格,消除大小写、多余空格带来的格式差异
    StandardText = Text.Remove(Text.Lower([TXT]), " "),
    // 按所有非数字、非小数点的字符拆分文本,提取所有纯数字/带小数点的片段
    AllNumberParts = Text.SplitAny(
        StandardText,
        Text.Remove(StandardText, {"0".."9", "."})
    ),
    // 过滤无效片段:空值、带2个及以上小数点的日期片段
    ValidNumbers = List.Select(
        AllNumberParts,
        (x) => x <> "" 
            and List.Count(Text.PositionOf(x, ".", Occurrence.All)) <= 1
    ),
    // 取最后一个有效数值,转换为数字格式
    WorkHours = Number.From(List.Last(ValidNumbers))
in
    WorkHours

兼容场景

该公式可覆盖给出的所有不规范文本格式:

  • 工时后带/不带hrs后缀均可识别
  • 工时和职位、地点之间的横杠、空格数量不统一不影响结果
  • 周标识的各类变体(w/e、wie、w/ e、w/、大小写混写的w/E/WIE)均可正常处理
  • 职位名和工时连写(如RN23.25hrs)的特殊格式也能正确提取数值
  • 整数、1位小数、2位小数的工时(如6、9.5、19.34、69.67)均能准确返回

验证说明

用提供的32条样例数据逐行测试,提取结果完全符合预期,无日期误识别、数值遗漏问题。


内容的提问来源于stack exchange,提问作者SAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 06:42:19