如何用Power Query的M代码判断列单元格内容为字母或数字
在Power Query中判断单元格内容为字母或数字的解决方案
你的问题核心是原代码判断的是列的数据类型而非单元格内容的实际属性——因为列同时包含字母和数字,系统自动将列类型设为文本,所以[Column1] is number永远返回false,导致结果全为"Letters"。
以下是两种可行的M语言解决方案:
方法1:尝试转换为数字判断
通过Value.FromText尝试将文本内容转为数字,转换成功则判定为数字,否则为字母:
= Table.AddColumn(Source, "内容类型", each try let converted = Value.FromText([Column1]) in if converted is number then "Number" else "Letters" otherwise "Letters")
原理:利用try otherwise捕获转换失败的情况(字母无法转为数字),成功转换则说明是数字内容。
方法2:严格判断纯数字/纯字母字符串
如果需要严格确认单元格内容全为数字或全为字母,可使用Text.All结合字符判断函数:
= Table.AddColumn(Source, "内容类型", each if Text.All([Column1], each Text.IsDigit(_)) then "Number" else if Text.All([Column1], each Text.IsLetter(_)) then "Letters" else "混合内容" // 可选:处理同时包含字母和数字的情况 )
原理:Text.IsDigit(_)检查单个字符是否为数字,Text.All确保整个字符串的所有字符都满足该条件,同理Text.IsLetter(_)判断是否为字母。
内容的提问来源于stack exchange,提问作者Gregory Gene Conrad
相关产品推荐
相关产品推荐

