Страницы: 1
RSS
Выпадающий список с поиском
 
Всем доброго дня.
Есть много практически одинаковых страниц (около 100 штук). Кроме этого, есть и другие отличающиеся от них страницы.
На всех 100 похожих страницах есть диапазон (A3:A17) для которых нужен выпадающий список с поиском. Поиск нужен потому что сейчас там порядка 200 наименований и список может рости. Кстати, список размещен на другой странице этой же книги.
Метод, показанный Николаем Павловым Выпадающий список с быстрым поиском (planetaexcel.ru), как раз то, что мне нужно (при наборе "ко", чтобы выходили и "кости" и "молоко" и "окорок"), но он мне не подошел, потому что, насколько я понял, его трудно применить для большого количества ячеек.
Может быть какой-то еще вариант?

Заранее благодарю за помощь.  
 
файл-пример приложите, а укажите где должен быть этот список (какой лист и ячейка) и с каких листов брать данные -  мы подумаем
 
Цитата
DanKZ написал:
Может быть какой-то еще вариант?
Смотрите в сторону VBA
 
Уже понял, но в макросах совсем плох

Цитата
New написал: файл-пример приложите, а укажите где должен быть этот список (какой лист и ячейка) и с каких листов брать данные -  мы подумаем
1. Excel 2010
2. Название файла меняется каждый день в зависимости от даты.
3. Список на листе "Не заходить" B2:B184 и может расти.
4. Диапазон для которого нужен выпадающий список на странице "1" A3:A17 и таких страниц будет более 100шт (с именами 1, 2, 3 и так далее)
 
Цитата
DanKZ написал:
таких страниц будет более 100шт (с именами 1, 2, 3 и так далее)
Зачем?
Судя по описанию - решение простое: списку присвоить имя и макросом раскидываете список по листам.
А вот зачем формулы в ячейках со списком? Наверное, Вы описываете в теме какой-то этап решения Вашей задачи. Опишите Вашу основную задачу - что должен делать этот файл.
 
надстройка nerv_DropDownList
 
Этот файл я готовлю для работы моей службы доставки еды. Он делает много чего. Основная цель сделать файл комфортным для оператора, принимающего заказы.
Я выложил только часть файла, чтобы не отвлекать от вопроса, который меня интересует.
Я немного разбираюсь в формулах, но ничего не понимаю в макросах, поэтому именно при помощи формул, я решил проблему отображения всех блюд при выборе определенных наборов (сетов).
Вопрос с выпадающим списком решить формулами не смог, много пересмотрел видео и прочитал статей, поэтому обратился на форум, чтобы получить помощь в написании макроса.  
Изменено: DanKZ - 20.01.2021 20:04:48
 
ну, в формулах я плохо разбираюсь, сделал вам форму с поиском.
для запуска нажмите
1. или нажмите Ctrl+ф (русская)
2. или нажмите Alt+F8 - Выполнить

P.S. Скроллинг мыши работает если выделить любое блюдо в списке
Изменено: New - 21.01.2021 05:09:32
 
Я вам премного благодарен, что вы потратили свое время, но такая форма замедляет процесс приема заказа.
Представьте вы звоните в службу доставки еды и делаете заказ. Если вы знаете, что хотите заказать, то вы делаете заказ очень быстро и вас расстраивает, если оператор делает это медленно. Поэтому важно, чтобы это было с минимальным количеством нажатий.
Раньше мы использовали Проверку данных  - Список - Указывали диапазон в котором был список блюд - Отключали сообщение об ошибке, но потом я увидел метод Николая Павлова и понял, что такой результат для нас идеален, но само решение нереально. Я понял, что это можно сделать макросом, но не знаю как.  
 
Цитата
DanKZ написал:
важно, чтобы это было с минимальным количеством нажатий.
DanKZ, вариант от New очень хороший и универсальный, просто в модули всех листов с заказами (1, 2, 3 и т.д. - кроме листа "Не заходить") добавьте:
Код
Private Sub Worksheet_Activate()
        Range("A2").Value = "Блюдо"
        Range("F2").Value = "Кол-во"
        Range("A3:D" & Cells(Rows.Count, 1).End(xlUp).Row + 1).ClearContents
        Range("F3:F" & Cells(Rows.Count, 6).End(xlUp).Row + 1).ClearContents
        frmOrder.Show
End Sub
И в модуле формы (кнопка "Добавить в заказ" - процедура Private Sub cmbAddToOrder_Click() уберите строчку:
Код
MsgBox "Блюдо добавлено!", vbInformation, "Заказ"
И будет Вам счастье  :)
И имейте ввиду, что из-за объединенных ячеек когда-то, возможно очень скоро, можете получить лишнюю головную боль.
Удачи!  ;)
P.S. И еще желательно добавить проверку на число в окне для ввода "кол-во", чтобы не выскакивала ошибка. если оператор вместо цифр введет буквы, но это уже другая тема...
Изменено: _Igor_61 - 21.01.2021 18:23:21
 
Цитата
_Igor_61 написал: из-за объединенных ячеек... можете получить лишнюю головную боль.
Вы имеете ввиду, что иногда при указании ячейки в формулу вставляется "двойной адрес" и рабочая формула может не работать?  
 
