Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2011, 13:23   #11
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Не хотелось лишний раз с работы файлы рассылать... Но раз просите, вот.
Вложения
Тип файла: zip Копия состояние автопарка.zip (9.5 Кб, 23 просмотров)
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 27.06.2011, 13:26   #12
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Забыл мелочь - отключить обновление экрана.
Так будет быстрее, замените код на этот (или добавьте две строки):
Код:
Option Explicit

Sub tt()
Dim sh As Worksheet
Dim cc As Range
Dim i&

Application.ScreenUpdating = False

For Each sh In Worksheets
If sh.CodeName <> "Sheet5" Then
For Each cc In sh.UsedRange.Columns(5).Cells
If cc.Value Like "надо*" Then
i = i + 1
cc.EntireRow.Copy Sheet5.Cells(i, 1)
End If
Next
End If
Next

Application.ScreenUpdating = True

End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 27.06.2011, 14:11   #13
And59
 
Регистрация: 27.06.2011
Сообщений: 9
По умолчанию

Hugo121 Спасибо что уделяешь мне свое время!
Попробовал поиграться с примером и обнаружил что после редактирования любого листа (в основном удаления слова 'надо' в ячейке Е) и запуска макроса, из результата поиска строка удаляется но на её месте пояляется последняя найденная, получаются повторения одной и той же строки...
Это как то можно исправить?

И еще забыл сразу спросить, в результатох поиска можно как то разделить строчки названием листа на котором нашлось слово?

Последний раз редактировалось And59; 27.06.2011 в 14:16. Причина: прим.
And59 вне форума Ответить с цитированием
Старый 27.06.2011, 14:13   #14
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

В этом коде не предусмотрена очистка передыдущих значений.
Об этом не было ни слова
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 27.06.2011, 14:17   #15
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Добавьте первой строкой кода (после объявления переменных и отключения обновления экрана)
Код:
Sheet5.Cells.Clear
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 27.06.2011, 14:24   #16
And59
 
Регистрация: 27.06.2011
Сообщений: 9
По умолчанию

Ну ты красавчег =) как орех этот visual basic колешь!!!

И еще забыл сразу спросить, в результатах поиска можно как то разделить строчки названием листа на котором нашлось слово?
And59 вне форума Ответить с цитированием
Старый 27.06.2011, 15:12   #17
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Можно не сильно утруждаясь так, но будут записаны названия всех листов, даже если там ничего не найдено:

Код:
Option Explicit

Sub tt()
Dim sh As Worksheet
Dim cc As Range
Dim i&

Application.ScreenUpdating = False
Sheet5.Cells.Clear

For Each sh In Worksheets
If sh.CodeName <> "Sheet5" Then
i = i + 1
Sheet5.Cells(i, 1).Value = sh.Name
For Each cc In sh.UsedRange.Columns(5).Cells
If cc.Value Like "надо*" Then
i = i + 1
cc.EntireRow.Copy Sheet5.Cells(i, 1)
End If
Next
End If
Next

Application.ScreenUpdating = True

End Sub
Если названия таких листов писать не нужно, то нужно или переделывать весь код, или потом проходить циклом по этому сводному листу и лишние строки удалять.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 27.06.2011, 15:18   #18
And59
 
Регистрация: 27.06.2011
Сообщений: 9
По умолчанию

Hugo121 Огромное Вам Спасибо!
Выручили, даже непредставляете как =)

Адаптировал все к своему полному документу, и кнопочку так же прикрутил =) радости нет предела!!!

Последний раз редактировалось And59; 27.06.2011 в 15:42.
And59 вне форума Ответить с цитированием
Старый 27.06.2011, 16:14   #19
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Если кнопка мешает, то можно обойтись без неё - запускать код по Alt+F8, или задать горячие клавиши.
Можно на лист сперва кодом вывести шапку - или прямо в коде всё прописать, или скопировать диапазон с другого любого листа, или уже предварительно сделать нужную шапку, но тогда очистку нужно делать иначе, не затирая шапку.
Ещё вариант - данные выводить на новый свежесозданный лист или даже в новую книгу. В таком варианте вообще могут участвовать три книги - в одной код, в другой анализируемые данные, в третью новосозданную выводится результат. Эту книгу можно просмотреть, скопипастить куда нужно выбранную информацию и закрыть без сохранения, или сохранить под удобным именем.
В общем, есть различные пути, как облегчить себе работу.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сводная таблица на отдельном листе getikalex Microsoft Office Excel 12 15.09.2010 03:17
Можно ли открыть сводную таблицу в отдельном книге ( не в отдельном листе)? Aqil_f Microsoft Office Excel 1 13.09.2010 10:44
Макрос для формирования таблицы на отдельном листе по номеру ID eclat Microsoft Office Excel 30 07.08.2010 11:36
Выборка сумм по месяцу на отдельном листе (Excel 2003) Svetlana_zel Microsoft Office Excel 3 27.05.2010 17:26
поиск по фамилиям и вывод результатов в DBGrid Explosion БД в Delphi 14 23.04.2010 20:47