Страницы: 1
RSS
Как организовать выпадающий список в ячейке из двух значений в строке выбора, но вставкой только одного?
 
Что-то я затупил - не могу придумать как организовать более удобный пользователю ввод данных.
Существует таблица в которой значения заносятся из списка проверки данных. Но эти значения являются кодами и пользователю не совсем удобно помнить что какой код обозначает. Есть лист Справочник где каждому коду соответствует расшифровка. Можно ли организовать ввод данных так чтобы в выпадающем списке был код и его расшифровка, а при выборе в ячейку заносился только код. Или же список только из расшифровки кодов, а при выборе в ячейку заносился код.
В UserForm в ComboBox можно задавать несколько столбцов, а вот как это организовать на листе сразу во многих ячейках не представляю.
Не стреляйте в тапера - он играет как может.
 
Напрямую, Проверкой данных, думаю, никак. Можно сделать отдельный столбец из сцепки Кода и Наименования, а при вставке в ячейку обрабатывать значение макросом.
Изменено: Sanja - 13.07.2016 11:11:19
Согласие есть продукт при полном непротивлении сторон
 
Без кодов могу предложить только так(см. вложение).
Вот здесь аналогичный вопрос поднимался, там есть решение и макросами.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Пока писал ответили.
для столбца А
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect([A1:A100], Target) Is Nothing Then Exit Sub
lRws = Sheets("Справочник").Cells(Sheets("Справочник").Rows.Count, 2).End(xlUp).Row
For i = 2 To lRws
    If Sheets("Справочник").Cells(i, 2).Value = Target.Value Then Target.Value = Sheets("Справочник").Cells(i, 1).Value
Next i

End Sub
 
Мой вариант
Согласие есть продукт при полном непротивлении сторон
 
VideoAlex, почитайте тему по ссылке - очень уж в Вашем коде не хватает отключения отслеживания событий :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist,  Спасибо. я боялся что макрос сам на себя зациклится но не знал как отключить проверку.
 
Без макросов, в этом случае, всё равно не обойтись - вариант с UserForm.
Цитата
Ts.Soft написал:
а вот как это организовать на листе сразу во многих ячейках
- даблклик по ячейкам в столбцах "Код":
 
Ошибочка:
Set Rng = Range(Rng.Rows(3), Rng.Rows(N))
 
Большое спасибо всем ответившим!
Пока изучал вариант по ссылке The_Prist и экспериментировал с ним появилось столько решений :)
Вариант VideoAlex похож на The_Prist только с "ручной" реализацией ВПР (VLookup) :)
Очень понравился пример Sanja  - всё просто и ничего лишнего. Действительно, краткость - сестра таланта :)
Единственный минус во всех этих вариантах - проверка данных не даёт ввести код напрямую, только выбором из списка.
Интересное решение С.М.,  там осталось только прикрутить проверку данных или непосредственно в ячейке, или в Worksheet_Change сделать цикл проверки наличия кода в справочнике и если код недопустимый, вызывать UserForm со справочником.

Ещё раз всем большое спасибо!
Не стреляйте в тапера - он играет как может.
Страницы: 1
Наверх