How to stack columns from left to right into one column in Excel?
Supposing there are multiple columns, the job is to stack the columns from left to right into one single column as below screenshot shown. Except manually move the columns one by one, are there any tricks on solving this in Excel?
In Excel, there is no built-in function can handle this job, but, the VBA code can help you.
1. Press Alt +F11 keys, then in the Microsoft Visual Basic for Applications window, click Insert > Module to create a new blank module.
2. Copy and paste below code to the Module.
VBA: Stack columns into one
Sub StackColumns() 'UpdatebyExtendoffice20180814 Dim xSRg, xDRg As Range Dim xDWS As Worksheet Dim xIntDR, xIntDC, xI As Long Dim xFNumR, xFNumC As Long On Error GoTo Err1 Set xSRg = Application.InputBox("Select Columns:", "Kutools for Excel", xTxt, , , , , 8) If xSRg Is Nothing Then Err1: Application.ScreenUpdating = True Exit Sub End If Set xDRg = Application.InputBox("Select a cell to place result:", "Kutools for Excel", xTxt, , , , , 8) If xDRg Is Nothing Then Exit Sub End If Application.ScreenUpdating = False Set xDWS = xDRg.Worksheet xIntDR = xDRg.Row xIntDC = xDRg.Column xI = 0 For xFNumC = 1 To xSRg.Columns.Count For xFNumR = 1 To xSRg.Rows.Count Set xDRg = xDWS.Cells(xIntDR + xI, xIntDC) xDRg.Value = xSRg.Cells(xFNumR, xFNumC).Value xI = xI + 1 Next xFNumR Next xFNumC Application.ScreenUpdating = True End Sub
3. Press F5 key to run the code, a dialog pops out for you to select the columns you will stack into one.
4. Click OK, select a cell to place the result.
5. Click OK to finish. Now the selected columns have been stacked into one column.
If you have Kutools for Excel installed in Excel, you can use the Transform Range utility to handle this job.
|Kutools for Excel, with more than 300 handy functions, makes your jobs more easier.|
After installing Kutools for Excel, please do as below:（Free Download Kutools for Excel Now!)
1. Select the columns you want to stack, click Kutools > Range > Transform Range.
2. In the Transform Range dialog, check Range to single row checkbox, click Ok.
3. In the popping dialog, select a cell to place the result, click OK.
Now the columns have been transformed to a single row.
4. Select the single row, press Ctrl + C to copy it, and select another cell which will place the stack column, right click to select Transpose(T) in the context menu.
Now the single row has been transposed to a stack column.