Для жизни я не могу понять, почему это не работает. Это дает мне ошибку # ЗНАЧЕНИЕ.
Я использую ActiveSheet, потому что я положу его на несколько разных листов, и мне не нужно добавлять поле в функцию для этого.
LookupRange предназначен для поиска последней строки с данными в ней на ActiveSheet.
Мои значения поиска начинаются с B5 и продолжаются бесконечно, а желаемые совпадения находятся в столбце O (15-й столбец).
Function EmailConcat(LookupValue As String)
Application.Volatile
Dim i As Long
Dim Result As String
Dim LookupSheet As Worksheet
Dim LookupRange As Range
Set LookupSheet = Application.ActiveSheet
LookupRange = LookupSheet.Cells.Find(What:="*", SearchOrder:=xlRows, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Row
For i = 5 To LookupRange.Rows.Count
If LookupSheet.Cells(i, 2) = LookupValue Then
Result = Result & LookupSheet.Cells(i, 15) & "; "
End If
Next i
EmailConcat = Left(Result, Len(Result) - 2)
End Function