Det du efterfrågar är tyvärr (så vitt jag vet) inte möjligt i Excel. Listor är lite begränsade, och hade man förbättrat dem hade man kunnat göra mycket mer med formler. Vad SUMIF gör är helt enkelt att först omvandla alla cellerna till tal och sen summera dem.
Det enklaste är nog att skriva en VBA-formel istället, något i stil med:
Public Function CONCATENATEIF(COMPARECELL As Range, COMPARETO As Variant, CONTACATENATECELLS As Range)
If Not (COMPARECELL.Rows.Count = CONTACATENATECELLS.Rows.Count And COMPARECELL.Columns.Count = 1 And CONTACATENATECELLS.Columns.Count = 1) Then
CONCATENATEIF = CVErr(xlErrNA)
Else
Dim i As Long, s As String
For i = 1 To COMPARECELL.Rows.Count
If COMPARECELL.Cells(i, 1) = COMPARETO Then
s = s & " " & CONTACATENATECELLS.Cells(i, 1)
End If
Next i
CONCATENATEIF = s
End If
End Function
Den kan behöva anpassas på många sätt (i synnerhet där man bygger på strängar), och är väldigt långsam, så mitt förslag är att försöka lösa det på något annat sätt.