Bugrimdjon Пользователь Сообщений: 11 |
#1 13.07.2018 12:49:27 Добрый день.
Ругается при выполнении, как я понял на RC[-1], то есть на такую адресацию в «=INDIRECT(RC[-1]&»»_Группа»»)». Здесь RC[-1] — это изменяемые текстовые данные, которые в конечном итоге формируют имя диапазона с данными, на который формируется ссылка. То есть выпадающий список будет изменятся от значения в ячейке RC[-1]. |
||
RAN Пользователь Сообщений: 7091 |
Formula1 и FormulaR1C1 это далеко не одно и то же. |
Bugrimdjon Пользователь Сообщений: 11 |
Варианты: Изменено: Bugrimdjon — 13.07.2018 13:06:16 |
vikttur Пользователь Сообщений: 47199 |
#4 13.07.2018 13:15:03
Для начала объяснить форуму. А для этого нужно показывать файл-пример. |
||
Bugrimdjon Пользователь Сообщений: 11 |
Выделяю ячейки > проверка данных> в проверку данных вношу значение список, в нем указываю значение =ДВССЫЛ(RC[-1]&»_Группа»). Прикрепленные файлы
Изменено: Bugrimdjon — 13.07.2018 13:58:06 |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
Вариант: создать на листе именованный динамический диапазон и уже его скормить выпадающему списку. |
Bugrimdjon Пользователь Сообщений: 11 |
Именованный диапазон создан и не один. Название диапазона формируется от значения в RC[-1]. |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
Именованные диапазоны вижу, но они у Вас не динамические. |
Bugrimdjon Пользователь Сообщений: 11 |
Этот файл сформирован для примера, оригинал тяжел для восприятия. Прикрепляю его, может получится разобраться. Выбираем лист «Новый расчет» |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
Файлы удалены — читаем в Правилах о максимально допустимом размере. И другие пункты Правил тоже читаем. |
Bugrimdjon Пользователь Сообщений: 11 |
Всем спасибо. РАЗОБРАЛСЯ. |
Bugrimdjon Пользователь Сообщений: 11 |
#12 16.07.2018 13:45:38 Добрый день.
Изменено: Bugrimdjon — 16.07.2018 13:46:39 |
||
Возможно, вы знаете, как создать раскрывающийся список каскадной проверки в Excel. Однако как создать динамические каскадные списки в Excel? Эта статья знакомит с методом VBA, чтобы избавиться от этого.
Создавайте динамические каскадные списки с кодом VBA
Создавайте динамические каскадные списки с кодом VBA
Как показано на скриншоте ниже, вам нужно создать родительский список, содержащий уникальные значения столбца Напиток, и отобразить все соответствующие значения во втором списке на основе выбора в родительском списке. Следующий код VBA поможет вам в этом. Пожалуйста, сделайте следующее.
1. Во-первых, вам нужно извлечь все уникальные значения из столбца Напиток. Выберите пустую ячейку, введите формулу массива =IFERROR(INDEX($A$2:$A$11, MATCH(0,COUNTIF($J$1:J1, $A$2:$A$11), 0)),»») в Панель формул, а затем нажмите Ctrl + Shift + Enter ключ. Затем перетащите Ручка заполнения чтобы получить все уникальные значения. Смотрите скриншот:
Внимание: В формуле $A$2:$A$11 это диапазон, из которого вы будете извлекать уникальные значения. J1 — это ячейка выше, в которой находится ваша формула.
Функции: Если формулу слишком сложно запомнить и использовать, Выберите повторяющиеся и уникальные ячейки полезности Kutools for Excel будет хорошим выбором для быстрого извлечения всех уникальных значений из столбца.
Выберите столбец, содержащий уникальные значения, из которых вы будете извлекать данные. Затем включите утилиту, нажав Кутулс > Выберите > Выберите повторяющиеся и уникальные ячейки. В Выберите повторяющиеся и уникальные ячейки в диалоговом окне выберите Все уникальные (включая 1-е дубликаты) и нажмите OK кнопка. Затем в столбце выбираются все уникальные значения. Скопируйте и вставьте их на новое место. Смотрите скриншот:
2. Вставьте два списка отдельно, нажав Застройщик > Вставить > Список (элемент управления ActiveX). Смотрите скриншот:
3. Щелкните правой кнопкой мыши поле родительского списка и выберите Предложения из контекстного меню. в Предложения диалоговом окне измените (Имя) поле к Напиток или другое имя, как вам нужно, введите диапазон ячеек, содержащий извлеченные уникальные значения, в ListFillRange поле и закройте диалог.
4. Повторите шаг 3, чтобы изменить значение второго окна списка. (Имя) поле для элемента в Предложения диалоговое окно.
5. Щелкните правой кнопкой мыши вкладку листа и выберите Просмотреть код из контекстного меню. Затем скопируйте ниже код VBA в окно кода. Смотрите скриншот:
Код VBA: создание динамических каскадных списков в Excel
Dim xPreStr As String
Private Sub Drink_Click()
'Update by Extendoffice 2018/06/04
Dim I, xRows As Long
Dim xRg As Range
Dim xRegStr As String
Application.ScreenUpdating = False
xRegStr = Me.Drink.Text
Set xRg = Range("A2:A11")
xRows = xRg.Rows.Count
If xRegStr <> xPreStr Then
Me.Item.Clear
'Me.OtherListBoxName.Clear
Set xRg = xRg(1)
For I = 1 To xRows
If xRg.Offset(I - 1).Value = xRegStr Then
Me.Item.AddItem xRg.Offset(I - 1, 1).Value
'Me.OtherListBoxName.AddItem xRg.Offset(I - 1, 2).Value
End If
Next
xPreStr = xRegStr
End If
Application.ScreenUpdating = True
End Sub
Заметки: В коде Drink и Item — названия двух списков, измените их на свои собственные.
6. нажмите другой + Q ключи, чтобы закрыть Microsoft Visual Basic для приложений окно.
7. Выключите режим дизайна, нажав Застройщик > Режим проектирования.
С этого момента при выборе любого напитка, например, кофе, в родительском списке все кофейные элементы будут отображаться во втором. При выборе «Чай» или «Вино» во втором списке отображаются только чай или вино. Смотрите скриншот:
Статьи по теме:
- Как очистить зависимую ячейку раскрывающегося списка после изменения выбора в Excel?
- Как создать зависимые каскадные выпадающие списки в Excel?
- Как автоматически заполнять другие ячейки при выборе значений в раскрывающемся списке Excel?
- Как создать календарь с выпадающим списком в Excel?
- HКак сохранить или сохранить выбранные списки ActiveX в Excel?
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Assuming your data is in Columns A:B where row1 is header row and you have a named range called Days then right click the Sheet tab —> View code and paste the code given below into the opened code window —> Save your workbook as Macro-Enabled Workbook.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.CountLarge > 1 Then Exit Sub
Dim x, dict
Dim i As Long, lr As Long
Dim Rng As Range, Cell As Range
Dim Str As String
lr = Cells(Rows.Count, 1).End(xlUp).Row
Set Rng = Range("A2:A" & lr)
x = Range("Days").Value
Set dict = CreateObject("Scripting.Dictionary")
If Target.Column = 2 And Target.Row > 1 Then
If Target.Offset(0, -1) <> "" Then
For Each Cell In Rng
If Cell <> "" And Cell = Target.Offset(0, -1) Then
If Str = "" Then
Str = Cell.Offset(0, 1).Value
Else
Str = Str & ", " & Cell.Offset(0, 1).Value
End If
End If
Next Cell
For i = 1 To UBound(x, 1)
If InStr(Str, x(i, 1)) = 0 Then
dict.Item(x(i, 1)) = ""
End If
Next i
On Error Resume Next
With Target.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=Join(dict.keys, ",")
End With
End If
End If
End Sub
So once you select a cell in column B, the code will add a drop down list excluding the days already selected for the specific test no. corresponding cell in column A.
Что такое список в Excel VBA?
Поле списка в Excel VBA представляет собой список, назначенный переменной. Этот список имеет различные входы для выбора и позволяет выбрать несколько вариантов одновременно. Список можно вставить в пользовательскую форму, выбрав параметр списка.
Списки используют именованные диапазоны, имеющие определенные значения. Целью использования списка является отображение списка значений, из которых пользователи могут выбирать.
Оглавление
- Что такое список в Excel VBA?
- Как создать список в Excel?
- Как создать список в VBA?
- Как создать список в пользовательской форме?
- Как добавить динамический элемент управления в список?
- Как добавить элементы в список элементов управления в VBA?
- Как удалить элементы из списка элементов управления с помощью VBA?
- Пример
- Константы списка в VBA
- Часто задаваемые вопросы
- Рекомендуемые статьи
Как создать список в Excel?
Шаги для создания списка в Excel перечислены ниже:
- Шаг 1. Включите вкладку «Разработчик» на ленте Excel, чтобы получить доступ к элементам управления ActiveX. В диалоговом окне «Параметры Excel» нажмите «Настроить ленту в Excel» и установите флажок «Разработчик».
Шаг 2: На вкладке «Разработчик» нажмите «Вставить», а затем элемент управления «список». Это вставит новый список на лист Excel. - Шаг 3: Нарисуйте прямоугольник на листе Excel, чтобы создать список, как показано на следующем рисунке.
- Шаг 4: Выберите список, перейдите на вкладку «Разработчик» и выберите «Свойства». Откроется окно «Свойства».
- Шаг 5: В окне «Свойства» введите «дни» в «ListFillRange». «Дни» — это именованный диапазон дней недели.
- Шаг 6: Щелкните свойство «MultiSelect». В раскрывающемся списке выберите «1-fmMultiSelectMulti», как показано на следующем изображении.
- Шаг 7: Щелкните свойство «ListStyle». В раскрывающемся списке выберите «1-fmListStyleOption». Это добавит флажки слева от перечисленных элементов, как показано на следующем рисунке.
- Шаг 8: Закройте окно «Свойства». Окно со списком выглядит так, как показано на следующем рисунке.
Примечание: Вы можете выбрать «режим дизайна выключен», нажав «Режим дизайна». Это закрывает «режим проектирования».
Как создать список в VBA?
Шаги для создания списка в VBA перечислены ниже:
.free_excel_div{фон:#d9d9d9;размер шрифта:16px;радиус границы:7px;позиция:относительная;margin:30px;padding:25px 25px 25px 45px}.free_excel_div:before{content:»»;фон:url(центр центр без повтора #207245;ширина:70px;высота:70px;позиция:абсолютная;верх:50%;margin-top:-35px;слева:-35px;граница:5px сплошная #fff;граница-радиус:50%} Вы можете скачать этот шаблон Excel для списков здесь — Шаблон Excel для списков
- Шаг 1: Щелкните правой кнопкой мыши список и убедитесь, что выбран режим разработки. Это связывает поле со списком с ячейкой.
- Шаг 2: В «свойствах» перейдите к свойству «LinkedCell» и заполните «B17», как показано на следующем рисунке.
- Шаг 3: В «ListFillRange» введите «Месяц».
- Шаг 4: Окно со списком выглядит так, как показано на следующем изображении.
Данные в ячейке B17 изменяются, когда вы меняете свой выбор в списке. Это показано на следующем изображении.
Как создать список в пользовательской форме?
Шаги для создания списка в пользовательской форме перечислены ниже:
- Шаг 1: На вкладке «Разработчик» нажмите «Visual Basic» в разделе «Код» или нажмите клавиши ALT+F11.
- Шаг 2: В меню «Вставка» нажмите «Пользовательская форма».
- Шаг 3: Из панели инструментов перетащите элемент управления списком на «Пользовательскую форму».
- Шаг 4: Дважды щелкните «UserForm» и выберите «Событие UserForm», как показано на следующем снимке экрана.
- Шаг 5: Добавьте следующий код в промежуточную процедуру.
Частная подпрограмма UserForm_Initialize()
ListBox1.AddItem «MBA»
ListBox1.AddItem «MCA»
ListBox1.AddItem «MSC»
ListBox1.AddItem «MECS»
ListBox1.AddItem «CA»
Конец сабвуфера
- Шаг 6: Нажмите F5, чтобы запустить код.
Как добавить динамический элемент управления в список?
Действия по добавлению динамического элемента управления в поле со списком в форме UserForm с помощью VBAUserForm Использование VBA В VBA пользовательские формы представляют собой настраиваемые определяемые пользователем формы, предназначенные для приема пользовательского ввода в виде формы. Он имеет различные наборы элементов управления для добавления, такие как текстовые поля, флажки и метки. Подробнее перечислены ниже:
- Шаг 1: На панели инструментов добавьте «CommandButton» в «UserForm».
- Шаг 2: Щелкните правой кнопкой мыши «Командную кнопку» и выберите «Свойства».
- Шаг 3: Измените заголовок «CommandButton» на «Create_Listbox».
- Шаг 4: Дважды щелкните кнопку команды, и появится следующий код.
Частная подпрограмма CommandButton1_Click()
Конец сабвуфера
- Шаг 5: Назовите следующую процедуру «Add_Dynamic_Listbox».
Подпрограмма Add_Dynamic_Listbox()
‘Добавить окно динамического списка и назначить его объекту ‘LstBx’
Установите LstBx = UserForm3.Controls.Add(«Forms.ListBox.1»)
‘Позиция списка
LstBx.Left = 20
LstBx.Top = 10
Конец сабвуфера
- Шаг 6: Нажмите F5, чтобы запустить макрос.
Как добавить элементы в список элементов управления в VBA?
Код для добавления элементов в элемент управления списком в VBA упоминается следующим образом:
Частная подпрограмма Insert _Items _To_LstBox ()
ListBox1.AddItem «Элемент 1»
ListBox1.AddItem «Элемент 2»
ListBox1.AddItem «Элемент 3»
ListBox1.AddItem «Элемент 4»
ListBox1.AddItem «Элемент 5»
Конец сабвуфера
Как удалить элементы из списка элементов управления с помощью VBA?
Код для удаления элементов из элемента управления списком в VBA упоминается следующим образом:
Sub Clr_LstBx()
UserForm3.ListBox1.Clear
Конец сабвуфера
Пример
Допустим, у нас есть ежедневные данные о продажах. Мы хотим подготовить графический пользовательский интерфейс этих данных о продажах, который позволит нам выбирать элементы из списка. Чтобы получить данные о продажах, мы должны изменить ячейку индекса на «ссылку на ячейку» и применить формулу ВПРФормула ВПРФункция Excel выполняет поиск определенного значения и возвращает соответствующее совпадение на основе уникального идентификатора. Уникальный идентификатор однозначно связан со всеми записями базы данных. Например, идентификатор сотрудника, номер списка учащихся, контактный номер клиента, адрес электронной почты продавца и т. д. являются уникальными идентификаторами. читайте больше, как показано на следующих изображениях.
Константы списка в VBA
Константы, их значения и описание приведены в следующей таблице:
Часто задаваемые вопросы
#1 – Как использовать список в Excel?
Списки используются для управления таблицами в пользовательской форме. Строки информации аккуратно управляются без ненужного отображения информации в пользовательской форме.
Пользователь может прокручивать элементы списка. Настройка «типа выбора» позволяет пользователям выбирать несколько вариантов из списка. Когда пользователь выбирает элемент из списка, с таким выбором предпринимается действие.
По умолчанию поле со списком выдает результат, соответствующий порядковому номеру выбранного элемента. Таким образом, если выбран четвертый элемент, на выходе будет число 4.
# 2 — Как заполнить список в Excel VBA?
Обычно список необходимо заполнять значениями каждый раз при открытии рабочей книги. Процедура «Открыть» выполняется каждый раз при открытии Рабочей книги.
Для заполнения списка необходимо использовать следующий код:
С Sheet1.lstListBox
.AddItem «Джеймс»
.AddItem «Келли»
.AddItem «Элизабет»
.AddItem «Джордж»
.AddItem «Уильям»
Конец с
С этим кодом список заполняется 5 именами — Джеймс, Келли, Элизабет, Джордж и Уильям.
#3 – Как получить данные из списка в Excel?
Данные могут быть эффективно использованы только при правильном их извлечении. Шаги для извлечения данных из списка перечислены ниже:
1. Выберите «Управление форматом» в меню после щелчка правой кнопкой мыши по списку.
2. В поле «Ссылка на ячейку» введите координаты пустой ячейки.
3. Выберите ячейку, в которой будут отображаться данные из списка. Необходимо использовать следующую формулу:
«=ИНДЕКС([begin cell]:[end cell],[cell link],0)”
Примечание: «Начальная ячейка» означает первую ячейку списка. «Конечная ячейка» означает последнюю ячейку списка. «Ссылка на ячейку» означает ячейку, координаты которой были введены на втором шаге.
№ 4. В чем разница между списком и полем со списком?
Различия между полем со списком и полем со списком перечислены ниже.
– Окно списка состоит из списка элементов и позволяет пользователям выбирать один или несколько параметров. Напротив, поле со списком состоит из комбинации текстового поля и раскрывающегося списка. Текстовое поле позволяет пользователям вводить элемент. Выпадающий список позволяет пользователям выбирать элемент.
– В поле со списком отображаются все элементы в заданной области сразу, а в поле со списком — по одному элементу за раз. Элементы раскрывающегося списка поля со списком видны, когда пользователь щелкает
это.
– В поле со списком пользователь должен выбирать из доступных элементов, тогда как в поле со списком пользователь может ввести элемент, которого нет в списке.
– Окно списка используется, когда ввод ограничен элементами списка. Однако поле со списком используется там, где упоминается список предлагаемых вариантов.
– Окно со списком занимает больше места, поскольку сразу отображается полный список. С другой стороны, поле со списком помещается на маленьком пространстве, потому что список отображается только при нажатии кнопки
Кнопка «Стрелка вниз.
- Поле со списком в Excel — это список, назначенный переменной, который можно использовать для выбора нескольких элементов.
- В пользовательской форме список можно вставить, выбрав параметр списка.
- При создании списка в Excel необходимо ввести данные в свойствах «ListFillRange», «MultiSelect» и «ListStyle».
- «Режим дизайна» можно отключить, нажав «Режим дизайна».
- При создании списка в пользовательской форме щелкните «Visual Basic» или нажмите клавиши ALT+F11.
Рекомендуемые статьи
Это было руководство по списку в Excel VBA. Здесь мы обсуждаем, как создать поле списка на листе Excel и в пользовательских формах, а также приводим практические примеры и загружаемые шаблоны. Вы также можете посмотреть на эти полезные функции в Excel –
- Редактировать раскрывающийся список в ExcelРедактировать раскрывающийся список в ExcelРаскрывающиеся списки в Excel помогают пользователю вручную вводить данные в ячейку с определенными значениями на выбор.Подробнее
- Флажок в ExcelФлажок в ExcelФлажок в Excel представляет собой квадратное поле, используемое для представления вариантов (или выбора) пользователю для выбора.Подробнее
- Функция VBA MsgBoxVBA MsgBoxVBA MsgBox — это функция вывода, которая отображает обобщенное сообщение, предоставленное разработчиком. Этот оператор не имеет аргументов, и персонализированные сообщения в этой функции записываются в двойных кавычках, а для значений предоставляется ссылка на переменную.Подробнее
0 / 0 / 0
Регистрация: 10.03.2020
Сообщений: 3
1
Excel
Добавление данных в выпадающий список
10.03.2020, 20:02. Показов 2160. Ответов 4
Добрый вечер.
Это мой первый макрос, поэтому, пожалуйста, «не кидайте в меня тапками»
На просторах интеренета нашла вот такой код, который, в приницпе, решает мою задачу, при одном условии, что данные находятся на одном листе (я его подредактироала под свою задачу: есть несколько динамических диапозонов, в которые можно добавить новые значения вводя данные в ячейку с выпадающим списком, который ссылается на эту динамическую таблицу)
Прилагаю код (не знаю как правильно его оформить)
Visual Basic | ||
|
Но мне надо, чтобы лист с выпадающим списком находился на одном листе («Новая форма»), а таблицы с редактируемыми динамическими диапозонами — на другом листе («Справочники»)
А где это изменить в коде никак не могу найти…
Буду ОЧЕНЬ признательна за помощь
0