M 代码相当于 Left (string, len(string)-11)

问题描述 投票:0回答:1

问题

我正在尝试生成文件用户友好的文件名列表,这些文件名用于生成电源查询表。 然而,当阅读 m 个文本命令的列表时,我没有看到执行等效操作的直接方法:

 Text.left(#"previous table"{"Filename'}, Text.length(#"previous table"{"Filename'} - 11)

(以上内容大致基于我对 Excel 的了解)

我尝试过的事情

我因为我看到我的文件名的长度是可变的,但知道我一直想消除最后 11 个字符,我想也许我可以使用

Text.reverse(#"previous table"{"Filename'})
,然后在位置 11 处进行分割,只保留分割的右侧然后再做一次逆转。 然而,我还不太了解 m 语法,当我尝试这样做时,我得到的只是一个错误
Text.Reverese

我的m代码

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"}}),
    Custom1 = Text.Reverse(#"Renamed Columns"{{"Submitted Reports"}})
in
    Custom1

问题

如何从列中的字符串中删除最后一个 X 字符?

当我们进入重命名列步骤时的示例数据

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
excel powerquery m excel-365
1个回答
0
投票

如果您想删除最后五个字符并知道它们是什么(“.xlsm”):

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],

    CleanFilenames = Table.TransformColumns(Source, {{"Submitted Reports", each if Text.EndsWith(_, ".xlsm") then Text.RemoveRange(_, Text.Length(_) - 5, 5) else _}})
in
    CleanFilenames
© www.soinside.com 2019 - 2024. All rights reserved.