Индекс / совокупная формула с поиском - PullRequest
0 голосов
/ 22 июня 2019

У меня есть выборочные данные (1,2,3,4) по столбцам A2: D2 и по F1, у меня есть (1,3) и по G1 (2,3,4).

Мне предложили использовать эту формулу

=INDEX($A2:$D2,AGGREGATE(15,6,ROW($A2:$D2)/ISNUMBER(SEARCH(TEXT($A2:$D2,"000,"),F$1&",")),1))

на F2 и G2, которая должна давать совпадающие значения на F2 и G2 соответственно.Поскольку оба значения (1,3) совпадают, результат должен быть (1,3) на F2 и (2,3,4) на G2.

Так что в принципе эта формула должна работать как index /формула соответствия, но вместо отдельных значений она работает с двумя или тремя значениями, разделенными запятыми.

Когда я пытаюсь использовать формулу, я получаю ошибку #NUM!.Могу ли я получить небольшую помощь, чтобы заставить эту формулу работать, пожалуйста?

Спасибо.

Примечание: я открыт для альтернативных решений, но если для этого требуется VBA, он должен быть с определенной пользователем формулой.Без UDF это бесполезно для меня.

enter image description here

1 Ответ

1 голос
/ 22 июня 2019

UDF должен выглядеть следующим образом

Option Explicit
Function MultFind(r As Range, s As String) As String

Dim c As Range
Dim result As String


For Each c In r
   If InStr("," & s & ",", "," & c & ",") <> 0 Then result = result & c & ","
Next c

If Len(result) > 0 Then result = Left(result, Len(result) - 1)

MultFind = result


End Function

Вызывается как

=MultFind($A2:$D2,F1)

Редактировать

Вот это с необязательным параметром для разделителя:

Option Explicit
Function MultFind(r As Range, s As String, Optional delimiter As String = ",") As String

Dim c As Range
Dim result As String

' Check each cell in range against search string

For Each c In r
    If InStr(delimiter & s & delimiter, delimiter & c & delimiter) <> 0 Then result = result & c & delimiter
Next c

' Delimiter may be more than one character

If Len(result) > 0 Then result = Left(result, Len(result) - Len(delimiter))

MultFind = result

End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...