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

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

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

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

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

тут, правда, есть нюанс. если поменять имя листа в столбце, то сам лист не переименуется. Старый будет удален и создан новый.
...
Рейтинг: 0 / 0
удаление листов в екселе по условию
    #38623271
natasha_tr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я подумаю и напишу
...
Рейтинг: 0 / 0
удаление листов в екселе по условию
    #38623305
natasha_tr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а можно так (ниже алгоритм) (пока только про удаление строк и листов, про добавление подумаю позже):
1. я вручную помечаю те строки в перечне, которые надо удалять (в первом столбце пишу слово "удалить")
2. ексель находит первую строчку в перечне, в которой есть слово "удалить"
3. ексель удаляет лист с индексом (номером по порядку слева направо) = номер строки в перечне минус 1
4. потом ексель удаляет строку со словом "удалить"
5. далее ексель находит следующую в перечне строку со словом "удалить" и т.п.
...
Рейтинг: 0 / 0
удаление листов в екселе по условию
    #38623332
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно
...
Рейтинг: 0 / 0
удаление листов в екселе по условию
    #38623344
natasha_tr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как? ))) я подозреваю, что смогу сделать сама, но если набросаете программку, буду очень благодарна!
...
Рейтинг: 0 / 0
удаление листов в екселе по условию
    #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
удаление листов в екселе по условию
    #38623380
natasha_tr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо! попробую
...
Рейтинг: 0 / 0
удаление листов в екселе по условию
    #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
удаление листов в екселе по условию
    #38623829
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natasha_trВсе прекрасно работаетиногда в проекте самое сложное не код, а реверс-инжиниринг мозговой деятельности заказчика
...
Рейтинг: 0 / 0
удаление листов в екселе по условию
    #38624594
natasha_tr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть вопрос в продолжение темы удаления листов.
Пример во вложении.
Разница в том, что добавила 1 лист "Перечень ОЛ", часть его данных берется из листа "Перечень" + другая информация.
Необходимо, чтобы в этом перечне ОЛ строк, в которых есть слово "удалить" также удалялись как в листе "Перечень".
Как доработать макрос Delete?
Заранее спасибо!
...
Рейтинг: 0 / 0
удаление листов в екселе по условию
    #38624601
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а в чем проблема использовать этот же макрос для другого листа?
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / удаление листов в екселе по условию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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