Выберите несколько элементов из выпадающего списка (без повторений) и суммируйте их значения из поиска - PullRequest
0 голосов
/ 12 февраля 2019

В листе Input Variable у меня есть ячейка F3, содержащая несколько элементов, выбранных из раскрывающегося списка (без повторений) ичерез запятую.

drop down

Их значения поиска находятся на другом листе Ref Dataкак показано ниже:

ref data

Я хотел бы получить их сумму в ячейке G3.

=VLOOKUP(F3,'Ref Data'!B:C,2,FALSE)

Пока я получаю ценность только для одного предмета.

Например:

one item

Но когда я выбираю другой элемент из выпадающего списка, я получаю #N/A значение

Например:

Для элементов Delivery, Pilot значение должно быть 1500 (1000 +500)

multiple item

Как мне решить эту проблему?

РЕДАКТИРОВАТЬ:

Function Mult_Lookup_and_Sum(strCommaSepInput As String, _
                                rngLookat As Excel.Range, _
                                lngSumCol As Long) As Double

Dim a() As String
Dim lngCounter As Long

a = Split(strCommaSepInput, ",")

Mult_Lookup_and_Sum = 0

For lngCounter = 0 To UBound(a)
    Mult_Lookup_and_Sum = Mult_Lookup_and_Sum + _
                Application.WorksheetFunction.VLookup( _
                    Trim(a(lngCounter)), rngLookat, lngSumCol)

Next lngCounter

Erase a

End Function

После использования вышеуказанной функции, как указано в ответе

=Mult_Lookup_and_Sum(worksheets("Input Variable").range("f5"),worksheets("Ref Data").range("B:C"),2)

Я получил эту ошибку:

enter image description here

После дальнейшего изучения:

enter image description here

1 Ответ

0 голосов
/ 12 февраля 2019

Вы можете использовать такую ​​функцию.

    Function Mult_Lookup_and_Sum(strCommaSepInput As String, _
                                rngLookat As Excel.Range, _
                                lngSumCol As Long) As Double

Dim a() As String
Dim lngCounter As Long
Dim dblAdd As Double

a = Split(strCommaSepInput, ",")

Mult_Lookup_and_Sum = 0

For lngCounter = 0 To UBound(a)
    dblAdd = 0
    On Error Resume Next
    dblAdd = Application.WorksheetFunction.VLookup( _
                    Trim(a(lngCounter)), rngLookat, lngSumCol, 0)
    On Error GoTo 0
    Mult_Lookup_and_Sum = Mult_Lookup_and_Sum + _
                dblAdd

Next lngCounter

Erase a

End Function

У меня test 1,test 2 в A1 и в D1: E2 У меня есть итоговый тест 1 и итоговый тест 2.

Итак, ябудет вызывать так Mult_Lookup_and_Sum(range("a1"), range("d1:e2"),2) последний аргумент совпадает с функцией номера столбца в vlookup

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