Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
VBA Вернуть диапазон в список
 
Ох. Еще один вопрос.
Функция перестает работать как только я в качестве аргумента table использую диапазон с другого листа. Выдает нули.(На листе 2 работает, на листе 3 уже нет).
Это можно как-нибудь исправить? Аргумент table может быть на любом листе...
Код
Function MYRANGE(table As Range, znachenie, nomer1&, nomer2&) As Range
Dim cl As Range, I&
For Each cl In table.Columns(nomer1).Cells
    If cl.Value = znachenie Then
        If Not MYRANGE Is Nothing Then
            Set MYRANGE = Union(MYRANGE, Cells(cl.Row, table.Columns(nomer2).Column))
        Else
            Set MYRANGE = Cells(cl.Row, table.Columns(nomer2).Column)
        End If
    End If
Next
End Function
Изменено: shtirlic39 - 04.06.2018 18:22:24
VBA Вернуть диапазон в список
 
Опять  о разном говорим)) Формула работала как массив и раньше.)))
Когда я говорил список - имел ввиду: данные-проверка данных-тип данных -список.
VBA Вернуть диапазон в список
 
Спасибо большое.
Я половину выходного просидел и не смог сделать.
В список записать функцию не получилось(пишет указанный диапазон не найден), а в функцию получилось, чего я и добивался.
VBA Вернуть диапазон в список
 
Пытаюсь вникнуть. Кажется то, что нужно. Сейчас протестирую.
VBA Вернуть диапазон в список
 
Блин. Значит не верно написал.
имел в виду, что будет создан список из трех элементов
5-10
11-15
16-20
VBA Вернуть диапазон в список
 
Не совсем то.  
Функция diapason должна выдавать диапазон с ячейками из второго столбца.  Это нужно чтобы дальше возможно было эту функцию использовать в качестве аргумента для другой функции. Тут просто перечисление значений через запятую.
Вопрос собственно в том, как вернуть диапазон ячеек.
К примеру: я могу в список написать =ИНДЕКС(ДВССЫЛ(Именнованнаятаблица);0;1) и в списке будет диапазон ячеек на выбор, состоящий из первого столбца именованной таблицы.

Может я неправильно объясняю..
Изменено: shtirlic39 - 04.06.2018 15:06:59
VBA Вернуть диапазон в список
 
Добрый день, уважаемые форумчане!
Пробую создать функцию на 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
Выпадающий список из столбца /строки именованного диапазона
 
Спасибо. Именно то, что нужно! Не знал, что с помощью Индекс можно вернуть массив.
Выпадающий список из столбца /строки именованного диапазона
 
Добрый день!
Искал на форумах, но к сожалению не нашел ответа на свой вопрос.
Есть к примеру именованный диапазон ячеек.
Если диапазон линейный(т.е. состоит из одного столбца/строки), то я могу сделать из него выпадающий список, прям задав имя диапазона в -данные-проверка данных - список.
Проблема заключается в том, что у меня не получается сделать аналогичную штуку для двумерного диапазона. Нет ли в excel такой возможности, чтобы я задал выпадающем списке имя диапазона + номер стоблца/строки этого диапазона, и в выпадающем списке появился этот столбец/строка?
Что-то вроде имя_диапазона(1,0) - и в выпадающем списке отображается первая строка.

Upd.
Занятно что если сделать список из линейного именованного диапазона, а затем этот диапазон превратить в двумерный, то список будет работать - и на выбор можно сделать любое значение из диапазона. К сожалению это не то, что требуется.
Изменено: shtirlic39 - 27.05.2018 17:54:03
Страницы: 1
Наверх