如何在Power Query中移除列中字符串的最后X个字符?
Power Query M语言实现移除文件名最后11个字符的正确方法
你的问题出在直接对表格列应用文本函数,而不是针对每行的文本值操作。以下是两种简洁的解决方案,完全对应Excel中Left(string, len(string)-11)的效果:
方法1:使用Text.Start截取前N个字符
通过Text.Length获取字符串长度,减去11后作为Text.Start的截取长度,直接保留所需部分:
let Source = Forecasting, #"Removed Other Columns" = Table.SelectColumns(Source,{"Source.Name"}), #"Removed Duplicates" = Table.Distinct(#"Removed Other Columns"), #"Renamed Columns" = Table.RenameColumns(#"Removed Duplicates",{{"Source.Name", "Submitted Reports"}}), #"Trimmed Last 11 Characters" = Table.TransformColumns(#"Renamed Columns", { {"Submitted Reports", each Text.Start(_, Text.Length(_) - 11), type text} }) in #"Trimmed Last 11 Characters"
方法2:使用Text.RemoveRange删除末尾字符
直接从倒数第11位开始删除到结尾,逻辑更直观:
let Source = Forecasting, #"Removed Other Columns" = Table.SelectColumns(Source,{"Source.Name"}), #"Removed Duplicates" = Table.Distinct(#"Removed Other Columns"), #"Renamed Columns" = Table.RenameColumns(#"Removed Duplicates",{{"Source.Name", "Submitted Reports"}}), #"Trimmed Last 11 Characters" = Table.TransformColumns(#"Renamed Columns", { {"Submitted Reports", each Text.RemoveRange(_, Text.Length(_) - 11), type text} }) in #"Trimmed Last 11 Characters"
示例验证
输入数据:
Submitted Reports Bug Bunny 241008923443.xlsm Daffy Duck 241130234521.xlsm Wyle E. Cayote 240909124312.xlsm
输出结果:
Submitted Reports Bug Bunny 241008 Daffy Duck 241130 Wyle E. Cayote 240909
错误原因说明
你之前的Text.Reverse(#"Renamed Columns"{{"Submitted Reports"}})报错,是因为#"Renamed Columns"{{"Submitted Reports"}}返回的是整列表格,而Text.Reverse需要单个文本值。使用each关键字可以遍历每行的文本值,让函数作用于每个单元格内容。
内容的提问来源于stack exchange,提问作者Forward Ed
相关产品推荐
相关产品推荐

