Попробуйте этот код
Sub Test()
Dim r1 As Range
Dim r2 As Range
With Sheets("Sheet1")
Set r1 = .Range("A1:D" & .Columns("A:D").Find("*", [A1], , , 1, 2).Row)
Set r2 = .Range("K1")
MultipleColumnsIntoOne r1, r2
End With
End Sub
Sub MultipleColumnsIntoOne(rSource As Range, rDest As Range)
Dim a As Variant
Dim b As Variant
Dim i As Long
Dim j As Long
Dim k As Long
a = rSource.Value
ReDim b(1 To UBound(a, 1) * rSource.Columns.Count)
For j = LBound(a, 2) To UBound(a, 2)
For i = LBound(a, 1) To UBound(a, 1)
If Not IsEmpty(a(i, j)) Then
k = k + 1
b(k) = a(i, j)
End If
Next i
Next j
rDest.Resize(k).Value = Application.Transpose(b)
End Sub