Hi,
Try this code, it's similar to the code above but taking into account blank cells.
If a cell in column F is empty: it just copies the entire line and continues to next line.
If a cell in column T is empty: it does text to rows for each name in column F (w/ empty cells in T)
Sub Main()
Dim I, J, K, TempF, TempT
Dim RawD, CleanD As Worksheet
Set RawD = ThisWorkbook.Sheets("RawData")
Set CleanD = ThisWorkbook.Sheets("CleanedData")
CleanD.Cells.Clear
Application.ScreenUpdating = False
LastRow = CleanD.Range("A" & Rows.Count).End(xlUp).Row
For I = 1 To RawD.Range("A" & Rows.Count).End(xlUp).Row
If IsEmpty(Range("F" & I)) Then 'no data in F --> copy entire line and continue, in case you want to do text to rows for each data in T, just replace 1 & 2 with MOD code below.
RawD.Rows(I).Copy CleanD.Rows(LastRow) '1
LastRow = LastRow + 1 '2
ElseIf IsEmpty(Range("T" & I)) Then 'no data in T --> do text to rows for each name in F cell with empty cells in F column.
TempF = Split(Range("F" & I), ",")
For J = LBound(TempF) To UBound(TempF)
RawD.Rows(I).Copy CleanD.Rows(LastRow)
CleanD.Cells(LastRow, 6) = TempF(J)
LastRow = LastRow + 1
Next J
Else 'Do text to rows job for
TempF = Split(Range("F" & I), ",")
TempT = Split(Range("T" & I), ",")
For J = LBound(TempF) To UBound(TempF)
For K = LBound(TempT) To UBound(TempT)
RawD.Rows(I).Copy CleanD.Rows(LastRow)
CleanD.Cells(LastRow, 6) = TempF(J)
CleanD.Cells(LastRow, 20) = TempT(K)
LastRow = LastRow + 1
Next K
Next J
End If
Next I
Application.ScreenUpdating = True
End Sub
MOD:
TempT = Split(Range("T" & I), ",")
For K = LBound(TempT) To UBound(TempT)
RawD.Rows(I).Copy CleanD.Rows(LastRow)
CleanD.Cells(LastRow, 20) = TempT(K)
LastRow = LastRow + 1
Next K
Tested in your sample file.
Good Luck.