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

Power Query M如何筛选长度1<x≤3的文本以排除空值

M代码多条件筛选文本长度解决方案

问题背景

尝试从生成的列表中提取处于两个指定长度之间的数值数据,目前代码中仅使用单个参数筛选文本,即通过Text.Length(_)<=3筛选长度不超过3个字符的文本。
效果示意图

注:为简化问题,示例数据已做简化,需通过该方法拆分数据。

现有M代码

let
Source = Excel.CurrentWorkbook(){[Name="Table10"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}}),
#"Added Custom" = Table.AddColumn( #"Changed Type", "Custom", each Text.Split([Column1], " ")),
#"Removed Columns1" = Table.RemoveColumns(#"Added Custom",{"Column1"}),

//仅提取数值到列表
#"Added Custom1" = Table.AddColumn(#"Removed Columns1", "Custom.1", each List.Transform([Custom], each Text.Select(_, {"0".."9", "."}))),

//提取长度≤3的值到列表
#"Added Custom2"= Table.AddColumn(#"Added Custom1", "Custom.2", each List.Select([Custom.1],each Text.Length(_)<=3)),

//将提取的值合并为新列表
#"Added Custom3" = Table.AddColumn(#"Added Custom2", "Custom.3", each Text.Combine([Custom.2], " ,")),

#"Removed Columns" = Table.RemoveColumns(#"Added Custom3",{"Custom", "Custom.1", "Custom.2"})
in
#"Removed Columns"

存在问题

现有代码筛选长度≤3的文本时,空单元格也会被选中,需筛选长度x满足1<x≤3的文本。

输入数据示例

FF3136451  200
3152678  100
(NDM) 8315865  100
0000660  50

修复方案

只需修改#"Added Custom2"步骤的筛选条件,增加长度大于1的判断即可,修改后对应代码如下:

//提取长度满足1<x≤3的值到列表
#"Added Custom2"= Table.AddColumn(#"Added Custom1", "Custom.2", each List.Select([Custom.1],each Text.Length(_) > 1 and Text.Length(_) <=3))

如果需要排除非数值内容的干扰,可额外增加有效性判断,代码如下:

#"Added Custom2"= Table.AddColumn(#"Added Custom1", "Custom.2", each List.Select([Custom.1], each try Value.Is(Value.FromText(_), type number) and Text.Length(_) > 1 and Text.Length(_) <= 3 otherwise false))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:48:03