Наверняка, вы сталкивались с ситуацией, когда необходимо производить поиск некоторого значения по всей книге Excel (искать частичное совпадение на всех листах активной книги)
Штатными средствами Excel вывести поле для поиска на панель инструментов не удаётся, а вызывать каждый раз диалоговое окно нажатием комбинации клавиш Ctrl + F не всегда удобно. На помощь придёт эта надстройка - она формирует в строке меню Excel 2003 поле для поиска по всем листам:
Достаточно ввести искомый текст, и нажать клавишу Enter, - и перед вами полный список всех подходящих ячеек со всех листов книги. Для перехода к найденной ячейке достаточно щелкнуть мышью на нужном результате - автоматически будет активирован нужный лист, и выделена искомая ячейка.
Поместите эту надстройку в папку автозагрузки Excel - и это поле будет появляться при каждом запуске программы. Смотрите также надстройку для поиска текста на текущем листе Excel,
Конечно, функциональность этой надстройки присутствует и в Excel, - если в настройках поиска выбрать опцию «Искать в книге»:
Моя же надстройка чуть упрощает работу - не надо нажимать лишние кнопки для типа Ctrl + F, и не надо выбирать область поиска. К тому же, при использовании надстройки, вы можете провести мышом (при нажатой левой кнопке) по результатам поиска, - и Excel пролистает (выделит) все найденные ячейки по очереди (во встроенном поиске Excel надо щелкать на каждом результате отдельно)
(добавлено 29.07.2011) Немного подправил код надстройки:
|
|||||||


Комментарии
Спасибо за надстройку. Если текст находится в объединенной ячейке и только в одном экземпляре, то выскакивет пустое окно "Результат поиска текста".
Спасибо! Супер! Работает на ура, остается только немного подкорректировать,чтоб не двигать окно с результатами поиска,чтобы видеть выбранную ячейку
За «пожалуйста» не переделываю )
Если заплатите - запросто переделаю под ваши нужды.
Либо сами переделывайте - вам же надо, да и код не закрыт паролем...
(там переделывать придётся около 90% кода - практически делать всё "с нуля")
Переделайте, пожалуйста, так:
выделяется ячейка или массив, а поик производится по нажатию одной кнопки с клавиатуры, при этом в результатах подсвечивается искомое и близжайшее значение, если поиск производился из ячейки либо весь искомый диапазон разными цветами и близжайшие результаты, если из диапазона.
Это я уже заметил, Дима. Спасибо.
Для надёжности оставил и удаление по тегу - теперь точно переизбытка полей быть не должно )
Прикрепил к статье исправленный файл.
Забыл в коде при закрытии поменять:
Application.CommandBars(1).Controls(Caption$).Delete
такой код должен работать(удалять старое поле перед закрытием) во всех версиях:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Caption$ = "Поиск значения во всех листах книги" & vbLf & " " & vbLf & _
"Введите текст для поиска, и нажмите «Enter»"
' удаляем поле, если оно уже присутствует на панели
Application.CommandBars(1).Controls("SearchCellAddin").Delete
End Sub
Private Sub Workbook_Open() ' при открытии книги
On Error Resume Next
Caption$ = "Поиск значения во всех листах книги" & vbLf & " " & vbLf & _
"Введите текст для поиска, и нажмите «Enter»"
' удаляем поле, если оно уже присутствует на панели
Application.CommandBars(1).Controls(Caption$).Delete
' создаём поле заново
Add_Control(Application.CommandBars(1), 2, -1, "SearchCell", _
Caption$, , "SearchCellAddin").Width = 150
End Sub
Да щас работает при закрытие excel окно уходит, но до этого я по другому решил проблему зашел в настройки панели инструментов и где стока меню листа нажал сброс все окна исчезли. Эт 2003
Прикрепил исправленную версию надстройки - которая при закрытии Excel удаляет созданное поле.
Скачайте новую версию, откройте её, и закройте.
Если поможет, но частично (уберёт только одно поле) - повторите процедуру несколько раз.
PS: Странно, надстройка должна формировать только одно поле.
Что за версия Excel у вас установлена?
PS: Если не поможет - запустите Excel (откроется пустая книга), откройте редактор VBA нажатием Alt + F11, потом нажмите Ctrl + G для отображения окна Immediate.
В этом окне введите текст CommandBars(1).Reset и нажмите Enter:
После этих действий гланая панель инструментов примет первоначальный вид:
Окошко куда вводиться слово для поиска появилось несколько раз и остались, как их все убрать??
Артемий, попробуйте обновить эту страницу (нажав Ctrl + R), или же открыть её в другом браузере.
Дело в том, что последние 2 дня сайт временами работает нестабильно (кто-то нашел в нем уязвимость, и эксплуатирует её, нарушая работу сайта),
а вы, видимо, пытались скачать этот файл как раз в тот момент, когда работал вредоносный скрипт.
Перезагрузка страницы (сброс кэша браузера) должна помочь.
На всякий случай выслал копию прикреплённого файла вам на почту.
Добрый день! Не получается скачать Ваш файл - ошибка.
Хотел скачать с Вашего сайта файл "SearchWorkbook.xla" (на стр. http://excelvba.ru/code/SearchCells), но по ссылки открывает HTML с кодом.
Скачиваю как объект - опять же скачивает страничку.
Меня очень заинтересовала эта статья.
Ищу варианты online поиска по тексту.
Пример - набираю текст в ячейке, а рядом по ней фильтруется похожие варианты из книги, которые можно выбрать щелчком мыши. - Это идеальный вариант, который еще не нашел.
Заранее благодарю!
А
Конечно, функциональность этой надстройки присутствует и в Excel, - если в настройках поиска выбрать опцию "Искать в книге":
Моя же надстройка чуть упрощает работу - не надо нажимать лишние кнопки для типа Ctrl + F, и не надо выбирать область поиска.
К тому же, при использовании надстройки, вы можете провести мышом (при нажатой левой кнопке) по результатам поиска, - и Excel пролистает (выделит) все найденные ячейки по очереди (во встроенном поиске Excel надо щелкать на каждом результате отдельно)
> Можно выделить одновременно все листы в книге и воспользоваться обычным поиском в Excel
у меня в Excel 2003 такая фишка не прошла, ищет только на последнем и 1ом листах
to EducatedFool
функция там просто блеск, спасибо большое за код)))
Давно и с удовольствием пользуюсь этой надстройкой. Сильная вещь!!!
Спасибо!
Ввиду ее огромной пользы, я бы переместил ее в раздел "Инструментарий разработчика".
можно ли как-нибудь изменить данный макрос поиска так чтобы при найденном результате не выводилась таблица результата поиска, а просто переходила на найденную ячейку.
Здравствуйте, существует очень простая альтернатива данной надстройке. Можно выделить одновременно все листы в книге и воспользоваться обычным поиском в Excel, ввести искомое выражение в строку поиска и нажать кнопку "найти все". В итоге получим тот же самый результат, что и при использовании надстройки. Но все, что делается никогда не бывает напрасным. Из кода данной надстройки можно почерпнуть много полезного. ОГРОМНАЯ ВАМ ЗА ЭТО БЛАГОДАРНОСТЬ!!!
В Excel 2007 поле поиска отображается на ленте на вкладке «Надстройки»
На нашем Excel2007 надстройка не запускается. Может быть что-то есть для Excel2007?
Отправить комментарий