Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / удаление листов в екселе по условию / 25 сообщений из 30, страница 1 из 2
22.04.2014, 23:21
    #38622291
natasha_tr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
Всем добрый день!
Помогите, пожалуйста.
Есть книга, в которой более 200 листов.
Лист с 7 по предпоследний называются ОЛ1, ОЛ2 ....и т.д. Каждый лист ОЛ... содержит данные из листа 6 - Перечень: ОЛ1 - строка 1 листа "перечень", ОЛ2 - строка 2 листа "перечень". Периодически строки удаляются или добавляются. После этого приходится вручную удалять соответствующий лист ОЛ (после удаления, прибавления листы заново переименовываются). Хотелось бы, чтобы после удаления или прибавления очередной строчки соответствующий лист тоже удалялся или прибавлялся в нужном месте. Возможно это?
Спасибо всем!
Наташа
...
Рейтинг: 0 / 0
23.04.2014, 09:16
    #38622475
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
возможно.
пример файла, пожалуйста.
...
Рейтинг: 0 / 0
23.04.2014, 12:08
    #38622768
natasha_tr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
Файл приложила, оставила 10 листов для простоты.
Заранее спасибо за помощь!
...
Рейтинг: 0 / 0
23.04.2014, 12:20
    #38622794
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
Что подразумевается под прибавлением строчки, удалением?
Если я сотру содержимое строки, это не считается удалением?
Если я заменю содержимое строки, это не считается вставкой?
Если я поменяю номер пункта в первом столбце, должны ли листы как-то реагировать или привязка исключительно к номеру строки?
Почему нельзя в перечне хранить имя листа? (это было бы проще и нагляднее)
...
Рейтинг: 0 / 0
23.04.2014, 12:22
    #38622797
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
И вообще, нафига нужна куча листов "ОЛ" - они же все одинаковые?????
Ограничьтесь одним листом.
...
Рейтинг: 0 / 0
23.04.2014, 12:26
    #38622812
natasha_tr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
Shocker.Pro, я чуть позже отвечу на все ваши вопросы.
Скажите, а как к вам можно обращаться?

Наташа
...
Рейтинг: 0 / 0
23.04.2014, 12:29
    #38622819
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
natasha_trСкажите, а как к вам можно обращаться?
Товарищ эксперт,
Эй,ты,
Молодой человек с бородой,
Техдиректор,
....
как нравится, короче
...
Рейтинг: 0 / 0
23.04.2014, 13:36
    #38622971
natasha_tr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
Отвечаю на вопросы:
1. такое количество листов необходима потому, что каждый лист содержит информацию из соответствующей строчки в листе "Перечень", просто сейчас перечень не заполнен, но разные строчки в перечне будут содержать разные данные; помимо данных из перечня в листах ОЛ буду дополнительные сведения, которые заполняются руками. Количество листов равняется количеству строк в перечне за исключением шапки
2. перечень периодически проверяется и оказывается, что некоторые позиции уже не нужны, тогда эти строчки надо просто удалить и, соответственно, удалить такой же лист.
3. если вы сотрете содержимое строки, тогда останется лист ОЛ, в котором все значения обнулятся (как сейчас), кроме написанных вручную, без формул
4. если вы замените содержимое строки, то изменятся данные в соответствующем листе, это возможно.
5. номер пункта у меня привязан к номеру строки и меняется автоматически при удалении строк, листы не реагируют на изменение номера пункта в 1 столбце
6. в перечне можно без проблем хранить имя листа, но оно по большому счету дублирует номер пункта в первом столбце + буквы ОЛ

Надеюсь, что нормально объяснила. Если что-то непонятно - еще раз объясню.
Спасибо за помощь!
...
Рейтинг: 0 / 0
23.04.2014, 14:28
    #38623076
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
Тут, собственно, принципиальный вопрос - чему соответствует все-таки имя листа - номеру строки или номеру пункта. Потому что от этого зависит, что происходит при удалении строки, ведь в этот момент номера пунктов и номера строк не совпадают
...
Рейтинг: 0 / 0
23.04.2014, 14:47
    #38623125
natasha_tr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
Shocker.Pro,
имя листа соответствует номеру строки и своему номеру по порядку (индексу листа).
То, что будет указано в 1 столбце перечня - не имеет значения.
У меня была мысль, указывать в 1 столбце слово "удалять" для тех строк, которые уже не нужны.
...
Рейтинг: 0 / 0
23.04.2014, 14:55
    #38623142
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
natasha_trТо, что будет указано в 1 столбце перечня - не имеет значения.хорошо, тогда почему у вас нет листов ОЛ13, ОЛ14 и т.п.? Как вы определяете, для каких листов надо создавать лист, а для каких - нет?
...
Рейтинг: 0 / 0
23.04.2014, 15:04
    #38623164
