Maybe something like this
I made it so you don't require a contiguous selected range
In the attachment you can select all of A : D to combine into A, as well as just M and O (hold the control key down and select M and then O) to combine into M
Option Explicit
Sub CombineColumns()
Dim rUsed As Range, rArea As Range, rCell As Range, rFirst As Range, rColumn As Range
If Not TypeOf Selection Is Range Then Exit Sub
Set rUsed = Intersect(Selection.EntireColumn, ActiveSheet.UsedRange)
If rUsed Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set rFirst = rUsed.Columns(1)
For Each rArea In rUsed.Areas
For Each rColumn In rArea.Columns
If rColumn.Address <> rFirst.Address Then
For Each rCell In rColumn.Cells
If Len(Trim(rCell.Value)) > 0 Then
rFirst.Cells(rCell.Row, 1) = rFirst.Cells(rCell.Row, 1) & " " & Trim(rCell.Value)
End If
Next
rColumn.ClearContents
End If
Next
Next
Application.ScreenUpdating = False
End Sub