PowerQuery使用Text.Contains写嵌套IF报Token Eof Expected错误如何解决
报错原因
Power Query 嵌套 IF 语法要求每个 else 分支后如果要承接新的判断逻辑,必须跟上完整的 if 条件 then 结果 结构,你的原始代码漏写了第二个判断前的 if 关键字,因此触发语法错误。
最简洁的修复写法
直接补全第二个判断的 if 即可,无需拆分多步计算:
if Text.Contains([Status], "A") then "A" else if Text.Contains([Status], "B") then "B" else "C"
扩展性更强的写法
如果后续需要新增更多匹配规则,不需要层层叠加嵌套 IF,可以用列表匹配的方式,后续新增规则仅需要修改MatchList列表即可:
let // 按优先级排列需要匹配的关键词,越靠前优先级越高 MatchList = {"A", "B"}, // 提取第一个匹配到的关键词 MatchResult = List.First(List.Select(MatchList, (keyword) => Text.Contains([Status], keyword))), // 无匹配时返回默认值C Output = if MatchResult <> null then MatchResult else "C" in Output
可选优化
如果匹配不需要区分大小写,可以在Text.Contains函数中增加第三个参数忽略大小写:Text.Contains([Status], "A", Comparer.OrdinalIgnoreCase)
内容的提问来源于stack exchange,提问作者xTTony
相关产品推荐
相关产品推荐

