In Microsoft Excel, there are several suitable methods to combine multiple columns into one column. In this article, youâ€™ll learn how you can apply different approaches to merge data from multiple columns into a single column with examples and proper illustrations.

**Table of Contents**Expand

**1. Using CONCATENATE or CONCAT Function to Join Multiple Columns into One Column in Excel**

In the following picture, the three columns represent some random addresses with split parts. We have to merge each row to make a meaningful address in Column E under the Combined Text header.

We can use the **CONCATENATE or CONCAT** function to serve the purpose. In the first output **Cell E5**, the required formula will be:

`=CONCATENATE(B5,C5,D5)`

**Or,**

`=CONCAT(B5,C5,D5)`

After pressing **Enter **and using **Fill Handle** to autofill the rest of the cells in **Column E**, weâ€™ll get the combined single column as shown in the picture below.

**2. Inserting Ampersand (&) to Combine Multiple Columns into Single Column in Excel**

We can also use **Ampersand (&)** to concatenate or join texts more easily. Assuming that we donâ€™t have any delimiter with the texts in the cells but while joining texts from a row, weâ€™ll have to insert a delimiter.

In the output **Cell E5**, the required formula with the uses of **Ampersand (&)** will be:

`=B5&", "&C5&", "&D5`

Press **Enter**, autofill the entire **Column E** and youâ€™ll get all the combined texts into a single column right away.

**3. Inserting TEXTJOIN Function to Combine Multiple Columns into One Column in Excel**

If youâ€™re using **Excel 2019** or **Excel 365** then the **TEXTJOIN **function is another great option to meet your purposes.

The required formula to join multiple texts with the **TEXTJOIN **function in **Cell E5** will be:

`=TEXTJOIN(", ",TRUE,B5,C5,D5)`

After pressing **Enter **and dragging down to the last cell in **Column E**, youâ€™ll get the concatenated texts in a single column at once.

**4. Stacking Multiple Columns into One Column in Excel**

Now our dataset has 4 random columns ranging from **Column B **to **Column E**. Under the **Combine Column** header, weâ€™ll stack the values from the **4th, 5th, and 6th** rows sequentially. In a word, weâ€™ll stack all the data in a single column.

**ðŸ“Œ**** Step 1:**

âž¤ Select the range of cells **(B4:E6)** containing the primary data.

âž¤ Name it with a text in the **Name Box**.

**ðŸ“Œ**** Step 2:**

âž¤ In the output **Cell G5**, type the following formula:

`=INDEX(Data,1+INT((ROW(A1)-1)/COLUMNS(Data)),MOD(ROW(A1)-1+COLUMNS(Data),COLUMNS(Data))+1)`

**ðŸ“Œ**** Step 3:**

âž¤ Press **Enter **and youâ€™ll get the first value from the 4th row in **Cell G5**.

âž¤ Now use **Fill Handle** to drag down along the column until you find a #REF error.

And finally, youâ€™ll be displayed the following output.

**ðŸ”Ž**** How Does the Formula Work?**

**COLUMNS(Data):**The**COLUMNS**function inside the**MOD**function here returns the total number of columns available in the named range**(Data)**.**ROW(A1)-1+COLUMNS(Data):**The combination of**ROW**and**COLUMNS**functions here defines the dividend of the**MOD**function.**MOD(ROW(A1)-1+COLUMNS(Data), COLUMNS(Data))+1:**This part defines the column number of the**INDEX**function and for the output, the function returns**â€˜1â€™**.**1+INT((ROW(A1)-1)/COLUMNS(Data)):**The row number of the**INDEX**function is specified by this part where the**INT**function rounds up the resultant value to the integer form.

**5. Using Notepad to Merge Columns Data in Excel**

We can also use a **Notepad **to combine multiple columns into one column. Letâ€™s go through the following steps:

**ðŸ“Œ**** Step 1:**

âž¤ Select the range of cells **(B5:D9)** containing the primary data.

âž¤ Press **CTRL+C** to copy the selected range of cells.

**ðŸ“Œ**** Step 2:**

âž¤ Open a notepad file.

âž¤ Paste **CTRL+V **to paste the selected data here.

**ðŸ“Œ**** Step 3:**

âž¤ Press **CTRL+H** to open the **Replace **dialogue box.

âž¤ Select a tab between two texts aside in your notepad file and copy it.

âž¤ Paste it into the **Find what** box.

**ðŸ“Œ**** Step 4:**

âž¤ Type** â€œ, â€œ** in the **Replace with** box.

âž¤ Press the option **Replace All** and youâ€™re done.

All the data in your notepad file will look like in the following picture.

**ðŸ“Œ**** Step 5:**

âž¤ Now copy the entire text from the notepad.

**ðŸ“Œ**** Step 6:**

âž¤ And finally, paste it into the output **Cell E5** in your Excel spreadsheet.

The resultant data in **Column E** will now be as follows:

**6. Using VBA Script to Join Columns into One Column in Excel**

We can also use the **VBA **method to stack multiple columns into a single column. In the following picture, **Column G** will show the stacked data.

**ðŸ“Œ**** Step 1:**

âž¤ Right-click on the Sheet name in your workbook and press **View Code**.

A new module window will appear where youâ€™ll have to simply paste the following codes:

