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

Страницы: 1
Выпадающий список из двух диапазонов
 
Всем спасибо за ваши идеи, буду думать! Пока склоняюсь к тому, чтобы предопределённые значения из строки B1:D1 перевести в столбец умной таблицы перед основными данными и источником выпадающего списка выбрать весь этот столбец. Если умная таблица будет дополняться новыми значениями - макросом буду отлавливать изменения в последней её строке и автоматически добавлять новую строку в её конец (см.картинку).
Изменено: kmr100 - 22.02.2025 18:14:03
Выпадающий список из двух диапазонов
 
asesja, благодарю за интересное решение с использованием VBA и словаря, который убирает повторяющиеся значения, хотя в этой задаче это не требуется. Можно и упростить код с помощью TextJoin:
Код
Sub Выпадающий()
    Dim ws As Worksheet
    Dim combinedList As Variant
    Set ws = ThisWorkbook.Sheets("Лист1")
    combinedList = Application.WorksheetFunction.TextJoin(",", True, ws.Range("A1:A5"), ws.Range("B1:D1"))
    With ws.Range("F1").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=combinedList
        .IgnoreBlank = True
        .InCellDropdown = True
        .ShowInput = True
        .ShowError = True
    End With
End Sub

Но всё дело в том, что таких столбцов "A1:A5" в проекте будет много и высотой они будут в несколько сотен строк и при каждом изменении ячейки будет вызываться эта процедура, перебирающая в цикле каждое значение в столбце, это сильно замедлит работу.

Хотелось бы найти красивое решение c формулами без использования кода VBA.
Выпадающий список из двух диапазонов
 
Доброго дня, уважаемые гуру! Прошу помочь сделать выпадающий список значений из двух диапазонов A1:A3 и B1:D1 без создания вспомогательных строк и столбцов. DeepSeek предлагает создать именованный диапазон с формулой =ДВССЫЛ("{" & ОБЪЕДИНИТЬ(";"; ИСТИНА; A1:A3; B1:D1) & "}") и указать его имя в качестве источника выпадающего списка, но это не работает. У кого какие будут идеи?
Страницы: 1
Наверх