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.

**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.

The code which achieves what I want is:

```
+OFFSET($B$2,(ROW()-ROW($E$4))*N+(COLUMN()-COLUMN($E$4)),0)
```

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:

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

**Explanation**

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):

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.

### Answer：

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

`=OFFSET($A$1,ROW()-1+(COLUMN()-3)*6,0)`

### Answer：

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.

Tags: excelexcel