Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Reply
RL1
Frequent Visitor

Split column based on text and numerical characters

Hi,

 

I'm trying to split a column that contains text and number components into two seperate columns, one containing the text characters and another containing the numbers. 

 

i.e. I want to go from the single column:

 

AB143

A122

VHG309

X12

XX13

 

to two columns containing:

 

AB                   143

A                     122

VHG                309

X                     12

XX                   13

 

Is this possible within Power BI?

Thanks.

1 ACCEPTED SOLUTION

Instead I would propose Text.PositionOfAny as illustrated in this video.

 

Relevant parts of the code generated during video recording ("PreviousStep" is the name of your previous step):

 

    #"Added Custom" = Table.AddColumn(PreviousStep, "Custom", each Text.PositionOfAny([Column1],{"0".."9"})),
    #"Inserted First Characters" = Table.AddColumn(#"Added Custom", "First Characters", each Text.Start([Column1], [Custom]), type text),
    #"Inserted Text Range" = Table.AddColumn(#"Inserted First Characters", "Text Range", each Text.Middle([Column1], [Custom]), type text),
    #"Removed Columns" = Table.RemoveColumns(#"Inserted Text Range",{"Column1", "Custom"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Text Range", "Number"}}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Renamed Columns",{{"Number", Int64.Type}})
Specializing in Power Query Formula Language (M)

View solution in original post

4 REPLIES 4
Greg_Deckler
Super User
Super User

You could potentially use PostionOfAny function:

 

List.PositionOfAny("ABCBA", {"A","B"}, Occurrence.All) equals {0,1,3,4}  

You would probably have to use an M custom function or another function to return the lowest value in the list and then feed that to a Split.

 

 


Follow on LinkedIn
@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

Instead I would propose Text.PositionOfAny as illustrated in this video.

 

Relevant parts of the code generated during video recording ("PreviousStep" is the name of your previous step):

 

    #"Added Custom" = Table.AddColumn(PreviousStep, "Custom", each Text.PositionOfAny([Column1],{"0".."9"})),
    #"Inserted First Characters" = Table.AddColumn(#"Added Custom", "First Characters", each Text.Start([Column1], [Custom]), type text),
    #"Inserted Text Range" = Table.AddColumn(#"Inserted First Characters", "Text Range", each Text.Middle([Column1], [Custom]), type text),
    #"Removed Columns" = Table.RemoveColumns(#"Inserted Text Range",{"Column1", "Custom"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Text Range", "Number"}}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Renamed Columns",{{"Number", Int64.Type}})
Specializing in Power Query Formula Language (M)

That works well (& video was very helpful).

 

Thanks.

If you could get your cell addresses as $A$1 rather that A1, you could simply split columns based on the delimiter $.

Helpful resources

Announcements
Fabcon_Europe_Social_Bogo

Europe’s largest Microsoft Fabric Community Conference

Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.

Power BI Carousel June 2024

Power BI Monthly Update - June 2024

Check out the June 2024 Power BI update to learn about new features.

PBI_Carousel_NL_June

Fabric Community Update - June 2024

Get the latest Fabric updates from Build 2024, key Skills Challenge voucher deadlines, top blogs, forum posts, and product ideas.

RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.