Split data into columns using FILTERXML

--

We use Text to Columns to split data from a cell into multiple columns.
But it is not dynamic.

The data looks like this:

This is the result:

Formula in C3:

=TRANSPOSE(FILTERXML("<x><y>"&SUBSTITUTE(B3,",","</y><y>")&"</y></x>","//y"))

You can also use LAMBDA:

=LAMBDA(input,delimiter,TRANSPOSE(FILTERXML("<x><y>"&SUBSTITUTE(input,delimiter,"</y><y>")&"</y></x>","//y")))

Formula in C4:

=Split_Text(B4,",")

Let us see some more examples:

To access a single value, we can use Index.
Let us say we only want the first two values.

Formula in C3:

=INDEX(TRANSPOSE(FILTERXML("<x><y>"&SUBSTITUTE(B3,",","</y><y>")&"</y></x>","//y")),{1,2})

Another use case will be when you want to add numbers that are split by a delimiter.

Formula in C3:

=SUM(TRANSPOSE(FILTERXML("<x><y>"&SUBSTITUTE(B3,",","</y><y>")&"</y></x>","//y")))

GitHub:
https://github.com/havishmad/excel_split_data_FILTERXML

YouTube:
https://youtu.be/W_eI6_kT6tM

--

--

HAVISH MADHVAPATY
HAVISH MADHVAPATY

Written by HAVISH MADHVAPATY

Founder @ Havish M Consulting | 40u40 [Analytics Insight] | AuthorX20 | MOS | MCDA | MCT | Taught at IIM ABCLK

No responses yet