Условное смещение в списке проверки данных
РЕДАКЦИЯ № 2
* Хорошо, мои предыдущие формулировки моей проблемы, как указывалось выше, были довольно мусором. Это редактирование перефразирует вопрос в более простой форме, обобщает контекст и предоставляет образцы данных.
ПРИМЕР ДАННЫХ
Col 1 Col 2 RESET? UNIQUE VALUES
A A yes A
C C B
D D C
A A D
B B
A A
D D
C C
Обратите внимание, что для того, чтобы повторить мою проблему, необходимо использовать инструмент проверки списка, чтобы создать раскрывающийся список для каждой ячейки в столбце 2, где элементами списка являются A, B, C, D. Примечание. Только столбец 1 и столбец 2 (+ выпадающие списки) являются частью проблемы.
СБРОС? ячейка является частью потенциального решения / как я бы хотел, чтобы решение выглядело идеально.
Столбец уникальных значений, просто для удобства при создании выпадающих списков. (См. Формулу в разделе попыток.)
ОПИСАНИЕ
У меня есть два столбца, Col 1 и Col 2. Как видно из примера выше, оба изначально идентичны. Однако каждая ячейка в столбце 2 имеет раскрывающийся список, представляющий собой список уникальных значений в столбце 1.
Пока все просто. Проблема в том, что мои столбцы на самом деле намного длиннее, чем мой образец, поэтому, поиграв с Col 2, я могу захотеть восстановить / сбросить его до его начальных значений (т.е. вернуть его к его начальным значениям, равным Col 1),
ВОПРОС
Мне нужна кнопка, которая "сбрасывает" столбец, содержащий раскрывающиеся списки, чтобы его значения совпадали со значениями в другом столбце.
КОНТЕКСТ
В моем приложении Col 1 для справки, в то время как Col 2 - контрфактуальный столбец, в котором пользователь может изменить значение на любое из четырех возможных значений (опять же, A, B, C или D в этом примере), чтобы увидеть, какой эффект это имеет на других столбцах.
После игры с Col 2 пользователь захочет сбросить Col 2 до значений по умолчанию, которые содержатся в Col 1. Другими словами, значение Col 2 по умолчанию является условным для Col 1.
СЛОЖНОСТИ И ПОПЫТКИ
Кажется, основная трудность заключается в попытке применить формулу и выпадающий список к одной ячейке.
Я пытался с помощью IF
формула в ячейке, но это удаляет выпадающий список
Я также попытался использовать следующую формулу в source
окна настройки проверки списка
Формула на ячейке B2*:
=IF(C2="yes",A2,D2:D5)
* где столбцы имеют интуитивное соответствие приведенным выше образцам данных; то есть Col 1 такой же, как столбец A; Колонка D - УНИКАЛЬНЫЕ ЗНАЧЕНИЯ).
Но это просто ограничивает возможность, доступную в списке. Если бы я мог получить это значение для заполнения ячейки без ручного нажатия, то это было бы идеальным решением. (В моем первом редактировании ниже я использовал функцию INDEX, чтобы попытаться добиться этого, но это не сработало.)
Я не пробовал никаких подходов VBA, так как я не знаком с языком, но я готов попробовать, если он кажется плодотворным.
ЗАМЕЧАНИЯ И ОШИБКИ
Пожалуйста, прости, если я злоупотребил терминологией с точки зрения выпадающих списков против проверки списков. Надеюсь, они взаимозаменяемы.
ОРИГИНАЛЬНЫЙ ВОПРОС
У меня есть две колонки, X_1 и X_2. Представьте, что у X_1 есть значения, которые я наблюдаю в реальности, - содержащие, скажем, четыре уникальных значения, а не N наблюдений. X_2 - это фактическая переменная, которая означает, что я могу позволить пользователю изменить X_2 на любое из четырех значений X_1 через раскрывающийся список. Это имеет последующие последствия с точки зрения функции, которую я использую для предсказания некоторого Y.
Проблема в том, что N - очень большое число, поэтому для ручного сброса X_2 потребуется слишком много времени.
Затем я ищу кнопку, которая может сбросить список в X_2 в соответствии с соответствующим значением в X_1.
РЕДАКТИРОВАТЬ:
Как показано на снимке экрана, когда ячейка сброса (т.е. D2) == "да", формула ниже ограничивает раскрывающийся список только одним значением; то, что соответствует X_1; в противном случае он имеет все четыре уникальных значения X_1, которые содержатся в списке в G2:G5.
Это почти то, что я хочу, но проблема в том, что пользователь все еще должен выбрать ограниченное значение. В настоящее время я ищу способ заполнить ячейку первым значением lis (отсюда и функцией INDEX), но до сих пор у меня не получилось.
Формула:
=IF($D$2="yes";INDEX($A$2;1);$G$2:$G$5)
Список в выбранной ячейке содержит только "A", потому что RESET установлен на "да"; в противном случае список будет содержать A, B, C, D. Проблема в том, что "А" не заполняется автоматически.
1 ответ
Решение оказалось довольно простым.
Private Sub CommandButton1_Click()
Range("B:B").Value = Range("A:A").Value
End Sub
Где A и B соответствуют X_1 и X_2 в вопросе респираторно. "Кнопка" СБРОСА, которую я включил, может быть обработана с помощью кнопки CommandButton, о которой я не знал, что она существует.
Чтобы быть ясным о том, что это делает:
- B - это колонка с выпадающими списками, которую я могу поиграть с B, насколько мне нравится.
- Когда я закончу, я могу нажать свою кнопку и привет! Все значения B возвращаются к значениям по умолчанию, которые равны A.
Мой вопрос был явно слишком сложным для такой простой задачи, но, если честно, я был сильно застигнут врасплох тем, что функциональность CommandButton по умолчанию именно то, что мне нужно (в частности, что он не удаляет / удаляет) мои выпадающие списки, как только он был использован). Может быть, в этом и прелесть возвращения к программному обеспечению, которое было разработано для минимизации затрат на вход для новых пользователей!