Добрый день, уважаемые форумчане!
Пробую создать функцию на vba, которая будет неким аналогом ВПР, но выдавать сразу диапазон значений. Саму функцию не планирую использовать отдельно, только как аргумент для другой функции или в списке.
Как я себе представляю работу функции:
Diapason(table as range; znachenie as variant; nomer1 as byte; nomer2 as byte) as Range
Функция берет таблицу, в столбце1(nomer1) ищет искомое значение, если совпадает, то выдает адрес на ячейку из столбца2.
Столбец1 отфильтрован.
Хочу, чтобы вставив в список следующую формулу, мне выдавало 5-10, 11-15, 16-20
Diapason(именованнаятаблица; "яблоко"; 1; 2)
У меня получилось считать количество повторений значений, а также найти первое значение. Но что делать дальше я не понимаю.
Пробую создать функцию на vba, которая будет неким аналогом ВПР, но выдавать сразу диапазон значений. Саму функцию не планирую использовать отдельно, только как аргумент для другой функции или в списке.
Как я себе представляю работу функции:
Diapason(table as range; znachenie as variant; nomer1 as byte; nomer2 as byte) as Range
Функция берет таблицу, в столбце1(nomer1) ищет искомое значение, если совпадает, то выдает адрес на ячейку из столбца2.
Столбец1 отфильтрован.
Хочу, чтобы вставив в список следующую формулу, мне выдавало 5-10, 11-15, 16-20
Diapason(именованнаятаблица; "яблоко"; 1; 2)
У меня получилось считать количество повторений значений, а также найти первое значение. Но что делать дальше я не понимаю.
Код |
---|
Option Base 1 Function diapason(table As Range, znachenie As String, nomer1 As Byte, nomer2 As Byte) As Range Dim a As Byte a = table.Rows.Count Dim b As Byte, d As Byte b = 0: d = 0 Dim i As Byte For i = 1 To a If table(i, nomer1) = znachenie And b = 0 Then b = i If table(i, nomer1) = znachenie Then d = d + 1 If table(i, nomer1) <> znachenie And d > 0 Then Exit For Next i diapason = ??? End Function |