Добрый день. Как сделать чтобы исчезали ненужные строки при выборе определенных условий? Например в приложенном документе мне нужно, чтобы при выборе в ячейке D14 значения "ПВХ", не показывались строки 42 и 43? (строки 42 и 43 применяются для расчетов только в случае заказа алюминиевого профиля) Возможно такое???
Добрый день. Как сделать чтобы исчезали ненужные строки при выборе определенных условий? Например в приложенном документе мне нужно, чтобы при выборе в ячейке D14 значения "ПВХ", не показывались строки 42 и 43? (строки 42 и 43 применяются для расчетов только в случае заказа алюминиевого профиля) Возможно такое???Rusel
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$D$14" Then If Target.Value = "ПВХ" Then Range("42:43").EntireRow.Hidden = True Else Range("42:43").EntireRow.Hidden = False End If End If End Sub
[/vba]
Возможно только макросом!
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$D$14" Then If Target.Value = "ПВХ" Then Range("42:43").EntireRow.Hidden = True Else Range("42:43").EntireRow.Hidden = False End If End If End Sub
Jhonson, К сожалению, я не знаю как пользоваться макросами, и "с чем их едят вообще". И во вложенном файле я не вижу того, что мне нужно. А нужно, чтобы строчек 42 и 43 не было вообще, и значения в них не влияли на общий результат стоимости заказа. Да, и еще я заменил файл в моем первом сообщении, первоначальный был не тот...ссори...
Jhonson, К сожалению, я не знаю как пользоваться макросами, и "с чем их едят вообще". И во вложенном файле я не вижу того, что мне нужно. А нужно, чтобы строчек 42 и 43 не было вообще, и значения в них не влияли на общий результат стоимости заказа. Да, и еще я заменил файл в моем первом сообщении, первоначальный был не тот...ссори...Rusel
Сообщение отредактировал Rusel - Среда, 08.02.2012, 10:01
Для того чтобы ячейки не влияли на результат используйте
Code
=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(109;F40:F44)
Для того чтобы макросы работали выберите: сервис - параметры - безопасность - безопасность макросов и установите безопасность "средняя" или "низкая" Другого способа, думаю не существует.
Для того чтобы ячейки не влияли на результат используйте
Code
=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(109;F40:F44)
Для того чтобы макросы работали выберите: сервис - параметры - безопасность - безопасность макросов и установите безопасность "средняя" или "низкая" Другого способа, думаю не существует.Jhonson
"Ничто не приносит людям столько неприятностей, как разум."
Jhonson, Не могли бы вы подробнее рассказать как вставить указанный вами макрос в рабочий файл, т.к. во вложении лишь пример. И что означает цифра 109 в формуле "промежуточные.итоги"? Как работает эта формула? Как я понимаю она считает только то, что не скрыто? Т.е. без макроса она не работает?
Jhonson, Не могли бы вы подробнее рассказать как вставить указанный вами макрос в рабочий файл, т.к. во вложении лишь пример. И что означает цифра 109 в формуле "промежуточные.итоги"? Как работает эта формула? Как я понимаю она считает только то, что не скрыто? Т.е. без макроса она не работает?Rusel
Jhonson, Я отрыл что-то нажав F11, вставил в поле то, что скопировал из вашего сообщения №2 (принтскрин во вложении), и все заработало. Теперь я отправил этот файл своему коллеге, но у него не работает. Видимо этот макрос работает только на моем компе. Как привязать его к файлу, чтобы отправлять другим?
Jhonson, Я отрыл что-то нажав F11, вставил в поле то, что скопировал из вашего сообщения №2 (принтскрин во вложении), и все заработало. Теперь я отправил этот файл своему коллеге, но у него не работает. Видимо этот макрос работает только на моем компе. Как привязать его к файлу, чтобы отправлять другим?
Jhonson, Я сделал это на другом компе (у нас Excel 2007), в параметрах макросов выбрано: включить все макросы. Но на другом компе не работает. Что еще может быть?
Jhonson, Я сделал это на другом компе (у нас Excel 2007), в параметрах макросов выбрано: включить все макросы. Но на другом компе не работает. Что еще может быть?Rusel
Хоть я и припоздал, но не зря же делал... 1. Тоже, конечно, макрос для скрытия строк, но чуть покороче 2. Подправил форматы ячеек 3. Сделал автонумерацию пунктов 4. Сделал автовыбор цен и МДФ, и профиля 5. Сделал динамический именованный диапазон МДФ - теперь можно добавлять другие записи или удалять устаревшие. Список проверки данных не сломается.
Хоть я и припоздал, но не зря же делал... 1. Тоже, конечно, макрос для скрытия строк, но чуть покороче 2. Подправил форматы ячеек 3. Сделал автонумерацию пунктов 4. Сделал автовыбор цен и МДФ, и профиля 5. Сделал динамический именованный диапазон МДФ - теперь можно добавлять другие записи или удалять устаревшие. Список проверки данных не сломается.Alex_ST
Здесь я понял, что при удалении ненужных позиций, номера тоже не будут показываться. А как на счет добавления строк? если строки добавить, то макрос уже не будет правильно работать?
Quote (Alex_ST)
динамическим именованным диапазоном
можно поподробней: что это такое?
Quote (Alex_ST)
стартер с автонумерацией пунктов
Здесь я понял, что при удалении ненужных позиций, номера тоже не будут показываться. А как на счет добавления строк? если строки добавить, то макрос уже не будет правильно работать?Rusel
Это именованые диапазоны, которые изменяют свой размер, в зависимости от кол-ва записей в них. Определяются формулой. В примере от Alex ST это диапазон МДФ
Quote (Rusel)
если строки добавить, то макрос уже не будет правильно работать?
А если попробовать?
Quote (Rusel)
что это такое?
Это именованые диапазоны, которые изменяют свой размер, в зависимости от кол-ва записей в них. Определяются формулой. В примере от Alex ST это диапазон МДФ
Quote (Rusel)
если строки добавить, то макрос уже не будет правильно работать?
Диапазон МДФ определён не "жёстко" , как было изначально сделано у вас: МДФ='Цена МДФ кв.м.'!$A$6:$A$31 а динамически, т.е. его размер зависит от количества значений ниже ячейки А6: МДФ=СМЕЩ('Цена МДФ кв.м.'!$A$6;0;0;СЧЁТЗ('Цена МДФ кв.м.'!$A$6:$A$105);1) Поэтому вы можете свободно удалять/добавлять разные типы МДФ из списка - размер именованного диапазона будет автоматически изменяться вместе с ним. И цены в таблицу для подсчёта Итого берутся не из фиксированного диапазона Е40=ВПР(D13;'Цена МДФ кв.м.'!A6:B31;2;0) , а из диапазона, связанного с динамическим диапазоном МДФ: Е40=ВПР(D13;СМЕЩ(МДФ;0;0;;2);2;0) Ну, уж за одно и цена профиля там считается (цену я, конечно, взял с потолка просто для примера)
Скрытие/показ строк именно 42:43 прописано в макросе "жёстко", как вы и просили. Но можно, конечно, как-то их "обозвать" (присвоить имена) и тогда в макросе прописать, что нужно скрывать/показывать не конкретные строки, а именованные диапазоны. Тогда вы сможете изменять число строк таблицы комплектующих, не изменяя макроса. Да и ячейку, в которую выбирается из списка тип обработки торцов, лучше бы сделать именованной. Назовите, например, ячейку D14="Обработка", а строки 42:43="Прятать". Тогда макрос можно будет переписать так: [vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, [Обработка]) Is Nothing Then [Прятать].EntireRow.Hidden = Target.Value = "ПВХ" End If End Sub
[/vba] Вот, я сделал в примере. Там для наглядности список именованных диапазонов выведен красным шрифтом на втором листе.
Диапазон МДФ определён не "жёстко" , как было изначально сделано у вас: МДФ='Цена МДФ кв.м.'!$A$6:$A$31 а динамически, т.е. его размер зависит от количества значений ниже ячейки А6: МДФ=СМЕЩ('Цена МДФ кв.м.'!$A$6;0;0;СЧЁТЗ('Цена МДФ кв.м.'!$A$6:$A$105);1) Поэтому вы можете свободно удалять/добавлять разные типы МДФ из списка - размер именованного диапазона будет автоматически изменяться вместе с ним. И цены в таблицу для подсчёта Итого берутся не из фиксированного диапазона Е40=ВПР(D13;'Цена МДФ кв.м.'!A6:B31;2;0) , а из диапазона, связанного с динамическим диапазоном МДФ: Е40=ВПР(D13;СМЕЩ(МДФ;0;0;;2);2;0) Ну, уж за одно и цена профиля там считается (цену я, конечно, взял с потолка просто для примера)
Скрытие/показ строк именно 42:43 прописано в макросе "жёстко", как вы и просили. Но можно, конечно, как-то их "обозвать" (присвоить имена) и тогда в макросе прописать, что нужно скрывать/показывать не конкретные строки, а именованные диапазоны. Тогда вы сможете изменять число строк таблицы комплектующих, не изменяя макроса. Да и ячейку, в которую выбирается из списка тип обработки торцов, лучше бы сделать именованной. Назовите, например, ячейку D14="Обработка", а строки 42:43="Прятать". Тогда макрос можно будет переписать так: [vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, [Обработка]) Is Nothing Then [Прятать].EntireRow.Hidden = Target.Value = "ПВХ" End If End Sub
[/vba] Вот, я сделал в примере. Там для наглядности список именованных диапазонов выведен красным шрифтом на втором листе.Alex_ST
Alex_ST, Совсем здорово получилось, мои коллеги обалдеют от таких наворотов.... Спасибо за уделенное внимание и время... А можно ли сделать так, чтобы в основной таблице (где перечисляются фасады, их цвета и размеры) после того как ввели последнюю позицию (№17) при нажатии ЕНТЕР добавлялась новая строка. Это понадобится если позиций будет больше, чем 17. Или я уже совсем обнаглел???
Alex_ST, Совсем здорово получилось, мои коллеги обалдеют от таких наворотов.... Спасибо за уделенное внимание и время... А можно ли сделать так, чтобы в основной таблице (где перечисляются фасады, их цвета и размеры) после того как ввели последнюю позицию (№17) при нажатии ЕНТЕР добавлялась новая строка. Это понадобится если позиций будет больше, чем 17. Или я уже совсем обнаглел??? Rusel
Rusel, в вашей таблице, похоже придётся поглубже покопаться чтобы реализовать вашу абсолютно логичную "хотелку". Там вообще нужно будет сделать немного по другому: сделать список выбора материалов и работ, а около него не выводимую на печать кнопочку, которая будет добавлять в список новые строки с выбранными работами. И скорее всего, список с кнопочкой лучше будет делать на Юзер-Форме … А меня сейчас подгрузили на работе. Поэтому заняться СЕЙЧАС (сегодня - наверняка) не смогу. Может быть, завтра будет время поковыряться.
К стати! Надеюсь, форма бланка заказа у вас приказом по организации не закреплена как неизменная? Если НЕТ, то почему бы сразу в строках с материалами не считать их стоимость и стоимость работ? А в строке Итого сразу не подбивать сумму? Тогда не нужна будет вторая (нижняя) табличка, что облегчит жизнь.
Rusel, в вашей таблице, похоже придётся поглубже покопаться чтобы реализовать вашу абсолютно логичную "хотелку". Там вообще нужно будет сделать немного по другому: сделать список выбора материалов и работ, а около него не выводимую на печать кнопочку, которая будет добавлять в список новые строки с выбранными работами. И скорее всего, список с кнопочкой лучше будет делать на Юзер-Форме … А меня сейчас подгрузили на работе. Поэтому заняться СЕЙЧАС (сегодня - наверняка) не смогу. Может быть, завтра будет время поковыряться.
К стати! Надеюсь, форма бланка заказа у вас приказом по организации не закреплена как неизменная? Если НЕТ, то почему бы сразу в строках с материалами не считать их стоимость и стоимость работ? А в строке Итого сразу не подбивать сумму? Тогда не нужна будет вторая (нижняя) табличка, что облегчит жизнь.Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Четверг, 09.02.2012, 09:33
Alex_ST, Форма не закреплена, работаю с той, которая была до меня. Если все данные будут в одной таблице - это хорошо. Но, как вы наверное уже поняли, в случае обработки торцов фасадов в алюминиевый профиль, добавляются стоимости уголков и сама работа по сборке в алюминиевый профиль, а в случае закатки в ПВХ - стоимость ПВХ включает в себя и работу по закатке. Но если даже останется все как есть, ничего страшного, то что уже есть - это тоже супер!!!
Alex_ST, Форма не закреплена, работаю с той, которая была до меня. Если все данные будут в одной таблице - это хорошо. Но, как вы наверное уже поняли, в случае обработки торцов фасадов в алюминиевый профиль, добавляются стоимости уголков и сама работа по сборке в алюминиевый профиль, а в случае закатки в ПВХ - стоимость ПВХ включает в себя и работу по закатке. Но если даже останется все как есть, ничего страшного, то что уже есть - это тоже супер!!!Rusel