try
Sub test()
Dim a, x, i As Long, ii As Long, myDir As String
Dim ff As Long, wf As WorksheetFunction
myDir = "C:\Users\kevin\Work\"
If Dir(myDir, 16) = "" Then MsgBox "Wrong folder path", vbCritical, myDir: Exit Sub
myDir = myDir & Format$(Date, "dd.mm.yyyy") & "\"
If Dir(myDir, 16) = "" Then MkDir myDir
Set wf = Application.WorksheetFunction
With Sheets("source sheet 1").[a1].CurrentRegion
ReDim x(1 To .Columns.Count)
For i = 1 To .Columns.Count
If Not .Columns(i).Hidden Then ii = ii + 1: x(ii) = i
Next
ReDim Preserve x(1 To ii)
a = Application.Index(.Value, Evaluate("row(1:" & .Rows.Count & ")"), x)
x = wf.Unique(.Columns(1))
End With
ReDim Preserve x(1 To UBound(x, 1), 1 To 2)
For i = 2 To UBound(x)
x(i, 2) = wf.TextJoin(",", False, Application.Index(a, 1, 0))
For ii = 2 To UBound(a, 1)
If x(i, 1) = a(ii, 1) Then
x(i, 2) = x(i, 2) & vbNewLine & wf.TextJoin(",", False, Application.Index(a, ii, 0))
End If
Next
Next
For i = 2 To UBound(x, 1)
ff = FreeFile
Open myDir & x(i, 1) & ".csv" For Output As ff
Print #ff, x(i, 2);
Close ff
Next
End Sub
Bookmarks