如何在字符串中查找当年/下一年?Power Query M函数报错解决
错误原因
- 报错根源是
Date.AddYears()函数的入参类型不符合要求:该函数第一个参数必须是date或datetime类型的时间值,你原代码中传入的是Date.Year(DateTime.LocalNow()),这个表达式返回的是整数类型的年份数值(例如2024),不是合法的时间类型值。 - 参数类型不匹配导致M引擎无法正常执行年份计算逻辑,误将函数本身识别为待类型转换的对象,最终抛出Cannot convert value of Function type to Date type的错误。
修正代码
你可以先把当前时间存为变量,基于完整时间值分别计算当前年份、下一年份的4位文本,再做字符串包含判断,修正后的代码如下:
= let Now = DateTime.LocalNow(), CurrYear = Text.From(Date.Year(Now)), NextYear = Text.From(Date.Year(Date.AddYears(Now, 1))) in if Text.Contains([Name], CurrYear) or Text.Contains([Name], NextYear) then 1 else null
注:如果需要避免文件名中其他位置出现的连续4位数字误判(例如产品型号带2024字段、版本号包含2024串),可以后续加正则规则做精准年份段匹配,上述代码已经完全覆盖你最初提出的匹配需求。
内容的提问来源于stack exchange,提问作者mustafa00
相关产品推荐
相关产品推荐

