(a resposta de CharlieRB está incluída aqui quando ele postou a resposta 1,3 anos antes de mim)
A parte que ainda está faltando é dividir várias frases vermelhas da mesma célula em várias entradas na sua lista. Isso porque você não coloca a frase na sua lista até passar por todo o texto da célula. Você precisa ter um escape embutido no laço FOR
para armazenar o resultado sempre que você apertar o texto preto após o texto vermelho, assim como ter um no final (caso o último caractere seja vermelho)
Sub copy_red()
Dim LastRow As Long, x As Long, y As Long, txt1 As String, txt As String
Dim copyRow As Long
copyRow = 1
LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
For x = 1 To LastRow
txt1 = ""
txt = Cells(x, 1)
If txt <> "" Then
For y = 1 To Len(txt)
If Cells(x, 1).Characters(Start:=y, Length:=1).Font.Color = 255 Then
txt1 = txt1 & Cells(x, 1).Characters(Start:=y, Length:=1).Text
Else
If txt1 <> "" Then
Cells(copyRow, 3) = txt1
copyRow = copyRow + 1
txt1 = ""
End If
End If
Next y
If txt1 <> "" Then
Cells(copyRow, 3) = txt1
copyRow = copyRow + 1
txt1 = ""
End If
End If
Next x
ActiveSheet.Range("C:C").RemoveDuplicates Columns:=1, Header:=xlNo
ActiveSheet.Range("C:C").Font.Color = RGB(255, 0, 0)
End Sub