Вы можете сделать это с помощью Power Query
.
Я уверен, что есть более чистый способ сделать это, но SplitOnAnyDelimiter
, похоже, не имеет возможности разбить только на первый экземпляр, и у меня нет времени записать все в сжатый 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"
Источник
![enter image description here](https://i.stack.imgur.com/KuKlj.png)
Результаты
![enter image description here](https://i.stack.imgur.com/hME1b.png)
РЕДАКТИРОВАТЬ Я подозреваю, что следующий код может быть более эффективным, поскольку добавляются только столбцы результатов:
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"