Forum Discussion

rajpal_singh's avatar
rajpal_singh
New Member
1 year ago
Solved

Extract numbers from a string column in excel using power query

Hi Community,

 

Can someone please help?

 

How can I extract the numbers from the string in Excel or CSV files using Power Query.

Like in the example below:

 

Thanks for your help in advance.

  • Splitter.SplitTextByWhitespace()(Text.Trim(Text.Select(your_text, {" ", "0".."9"})))
  • use this formula (I have split it into several steps to be more clear)

    let
        Source = Table.FromColumns({{"This is a 500 of 600", "800 of 558 available", "order has 60 of 20"}},{"Description"}),
        #"Added Custom" = Table.AddColumn(Source, "S1", each Text.Split([Description]," ")),
        #"Added Custom1" = Table.AddColumn(#"Added Custom", "S2", each List.Transform([S1], each try Number.From(_) otherwise null)),
        #"Added Custom2" = Table.AddColumn(#"Added Custom1", "S3", each List.RemoveNulls([S2])),
        #"Added Custom3" = Table.AddColumn(#"Added Custom2", "Custom", each Record.FromList([S3],{"column 1"," column 2"})),
        #"Expanded Custom" = Table.ExpandRecordColumn(#"Added Custom3", "Custom", {"column 1", " column 2"}, {"column 1", " column 2"})
    in
        #"Expanded Custom"

     

     

3 Replies

  • use this formula (I have split it into several steps to be more clear)

    let
        Source = Table.FromColumns({{"This is a 500 of 600", "800 of 558 available", "order has 60 of 20"}},{"Description"}),
        #"Added Custom" = Table.AddColumn(Source, "S1", each Text.Split([Description]," ")),
        #"Added Custom1" = Table.AddColumn(#"Added Custom", "S2", each List.Transform([S1], each try Number.From(_) otherwise null)),
        #"Added Custom2" = Table.AddColumn(#"Added Custom1", "S3", each List.RemoveNulls([S2])),
        #"Added Custom3" = Table.AddColumn(#"Added Custom2", "Custom", each Record.FromList([S3],{"column 1"," column 2"})),
        #"Expanded Custom" = Table.ExpandRecordColumn(#"Added Custom3", "Custom", {"column 1", " column 2"}, {"column 1", " column 2"})
    in
        #"Expanded Custom"

     

     

  • Greg_Deckler's avatar
    Greg_Deckler
    Community Champion

    rajpal_singh Can you post that sample data as text? Seems like you could split the column based on " of " perhaps and go from there. 

  • Splitter.SplitTextByWhitespace()(Text.Trim(Text.Select(your_text, {" ", "0".."9"})))