[TABLE="width: 439"]
<colgroup><col><col></colgroup><tbody>[TR]
[TD]Column1[/TD]
[TD]Custom[/TD]
[/TR]
[TR]
[TD]123ABC45[/TD]
[TD]123-ABC-45[/TD]
[/TR]
[TR]
[TD]2155G100[/TD]
[TD]2155-G-100[/TD]
[/TR]
[TR]
[TD]1DSTH67[/TD]
[TD]1-DSTH-67[/TD]
[/TR]
[TR]
[TD]3256ACD569[/TD]
[TD]3256-ACD-569[/TD]
[/TR]
[TR]
[TD]369DG699[/TD]
[TD]369-DG-699[/TD]
[/TR]
[TR]
[TD]2569AVBT789[/TD]
[TD]2569-AVBT-789[/TD]
[/TR]
[TR]
[TD]125abg789[/TD]
[TD]125-abg-789[/TD]
[/TR]
[TR]
[TD]abc789cfg[/TD]
[TD]abc-789-cfg[/TD]
[/TR]
[TR]
[TD]256abc369[/TD]
[TD]256-abc-369[/TD]
[/TR]
</tbody>[/TABLE]
Power query code
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Added Custom" = Table.AddColumn(Source, "Custom", each Text.ToList([Column1])),
#"Expanded Custom" = Table.ExpandListColumn(#"Added Custom", "Custom"),
#"Duplicated Column" = Table.DuplicateColumn(#"Expanded Custom", "Custom", "Custom - Copy"),
#"Changed Type" = Table.TransformColumnTypes(#"Duplicated Column",{{"Custom", type text}, {"Custom - Copy", Int64.Type}}),
#"Replaced Errors" = Table.ReplaceErrorValues(#"Changed Type", {{"Custom - Copy", null}}),
#"Added Conditional Column" = Table.AddColumn(#"Replaced Errors", "Custom.1", each if [#"Custom - Copy"] = null then [Custom] else null),
#"Replaced Value" = Table.ReplaceValue(#"Added Conditional Column",null,"-",Replacer.ReplaceValue,{"Custom - Copy", "Custom.1"}),
#"Removed Columns" = Table.RemoveColumns(#"Replaced Value",{"Custom"}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Custom - Copy", "No"}, {"Custom.1", "Letter"}}),
#"Grouped Rows" = Table.Group(#"Renamed Columns", {"Column1"}, {{"Count", each _, type table}}),
#"Added Custom1" = Table.AddColumn(#"Grouped Rows", "No", each Table.Column([Count],"No")),
#"Extracted Values" = Table.TransformColumns(#"Added Custom1", {"No", each Text.Combine(List.Transform(_, Text.From)), type text}),
#"Added Custom2" = Table.AddColumn(#"Extracted Values", "Letter", each Table.Column([Count],"Letter")),
#"Extracted Values1" = Table.TransformColumns(#"Added Custom2", {"Letter", each Text.Combine(List.Transform(_, Text.From)), type text}),
#"Split Column by Delimiter" = Table.SplitColumn(#"Extracted Values1", "No", Splitter.SplitTextByEachDelimiter({"-"}, QuoteStyle.Csv, false), {"No.1", "No.2"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"No.1", Int64.Type}, {"No.2", type text}}),
#"Split Column by Delimiter1" = Table.SplitColumn(#"Changed Type1", "Letter", Splitter.SplitTextByEachDelimiter({"-"}, QuoteStyle.Csv, false), {"Letter.1", "Letter.2"}),
#"Replaced Value1" = Table.ReplaceValue(#"Split Column by Delimiter1","-","",Replacer.ReplaceText,{"No.2", "Letter.2"}),
#"Changed Type2" = Table.TransformColumnTypes(#"Replaced Value1",{{"No.1", type text}, {"No.2", type text}, {"Letter.1", type text}, {"Letter.2", type text}}),
#"Added Custom3" = Table.AddColumn(#"Changed Type2", "Custom", each if[No.1]=null then[Letter.1]&"-"&[No.2]&"-"&[Letter.2] else[No.1]&"-"&[Letter.2]&"-"&[No.2]),
#"Removed Columns1" = Table.RemoveColumns(#"Added Custom3",{"Count", "No.1", "No.2", "Letter.1", "Letter.2"})
in
#"Removed Columns1"