В листе хронометражная карта выделен зеленным цветом есть ниспадающий список при выборе значения (2 столбец листа Прейскурант) вставляется данные в зеленные ячейки и идет пересчет но есть проблема, если значение в списке одинаковое то выбирается только первое верхнее т.е. если выбрать 280262201 их там два, выбрать второе там где Сидоров, высвечивается Петров ну и в ост. желтых ячейках по аналогии
и еще есть ли пример кода для следующей задачи если двойным кликом по ячейки 2 столбца листа Прейскуранта щелкнуть то как реализовать попадание этого значение в ячейку второго листа в позицию С8, с отображением уже пересчитанной Хронометражной карты, в дальнейшем первые 6 столбцов будут закрыты от изменений код собирал по кускам с разных мест, здесь уже помогли, но дальше еще нужна помощь Cells(9, 3) = WorksheetFunction.VLookup(Target, [КодСИ].Resize(, 7), 6, 0) подскажите предназначение 7 в данном коде, его как раз мне и скинули
В листе хронометражная карта выделен зеленным цветом есть ниспадающий список при выборе значения (2 столбец листа Прейскурант) вставляется данные в зеленные ячейки и идет пересчет но есть проблема, если значение в списке одинаковое то выбирается только первое верхнее т.е. если выбрать 280262201 их там два, выбрать второе там где Сидоров, высвечивается Петров ну и в ост. желтых ячейках по аналогии
и еще есть ли пример кода для следующей задачи если двойным кликом по ячейки 2 столбца листа Прейскуранта щелкнуть то как реализовать попадание этого значение в ячейку второго листа в позицию С8, с отображением уже пересчитанной Хронометражной карты, в дальнейшем первые 6 столбцов будут закрыты от изменений код собирал по кускам с разных мест, здесь уже помогли, но дальше еще нужна помощь Cells(9, 3) = WorksheetFunction.VLookup(Target, [КодСИ].Resize(, 7), 6, 0) подскажите предназначение 7 в данном коде, его как раз мне и скинулиCombat1971
7 в этом коде не нужно Но ведь тот код, что я скинул был другой! И там было нужно именно 7. Ну а тут достаточно 6. По VLOOKUP() - она всегда берёт первое совпадение, это не исправить, используйте что-то другое. P.S. Посмотрел код в файле - ну чтоб не путаться можно так и оставить всюду эту 7. А нужна она потому, что для VLOOKUP() нужно давать всю таблицу, а не только первый столбец - вот этим .Resize(, 7) я его и расширил на сколько нужно. Как решить задачу в целом таким подходом - я не знаю. Нужно кардинально что-то менять.
7 в этом коде не нужно Но ведь тот код, что я скинул был другой! И там было нужно именно 7. Ну а тут достаточно 6. По VLOOKUP() - она всегда берёт первое совпадение, это не исправить, используйте что-то другое. P.S. Посмотрел код в файле - ну чтоб не путаться можно так и оставить всюду эту 7. А нужна она потому, что для VLOOKUP() нужно давать всю таблицу, а не только первый столбец - вот этим .Resize(, 7) я его и расширил на сколько нужно. Как решить задачу в целом таким подходом - я не знаю. Нужно кардинально что-то менять.Hugo
т. е в моём случае заменить функцию ВПР не удастся, кардинально менять у меня знаний не хватает если бы пример похожий может быть и переделал бы... но все равно спасибо за помощь
т. е в моём случае заменить функцию ВПР не удастся, кардинально менять у меня знаний не хватает если бы пример похожий может быть и переделал бы... но все равно спасибо за помощьCombat1971
прейскурант иногда корректируется, могут добавляться или удалятся строки с последующим восстановлением нумерации, это не собьет код?, конечно не желательно бы так
прейскурант иногда корректируется, могут добавляться или удалятся строки с последующим восстановлением нумерации, это не собьет код?, конечно не желательно бы такCombat1971
Ну если следить за корректностью [КодСИ] - то не должен. Правда я затрудняюсь сказать как привязать выпадающий список номеров к диапазону [КодСИ] - тут формулистов нужно спросить... P.S.Сам нашёл:
=СМЕЩ(КодСИ;0;-1)
Ну если следить за корректностью [КодСИ] - то не должен. Правда я затрудняюсь сказать как привязать выпадающий список номеров к диапазону [КодСИ] - тут формулистов нужно спросить... P.S.Сам нашёл:
а вот если без выпадающего списка, просто двойной клик по строке или ячейке в листе прейскурант и значение попадает на лист Хром. карта и там все расчитывется так не проще будет вот нашел такой код.
PrivateSub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel AsBoolean)
MsgBox "Был произведен двойной щелчок по ячейке " & Target.Address
Cancel = True
EndSub
он правда срабатывает на любую ячейку, как закрепить на 2 столбец, дальше буду думать что делать с переменной ячейки
а вот если без выпадающего списка, просто двойной клик по строке или ячейке в листе прейскурант и значение попадает на лист Хром. карта и там все расчитывется так не проще будет вот нашел такой код.
PrivateSub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel AsBoolean)
MsgBox "Был произведен двойной щелчок по ячейке " & Target.Address
Cancel = True
EndSub
он правда срабатывает на любую ячейку, как закрепить на 2 столбец, дальше буду думать что делать с переменной ячейкиCombat1971
Сообщение отредактировал Combat1971 - Пятница, 27.04.2018, 21:07