natasha_tr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
Этот процесс у меня не автоматизирован, я просто создавала вручную листы.
Я не программист, но очень хочется по максимуму оптимизировать большой документ )
...
Рейтинг: 0 / 0
23.04.2014, 15:19
    #38623200
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
Ну вот я и задаю вопрос, а как должна поступать программа. На чем она должна основываться - создавать ей лист для конкретной строки или не создавать?
...
Рейтинг: 0 / 0
23.04.2014, 15:24
    #38623216
natasha_tr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
Shocker.Pro,
1 вариант (простой): я сама вручную создаю много листов, а вот программа удаляет указанные строчки и соответствующие листы при необходимости (ничего не добавляет)

2 вариант (даже мечтать о таком не смею): есть перечень и типовой лист с типовыми ссылками на перечень; программа при добавлении строчки в перечне создает копию типового листа со всеми привязками к соответствующей строчке; при удалении строчки - удаляет соответствующий лист

P.S.:когда я затевала эту работу, то даже и не думала про автоматическое переименование, были просто ссылки в листах ОЛ на перечень )
...
Рейтинг: 0 / 0
23.04.2014, 15:36
    #38623248
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
Проблема в том, что технически эксель не позволяет отследить именно удаление строк. То есть это можно сделать только косвенно.
тут я могу все-таки предложить хранить имя листа в каком-то столбце. При изменениях в этом столбце просматриваются имена листов и если имени какого-то листа нет в соответствующем столбце - лист удаляется. Соответственно, если появилось имя, под которое нет листа, создается новый лист. При этом листы могут иметь произвольное именование.

тут, правда, есть нюанс. если поменять имя листа в столбце, то сам лист не переименуется. Старый будет удален и создан новый.
...
Рейтинг: 0 / 0
23.04.2014, 15:45
    #38623271
natasha_tr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
я подумаю и напишу
...
Рейтинг: 0 / 0
23.04.2014, 15:57
    #38623305
natasha_tr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
а можно так (ниже алгоритм) (пока только про удаление строк и листов, про добавление подумаю позже):
1. я вручную помечаю те строки в перечне, которые надо удалять (в первом столбце пишу слово "удалить")
2. ексель находит первую строчку в перечне, в которой есть слово "удалить"
3. ексель удаляет лист с индексом (номером по порядку слева направо) = номер строки в перечне минус 1
4. потом ексель удаляет строку со словом "удалить"
5. далее ексель находит следующую в перечне строку со словом "удалить" и т.п.
...
Рейтинг: 0 / 0
23.04.2014, 16:12
    #38623332
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
можно
...
Рейтинг: 0 / 0
23.04.2014, 16:17
    #38623344
natasha_tr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
а как? ))) я подозреваю, что смогу сделать сама, но если набросаете программку, буду очень благодарна!
...
Рейтинг: 0 / 0
23.04.2014, 16:28
    #38623365
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
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)).Delete
  q.EntireRow.Delete
Loop
Application.DisplayAlerts = True
...
Рейтинг: 0 / 0
23.04.2014, 16:35
    #38623380
natasha_tr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
спасибо! попробую
...
Рейтинг: 0 / 0
23.04.2014, 22:04
    #38623808
natasha_tr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
Все прекрасно работает, немножко изменила:
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
...
Рейтинг: 0 / 0
23.04.2014, 22:52
    #38623829
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
natasha_trВсе прекрасно работаетиногда в проекте самое сложное не код, а реверс-инжиниринг мозговой деятельности заказчика
...
Рейтинг: 0 / 0
24.04.2014, 14:06
    #38624594
natasha_tr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
Есть вопрос в продолжение темы удаления листов.
Пример во вложении.
Разница в том, что добавила 1 лист "Перечень ОЛ", часть его данных берется из листа "Перечень" + другая информация.
Необходимо, чтобы в этом перечне ОЛ строк, в которых есть слово "удалить" также удалялись как в листе "Перечень".
Как доработать макрос Delete?
Заранее спасибо!
...
Рейтинг: 0 / 0
24.04.2014, 14:08
    #38624601
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удаление листов в екселе по условию
а в чем проблема использовать этот же макрос для другого листа?
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / удаление листов в екселе по условию / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]