Home » excel » Excel, convert data in one column to multiple columns

Excel, convert data in one column to multiple columns

Posted by: admin April 23, 2020 Leave a comment


As seen in the picture I have 5 sets of 2‘s in one column.
I would like it so that each set is in its own column.
Is there a way to do that?

I tried text to columns, but it did not work.

excel image

How to&Answers:

General solution

Imagine I have a vertical array starting in cell B2, which I want to separate into N stacked columns. I will place these columns from cell E4, as the picture indicates.

enter image description here

The code which achieves what I want is:


Replace N with your desired number (and the origin and destination cell with your particular values, B2 and E4 in this example), and expand the formula vertically and horizontally to form your desired matrix of N columns. For the case of N=3, you get:

enter image description here

(PS: if your array is horizontal, use transpose to transform to vertical. You can then transpose the resulting matrix, to get the final result.)


The logic is simple. The function OFFSET has three compulsory inputs. The first one is the first point of your array you want to transform (in the example above, $B$2. The point you select has an index of 0, the one below an index of 1, etc. So, what you want is to put these ordered index into a matrix form, as shown below (for the case of N=3):

enter image description here

The rule to move these indexes is given in the second entry of the OFFSET function. This is basically a formula that calculates a sequence 0, 1, 2, 3 … using some fixed values (the number of the row and columns of the first cell where you are putting the result, ROW($E$4) and COLUMN($E$4), which are equal to 4 and 5 respectively), and the variable values of the cell where you are placing the number (ROW() and COLUMN()). The formula computes the difference between actual row and reference row number, scale it by N, and adds any difference between actual and reference column. This formula gives the desired series 0, 1, 2, 3… for our desired output matrix.

Finally, the last item of OFFSET is equal to zero, since we are transforming with a vertical column of data, so no horizontal offset is needed.


You can do it with e.g. formula; enter this to C1 and fill down and right:

enter image description here


Take the total cells, dived it by 3 and cut and paste. I wasted a 30 mins trying all the solutions offered out there.

I gave up and now my project is complete. Only took about 15 seconds.