|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
Всем добрый день! Помогите, пожалуйста. Есть книга, в которой более 200 листов. Лист с 7 по предпоследний называются ОЛ1, ОЛ2 ....и т.д. Каждый лист ОЛ... содержит данные из листа 6 - Перечень: ОЛ1 - строка 1 листа "перечень", ОЛ2 - строка 2 листа "перечень". Периодически строки удаляются или добавляются. После этого приходится вручную удалять соответствующий лист ОЛ (после удаления, прибавления листы заново переименовываются). Хотелось бы, чтобы после удаления или прибавления очередной строчки соответствующий лист тоже удалялся или прибавлялся в нужном месте. Возможно это? Спасибо всем! Наташа ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2014, 23:21 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
возможно. пример файла, пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 09:16 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
Файл приложила, оставила 10 листов для простоты. Заранее спасибо за помощь! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 12:08 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
Что подразумевается под прибавлением строчки, удалением? Если я сотру содержимое строки, это не считается удалением? Если я заменю содержимое строки, это не считается вставкой? Если я поменяю номер пункта в первом столбце, должны ли листы как-то реагировать или привязка исключительно к номеру строки? Почему нельзя в перечне хранить имя листа? (это было бы проще и нагляднее) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 12:20 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
И вообще, нафига нужна куча листов "ОЛ" - они же все одинаковые????? Ограничьтесь одним листом. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 12:22 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
Shocker.Pro, я чуть позже отвечу на все ваши вопросы. Скажите, а как к вам можно обращаться? Наташа ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 12:26 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
natasha_trСкажите, а как к вам можно обращаться? Эй,ты, Молодой человек с бородой, Техдиректор, .... как нравится, короче ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 12:29 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
Отвечаю на вопросы: 1. такое количество листов необходима потому, что каждый лист содержит информацию из соответствующей строчки в листе "Перечень", просто сейчас перечень не заполнен, но разные строчки в перечне будут содержать разные данные; помимо данных из перечня в листах ОЛ буду дополнительные сведения, которые заполняются руками. Количество листов равняется количеству строк в перечне за исключением шапки 2. перечень периодически проверяется и оказывается, что некоторые позиции уже не нужны, тогда эти строчки надо просто удалить и, соответственно, удалить такой же лист. 3. если вы сотрете содержимое строки, тогда останется лист ОЛ, в котором все значения обнулятся (как сейчас), кроме написанных вручную, без формул 4. если вы замените содержимое строки, то изменятся данные в соответствующем листе, это возможно. 5. номер пункта у меня привязан к номеру строки и меняется автоматически при удалении строк, листы не реагируют на изменение номера пункта в 1 столбце 6. в перечне можно без проблем хранить имя листа, но оно по большому счету дублирует номер пункта в первом столбце + буквы ОЛ Надеюсь, что нормально объяснила. Если что-то непонятно - еще раз объясню. Спасибо за помощь! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 13:36 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
Тут, собственно, принципиальный вопрос - чему соответствует все-таки имя листа - номеру строки или номеру пункта. Потому что от этого зависит, что происходит при удалении строки, ведь в этот момент номера пунктов и номера строк не совпадают ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 14:28 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
Shocker.Pro, имя листа соответствует номеру строки и своему номеру по порядку (индексу листа). То, что будет указано в 1 столбце перечня - не имеет значения. У меня была мысль, указывать в 1 столбце слово "удалять" для тех строк, которые уже не нужны. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 14:47 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
natasha_trТо, что будет указано в 1 столбце перечня - не имеет значения.хорошо, тогда почему у вас нет листов ОЛ13, ОЛ14 и т.п.? Как вы определяете, для каких листов надо создавать лист, а для каких - нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 14:55 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
Этот процесс у меня не автоматизирован, я просто создавала вручную листы. Я не программист, но очень хочется по максимуму оптимизировать большой документ ) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 15:04 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
Ну вот я и задаю вопрос, а как должна поступать программа. На чем она должна основываться - создавать ей лист для конкретной строки или не создавать? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 15:19 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
Shocker.Pro, 1 вариант (простой): я сама вручную создаю много листов, а вот программа удаляет указанные строчки и соответствующие листы при необходимости (ничего не добавляет) 2 вариант (даже мечтать о таком не смею): есть перечень и типовой лист с типовыми ссылками на перечень; программа при добавлении строчки в перечне создает копию типового листа со всеми привязками к соответствующей строчке; при удалении строчки - удаляет соответствующий лист P.S.:когда я затевала эту работу, то даже и не думала про автоматическое переименование, были просто ссылки в листах ОЛ на перечень ) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 15:24 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
Проблема в том, что технически эксель не позволяет отследить именно удаление строк. То есть это можно сделать только косвенно. тут я могу все-таки предложить хранить имя листа в каком-то столбце. При изменениях в этом столбце просматриваются имена листов и если имени какого-то листа нет в соответствующем столбце - лист удаляется. Соответственно, если появилось имя, под которое нет листа, создается новый лист. При этом листы могут иметь произвольное именование. тут, правда, есть нюанс. если поменять имя листа в столбце, то сам лист не переименуется. Старый будет удален и создан новый. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 15:36 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
я подумаю и напишу ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 15:45 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
а можно так (ниже алгоритм) (пока только про удаление строк и листов, про добавление подумаю позже): 1. я вручную помечаю те строки в перечне, которые надо удалять (в первом столбце пишу слово "удалить") 2. ексель находит первую строчку в перечне, в которой есть слово "удалить" 3. ексель удаляет лист с индексом (номером по порядку слева направо) = номер строки в перечне минус 1 4. потом ексель удаляет строку со словом "удалить" 5. далее ексель находит следующую в перечне строку со словом "удалить" и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 15:57 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
можно ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 16:12 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
а как? ))) я подозреваю, что смогу сделать сама, но если набросаете программку, буду очень благодарна! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 16:17 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 16:28 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
спасибо! попробую ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 16:35 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
Все прекрасно работает, немножко изменила: Sub Delete() Dim q As Range Application.DisplayAlerts = False Do Set q = Range("A:A").Find("удалить") If q Is Nothing Then Exit Sub Worksheets(CStr(q.Row) - 1).Delete q.EntireRow.Delete Loop Application.DisplayAlerts = True End Sub ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 22:04 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
natasha_trВсе прекрасно работаетиногда в проекте самое сложное не код, а реверс-инжиниринг мозговой деятельности заказчика ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 22:52 |
|
удаление листов в екселе по условию
|
|||
---|---|---|---|
#18+
Есть вопрос в продолжение темы удаления листов. Пример во вложении. Разница в том, что добавила 1 лист "Перечень ОЛ", часть его данных берется из листа "Перечень" + другая информация. Необходимо, чтобы в этом перечне ОЛ строк, в которых есть слово "удалить" также удалялись как в листе "Перечень". Как доработать макрос Delete? Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2014, 14:06 |
|
|
start [/forum/topic.php?fid=61&msg=38623380&tid=2174070]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 165ms |
0 / 0 |