```
Option Explicit
Sub StackColumns()
Dim Rng1 As Range
Dim Rng2 As Range
Dim Rng As Range
Dim RowIndex As Integer
Set Rng1 = Application.Selection
Set Rng1 = Application.InputBox("Select Range:", "Stack Data into One Column", Rng1.Address, Type:=8)
Set Rng2 = Application.InputBox("Destination Column:", "Stack Data into One Column", Type:=8)
RowIndex = 0
Application.ScreenUpdating = False
For Each Rng In Rng1.Rows
Â Â Â Â Rng.Copy
Â Â Â Â Rng2.Offset(RowIndex, 0).PasteSpecial Paste:=xlPasteAll, Transpose:=True
Â Â Â Â RowIndex = RowIndex + Rng.Columns.Count
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
```

**ðŸ“Œ**** Step 2:**

âž¤ After pasting the codes, press **F5** to run the code.

âž¤ Assign a macro name in the **Macro **dialogue box.

âž¤ Press **Run**.

**ðŸ“Œ**** Step 3:**

âž¤ Select the primary range of data **(B4:E6)** in the **Select Range** box.

âž¤ Press **OK**.

**ðŸ“Œ**** Step 4:**

âž¤ Select the output **Cell G5** after enabling the **Destination Column** box.

âž¤ Press **OK **and youâ€™re done.

Like in the following picture, youâ€™ll be shown the combined and stacked data in the output column.

**Download Practice Workbook**

You can download the Excel workbook that weâ€™ve used to prepare this article.

**Concluding Words**

I hope all of these simple methods mentioned above will now help you to apply them in your Excel spreadsheets when necessary. If you have any questions or feedback, please let me know in the comment section. Or you can check out our other articles related to Excel functions on this website.

**<< Go Back to Range | Concatenate | Learn Excel**

Legend! Section 4 is amazing. I’ve been looking for months for this. I was using stackarray() until now but sometimes it failed. Thanks, thanks and thanks!

Hello, JUAN! Glad to know you’ve found the solutions finally from our article!

Amazing! Need little more help.

Using your formula, the result displays as

A1,B1,C1,C4,A2,B2,C2,C4….

I need the result to be displayed as per column, then next full column:

A1,A2,A3,A4,A5,B1,B2,B3,B4,B5,C1,C2,C3 and so on…

Hello, ADIL M!

Thank you for your appreciation and query.

Regarding your query, I have thought of two cases.

Case 1:Stacking all data in a single column but different rows with your desired order(A1, A2, B1, B2, and so on).Case 2:Combining data of columns into separate cells, i.e.A1:A4range incell D1,B1:B4range incell D2,C1:C4range incell D3, and so on.Download Link:The file is attached here for you.

Solution.xlsxâŠ• 1st Case: Stacking All Data in a Single Column1. Use the following formula in

cell G5.`=INDEX(Data,(MOD(ROW(A1)-1,3)+1),ROUNDUP(ROW(A1)/3,0))`

2. Following, drag the

fill handle downwardto accomplish your full result.Now, this formula may look like a complex one. So, for your better understanding, I am breaking down the formula below.

Formula Breakdown:>> MOD(ROW(A1)-1,3)This will give you the argument of the row number in the

INDEX function. If you drag the fill handle it would give you the next row numbers as per your data range.Result: 1,2,3,1,2,3,1,2,3,1,2,3 (As our range has 3 rows and 4 columns)

>> ROUNDUP(ROW(A1)/3,0)This part will give you the sequence of column numbers for your data range. If you drag the fill handle below you would get all the column numbers individually for all the values of your range.

Result: 1,1,1,2,2,2,3,3,3,4,4,4

>> INDEX(Data,(MOD(ROW(A1)-1,3)+1),ROUNDUP(ROW(A1)/3,0))This will take your lookup array and generate the values individually from the lookup as per the row numbers and column numbers that you have got in the upper processes. So after dragging the fill handle below, you will get the whole data range in a single column in your desired format.

Result: 1, Andy, 6-Jan, 2, Miller, 8-Apr, 3, Keith, 12-Jun, 4, Robert, 19-Aug

âŠ• 2nd Case: Combining Data of Columns into Separate CellsYou can also use the

TEXTJOIN functionin this regard.1. Insert the following formula in

cell E5now.`=TEXTJOIN(" ",TRUE,INDEX($B$5:$E$9,ROW($A$1),ROW(A1)):INDEX($B$5:$E$9,ROW($A$5),ROW(A1)))`

Note that the

TEXTJOIN functioncan join an array of text. We have used theINDEX function as cell referencein the formula, to specify the array.2. Following, drag the

fill handle belowto get all results.Formula Breakdown:>> INDEX($B$5:$E$9,ROW($A$1),ROW(A1))This will return you the first row and first column data from your array. Here, you must reference your row_num argument with absolute reference.

Result: 26. 26 is situated in cell B5.

>> INDEX($B$5:$E$9,ROW($A$5),ROW(A1))This will return you the last row of the following column data of your array.

Result: 18. 18 is situated in cell B9.

>> INDEX($B$5:$E$9,ROW($A$1),ROW(A1)):INDEX($B$5:$E$9,ROW($A$5),ROW(A1))This refers to array B5:B9. To get this clearly, evaluate the formula from the

Formulastab.>> TEXTJOIN(” “,TRUE,INDEX($B$5:$E$9,ROW($A$1),ROW(A1)):INDEX($B$5:$E$9,ROW($A$5),ROW(A1)))This will join the texts from the first row to the last row of the first column of data with a space between each row of data.

Result: 26 44 15 25 18

Regards,

Tanjim Reza

#4 was very helpful for me. Thank you so much!

Hello

Andrii,You are welcome.

Regards

ExcelDemy