因此,这里的问题是,我有一个带有设备名称的表,在该表中,我想将文本分成几列,直到满足大写字母或数字。
表格的外观如下:
表格原样
分割后的样子如下:
待定桌
我正在考虑使用左功能,但不知道如何包括大写字母!这是我尝试过的:
=LEFT(A2,SMALL(FIND(CHAR(ROW(INDIRECT("65:90"))),A2&"ABCDEFGHIJKLMNOPQRSTUVWXYZ"&"АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"&"1234567890" ),2)-1)
不幸的是,它不起作用...重要说明:大写字母可以用西里尔文和拉丁文书写
此外,是否有可能在Power Query中更轻松地实现此目标?
谢谢!
编辑:添加了我的尝试
您可以使用Power Query
。我敢肯定,有一种更干净的方法可以执行此操作,但是SplitOnAnyDelimiter
似乎没有办法仅在第一个实例上进行拆分,而且我没有时间将所有内容编写为简洁的M代码,因此,到目前为止,我添加了一些自定义列:
M代码:
let
Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Name", type text}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "2nd", each Text.Middle([Name],1)),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "Position", each Text.PositionOfAny([2nd],{"0".."9","A".."Z","А".."Я"},Occurrence.First)),
#"Added Custom2" = Table.AddColumn(#"Added Custom1", "Equipment", each Text.Start([Name],[Position])),
#"Added Custom3" = Table.AddColumn(#"Added Custom2", "Custom", each Text.Middle([2nd],[Position])),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom3",{"Name", "2nd", "Position"})
in
#"Removed Columns"
编辑我怀疑以下代码可能更有效,因为添加的唯一列是结果列:
let
Source = Excel.CurrentWorkbook(){[Name="Table5"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Name", type text}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Equipment", each Text.Start([Name],
Text.PositionOfAny(Text.Middle([Name],1),{"0".."9","A".."Z","А".."Я"},Occurrence.First))),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "Part No", each Text.Middle([Name],
Text.PositionOfAny(Text.Middle([Name],1),{"0".."9","A".."Z","А".."Я"},Occurrence.First)+1)),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"Name"})
in
#"Removed Columns"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句