Страницы: 1
RSS
Зависимый выпадающий список
 
Добрый вечер всем!
Был в приемах – не помогло. Может мозгов просто не хватает, хотя скорей у меня в задаче немного условия не те. Подскажите какую формулу прописать в "проверке данных" для выпадающего списка.
В Накладной в диапазоне G10:G40 (Вес), есть выпадающий список(проверка данных) со значениями веса. Как сделать так, чтобы в выпадающем списке был только вес соответствующий товару в диапазоне B10:B40. Т.е. в выпадающем списке должны быть только те значения веса,  которые для данного товара есть на листе "Прайс". Т.е. если такого веса в листе прайс для данного товара нет, чтоб его в выпадающем списке не было. Не могу осилить формулу. Заранее спасибо.
 
Неужели таки нет решения? Может задача сложная или я плохо объяснил?
 
Меньше часа прошло, пятница. Или применить пункт 3.6 Правил?
 
Цитата
antal10 написал:
Не могу осилить формулу.
Формулой не получится (только с доп. столбцами).
Макросом можно.
 
Цитата
Юрий М написал:
Меньше часа прошло, пятница. Или применить пункт 3.6 Правил?
Правила я не нарушил Юрий М, многократного поднятия темы не было. Было однократное. Правила я знаю. Пятница это не суббота и не воскресенье. К тому же я не занимаюсь кросспостингом в данном случае, когда очень нужно, что тоже не очень любят на форуме. Я же не напрягаю никого. Есть решение - хорошо, нету решения - ну и ладно.
Михаил С., макросом или формулой разницы нет, мне важней решение. Вот только вопрос, почему формулой нельзя, это так для общего развития. Дополнительный столбец я думаю тоже не помеха, если конечно в дальнейшем эта формула отслеживать изменения "Веса"
Изменено: antal10 - 05.03.2016 00:08:16
 
С макросом, если у вас разделитель запятая - тоже проблемы
Цитата
antal10 написал:
Вот только вопрос, почему формулой нельзя,
Проверка данных списком должна ссылаться на ячейки листа или список занесен в формулу проверки через ";" (в русской версии Excel)
 
Михаил С., а какой тогда выход? Может мне что-то изменить надо в структуре самого файла или что? Я просто не совсем понимаю в этом. Вы писали про дополнительный столбец. Или условия для него тоже нереальные?
Изменено: antal10 - 05.03.2016 00:32:16
 
Цитата
antal10 написал:
многократного поднятия темы не было. Было однократное
Зато через час. Наберитесь терпения.
 
Вот пример с макросом. В формулах измените ссылкe на ячейку G9 формулой --ПОДСТАВИТЬ(G9;".";",").
C доп.столбцами может завтра попробую, если вспомню про вас, и если макрос не устраивает.

зы. Файл должен работать в 2003? или как?
Изменено: Михаил С. - 05.03.2016 00:52:51
 
Вот с макросом и доп.столбцами
Изменено: Михаил С. - 05.03.2016 01:15:44
 
Спасибо Михаил за проявленный интерес к моей теме, но не работает. Посмотрите не все позиции веса, относящиеся к данному товару в выпадающем списке есть. Ну например посмотрите в ячейке B11 находится "Капуста со свеклой", а в выпадающем списке Вес для этой позиции только 0,2 и 0,5 кг, хотя для этого наименование есть и кило и 3 и 8. К тому же присутствуют пустые значения в выпадающем списке.
Короче я понял задача сложная не только для меня как для профана, но и для профи. Подскажите хотя бы куда копать. Может изменить структуру документа, как-то может переформатировать и перестроить данные, чтобы было легче сделать зависимый динамический список. Обчитался многие форумы, в том числе заграничные, решения не нашел.
Изменено: antal10 - 05.03.2016 01:47:20
 
В каком варианте?
У вас там объединенные ячейки. Снимите объединение, и будет вам счастье.
Или перенесите эти данные в другой диапазон.
Изменено: Михаил С. - 05.03.2016 01:53:48
 
Цитата
Михаил С. написал:
В каком варианте?
Не совсем понял про что речь.
Попробую еще раз объяснить. В ячейке B11 присутствует наименование "Капуста со свеклой", вес в выпадающем списке показывает 0,2 и 0,5 и пустые строки. А в прайсе для этого наименования присутствует вес на кило на 3 и на 8, и в выпадающем списке эти веса отсутствуют. См. скрин.
P.S. Разъединение ячеек проблему не решило.
Изменено: antal10 - 05.03.2016 02:22:22
 
