У Вас же уже написана пользовательская функция "=MergeIf()"
[vba]Код
Function MergeIf(TextRange As Range, SearchRange As Range, Condition As String)
Dim Delimeter As String, i As Long
Delimeter = ", " 'символы-разделители (можно заменить на пробел или ; и т.д.)
'если диапазоны проверки и склеивания не равны друг другу - выходим с ошибкой
If SearchRange.Count <> TextRange.Count Then
MergeIf = CVErr(xlErrRef)
Exit Function
End If
'проходим по все ячейкам, проверяем условие и собираем текст в переменную OutText
For i = 1 To SearchRange.Cells.Count
If SearchRange.Cells(i) Like Condition Then OutText = OutText & TextRange.Cells(i) & Delimeter
Next i
'выводим результаты без последнего разделителя
MergeIf = Left(OutText, Len(OutText) - Len(Delimeter))
End Function
[/vba]