DanKZ, я имею ввиду, что объединенные ячейки хороши для оформления, но не для вычислений.
Теперь насчет формул в ячейках со списком:
Вы помещаете формулы в ячейки с выпадающим списком, и после того, как из списка выбрано значение, в ячейке будет значение, а не формула, (т.е. формулы в ячейке уже не будет), что Вам и показал New в примере из #8:
формулы в столбце "А" не нужны совсем, всё делается через пользовательскую форму.
А вот это:
Цитата
DanKZ написал:
иногда при указании ячейки в формулу вставляется "двойной адрес" и рабочая формула может не работать?  
нужно делать без "иногда", а то когда много "иногда" наберется, все равно придете к выводу, что изначально не так всё делали. Поэтому и был вопрос в #5:
Цитата
_Igor_61 написал:
Опишите Вашу основную задачу - что должен делать этот файл
Задачу, а не способы, которыми Вы пытаетесь Вашу задачу решить. тогда Вам бы подсказали наиболее лучший способ решения Вашей задачи. Скорее всего и не нужно будет сотни листов, но Вы ответили, что Ваш файл
Цитата
DanKZ написал:
Он делает много чего
Очень содержательно :)
Исходя из описания задачи - в ответах совокупно в #8 и в уточнении в #10 Вам предложен вариант, который вполне решает Вашу задачу - поиск по буквам производится, количества нажиманий сведены к минимуму: форма открывается при переходе на лист с заказом (нажимать ничего не надо, кроме ярлычка листа, на который переходите), потом начинаете набирать буквы - список сокращается, выбираете нужное и ставите количество (тут к сожалению придется ручками цифры нажимать, т.к. если просто скажешь или подумаешь "пять" или "десять" - Excel может неправильно понять) :).
Задача выполнена?  ;)  
 
Цитата
_Igor_61 написал:
DanKZ , я имею ввиду, что объединенные ячейки хороши для оформления, но не для вычислений.
Тут я с вами полностью согласен.

Цитата
_Igor_61 написал:
Вы помещаете формулы в ячейки с выпадающим списком, и после того, как из списка выбрано значение, в ячейке будет значение, а не формула, (т.е. формулы в ячейке уже не будет),
Этот файл - шаблон. В начале каждой смены оператор открывает данный файл и сохраняет его под другим именем и использует уже сохраненный файл.
Формулы в столбце А вставлены потому, что при выборе определенных сетов в подарок идут определенные блюда. Например, при выборе сета Мега в подарок идет 2 пиццы и напиток. Формулы позволяют вставить автоматически эти подарки в строки, идущие после строки с сетом и таким образом решается проблема, что повара могут забыть приготовить определенные позиции. Тот факт, что каждая страница (1, 2, 3 и т.д) - это отдельный заказ и будет заполняться и распечатываться только 1 раз "решает" проблему замены формулы значением.
Цитата
_Igor_61 написал:
Поэтому и был вопрос в #5:Цитата _Igor_61  написал: Опишите Вашу основную задачу - что должен делать этот файл
Под фразой Он делает много чего, я подразумевал, что у файла много других функций на других страницах, которые я удалил, чтобы не отвлекать участников форума от основной задачи: он собирает данные о клиентах, считает зарплаты курьеров, фиксирует расстояние до адресов клиентов, помогает собирать статистику по наличным и безналичным платежам, фиксировать заказы приходящие от посредников (агрегаторов) и прямые заказы, фиксирует данные по развозке сотрудников и взятые ими авансы. Возможно, надо было отправить файл целиком.
Цитата
_Igor_61 написал:
количества нажиманий сведены к минимуму
В рамках наших реалий можно еще оптимизировать.
1. Практика показывает, что в 80% случаев заказывается каждой позиции по 1 шт. Можно ли сделать так, чтобы при выборе блюда в форме автоматически ставилось количество 1 и в случае необходимости оператор смог бы отредактировать это количество?
2. Можно сделать так, чтобы для выхода из формы достаточно было нажать клавишу ESC на клавиатуре?
3. Можно сделать так, чтобы при наборе текста в строке поиска можно было выбрать из сокращенного текста нужное блюдо при помощи клавиш Tab, вверх-вниз и Enter?
 
DanKZ, Потестируйте
 
Цитата
New написал:
Потестируйте
Начиная со второго блюда ячейка с количеством блюд пустая. Можно сделать так, чтобы для каждой строки номинально стояло 1?
Заранее благодарю.  
 
ой, не учёл. Исправил.
 
Цитата
DanKZ написал:
Начиная со второго блюда
New, не соглашайся!
требуй начинать с первого блюда - с борща
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
New написал:
ой, не учёл. Исправил.
Все очень круто. Большое спасибо.
 
Цитата
DanKZ написал:
при выборе сета Мега в подарок идет 2 пиццы и напиток
ну, в принципе, тоже можно попробовать реализовать. Блюдо называется "Сет Мега"? А какие 2 пиццы добавлять и какой напиток ?
Если точно известно какие пиццы и напиток, то можно добавлять их после Сет Мега автоматом. А можно просто выводить сообщение "Добавьте в заказ 2 пиццы и напиток, т.к. клиент выбрал Сет Мега" (после того как Сет Мега был добавлен), т.е. сделать напоминание после выбора Сет Мега, чтобы официант не забывал их добавлять.
Вот добавил информационное сообщение, если заказали Сет Мега
Изменено: New - 22.01.2021 04:23:28
 
Цитата
New написал:
ну, в принципе, тоже можно попробовать реализовать...
Сегодня протестирую файл, а потом если вы не против обращусь к вам еще раз. Еще раз большое спасибо.  
 
я там файл добавил в своё сообщение выше, с информационным окном после заказа Сета Мега. Потестируйте
Страницы: 1
Наверх