Объясняю еще раз
В столбцах K:P, кои определены как доп.столбцы, у вас присутствуют объединенные ячейки.
Снимите объединение, и будет все нормально.
 
Я все понял Михаил С., но нет. Объединение снято, но показывает неверно. См. скрин. Набор №7 показывает все веса, хотя в прайсе присутствует только 0,3 для этой позиции и так все остальные.
Изменено: antal10 - 05.03.2016 02:44:49
 
Цитата
Юрий М написал:
Зато через час. Наберитесь терпения.
Хорошо Юрий М, постараюсь. Просто мне сложно определить в данной ситуации по прошествию времени в один час - это или мало времени прошло или потому что пятница или задача реально невыполнимая. Вот и переспросил через час. Не ругайтесь. :)
 
Цитата
antal10 написал:
Объединение снято, но показывает неверно.
?
 
Ну тогда я ничего не понимаю
 
Цитата
antal10 написал:
тогда я ничего не понимаю
Тогда может так:
 
С.М., спасибо. Работает.
P.S. Немного поспешил. Работает только текущей ячейки. Т.е. выпадающий список появляется только для текущего значения. Но если сначала заполнить наименование сразу несколько, то выпадающий список появляется один только для последнего заполненого, в остальных вес проставить не получается - списков нет, только вручную.
Изменено: antal10 - 05.03.2016 11:16:40
 
В "Приемах" по связанным спискам есть пример с листом Способ1.5.
Вот по этому образу и подобию вам, наверное, и надо строить привязку данных... ;)
 
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Цитата
antal10 написал #20:
выпадающий список появляется один только для последнего заполненого, в остальных вес проставить не получается - списков нет
Ещё раз наступаете на ячейку с Морковкой, жмёте клавиши F2 и Enter
 
Спасибо, буду пробовать.
 
См. мой вариант. В столбце К (его можно скрыть) динамический диапазон.
 
Ваш вариант Юрий М, работает почти как надо. Спасибо.
Единственный нюанс это если в накладной в ячейке наименование нет товара т.е. пусто и клацнуть по выпадающему списку, то вылазит дебаг. Или тот же самый дебаг выскакивает если товар не имеет вообще веса.

P.S. Ваш вариант по-моему то что доктор прописал. Только возможно избавиться от этой ошибки, т.к. даже при случайном или неслучайном нажатии на выпадающий список постоянно вываливается в дебаг. И сообщение о том что такого товара нет, тоже ни к чему, потому что товар будет формироваться выпадающим списком из наименований в прайсе.
Изменено: antal10 - 05.03.2016 14:19:54
 
Кто же знал, что всё так плохо с данными? ))
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Long, LastColumn As Long, Rng As Range, Tovar As String, iRow As Long, x As Long, LastRow As Long
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("G10:G40")) Is Nothing Then
        Tovar = Target.Offset(0, -5)
        With Sheets("Прайс")
            LastColumn = .Cells(3, Columns.Count).End(xlToLeft).Column
            If Tovar <> "" Then
                Set Rng = .Columns(1).Find(what:=Tovar, LookIn:=xlValues, lookAt:=xlWhole)
                If Not Rng Is Nothing Then
                    iRow = Rng.Row
                Else
                    MsgBox "Такого товара не найдено.", 48, "Ошибка!"
                    Exit Sub
                End If
            End If
            If iRow = 0 Then
                MsgBox "Не заполнено поле НАИМЕНОВАНИЕ. Повторите ввод.", 48, "Ошибка!"
                Exit Sub
            End If
            LastRow = Cells(Rows.Count, 11).End(xlUp).Row
            Range(Cells(2, 11), Cells(LastRow + 1, 11)).ClearContents
            LastRow = 2
            ReDim arr(1 To LastColumn - 1, 1 To 1)
            For i = 2 To LastColumn
                If .Cells(iRow, i) <> "" Then
                    x = x + 1
                    arr(x, 1) = .Cells(2, i)
                End If
            Next
            If x > 0 Then
                Cells(2, 11).Resize(x, 1).Value = arr
            Else
                MsgBox "У данного товара не проставлен вес.", 48, "Ошибка!"
                Exit Sub
            End If
        End With
        With Target.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=MyRange"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
    End If
End Sub
 
Цитата
antal10 написал:
сообщение о том что такого товара нет, тоже ни к чему,
Закомментируйте строку с этим сообщением.
 
Низкий поклон Юрий М, я в жизни бы такого кода не написал. Все вэригуд. Спасибо вам огромное.
 
Пожалуйста! )
Страницы: 1
Наверх