CA Customer1
CT Customer1
FL Customer1
IL Customer1
IN Customer1
MN Customer1
RI Customer1
SD Customer1
TX Customer1
UT Customer1
WV Customer1
WY Customer1
IA Customer2
IN Customer2
KS Customer2
KY Customer2
ND Customer2
SD Customer2
Customer1 CA,CT,FL,IL,IN,MN,RI,SD,TX,UT,WV,WY
Customer2 IA,IN,KS,KY,ND,SD
Option Explicit
Sub StatesByCustomer()
Dim xCol As New Collection
Dim xSrc As Variant
Dim xRes() As Variant
Dim I As Long
Dim J As Long
Dim xRg As Range
xSrc = Range("A1", Cells(Rows.Count, "A").End(xlUp)).Resize(, 2)
Set xRg = Range("D1")
On Error Resume Next
For I = 2 To UBound(xSrc)
xCol.Add xSrc(I, 2), TypeName(xSrc(I, 2)) & CStr(xSrc(I, 2))
Next I
On Error GoTo 0
ReDim xRes(1 To xCol.Count + 1, 1 To 2)
xRes(1, 1) = "Customer"
xRes(1, 2) = "States"
For I = 1 To xCol.Count
xRes(I + 1, 1) = xCol(I)
For J = 2 To UBound(xSrc)
If xSrc(J, 2) = xRes(I + 1, 1) Then
xRes(I + 1, 2) = xRes(I + 1, 2) & ", " & xSrc(J, 1)
End If
Next J
xRes(I + 1, 2) = Mid(xRes(I + 1, 2), 2)
Next I
Set xRg = xRg.Resize(UBound(xRes, 1), UBound(xRes, 2))
xRg = xRes
xRg.EntireColumn.AutoFit
End Sub
=TEXTJOIN(", ",TRUE,IF($B$2:$B$19=D2,$A$2:$A$19,""))
then confirm it with Ctrl+Shift+Enter and copy it down.