mail mail

Поиск в Excel

Наверняка, вы сталкивались с ситуацией, когда необходимо производить поиск некоторого значения по всей книге Excel (искать частичное совпадение на всех листах активной книги)

 

Штатными средствами Excel вывести поле для поиска на панель инструментов не удаётся, а вызывать каждый раз диалоговое окно нажатием комбинации клавиш Ctrl + F не всегда удобно.

На помощь придёт эта надстройка - она формирует в строке меню Excel 2003 поле для поиска по всем листам:

Достаточно ввести искомый текст, и нажать клавишу Enter, - и перед вами полный список всех подходящих ячеек со всех листов книги.

Для перехода к найденной ячейке достаточно щелкнуть мышью на нужном результате - автоматически будет активирован нужный лист, и выделена искомая ячейка.

 

Поместите эту надстройку в папку автозагрузки Excel - и это поле будет появляться при каждом запуске программы.

 

Конечно, функциональность этой надстройки присутствует и в Excel, - если в настройках поиска выбрать опцию «Искать в книге»:

Поиск по всем листам в Excel

Моя же надстройка чуть упрощает работу - не надо нажимать лишние кнопки для типа Ctrl + F, и не надо выбирать область поиска.

К тому же, при использовании надстройки, вы можете провести мышом (при нажатой левой кнопке) по результатам поиска, - и Excel пролистает (выделит) все найденные ячейки по очереди (во встроенном поиске Excel надо щелкать на каждом результате отдельно)

 

(добавлено 29.07.2011)  Немного подправил код надстройки:

  • теперь форма с результатами закрывается по нажатию Esc
  • при отсутствии открытой книги не выводится пустая форма
  • панель инструментов не сбрасывается к настройкам "по-умолчанию" перед добавлением поля
ВложениеРазмер
SearchWorkbook.xla47 КБ

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Спасибо за надстройку. Если текст находится в объединенной ячейке и только в одном экземпляре, то выскакивет пустое окно "Результат поиска текста".

Спасибо! Супер! Работает на ура, остается только немного подкорректировать,чтоб не двигать окно с результатами поиска,чтобы видеть выбранную ячейку

За «пожалуйста» не переделываю )

Если заплатите - запросто переделаю под ваши нужды.
Либо сами переделывайте - вам же надо, да и код не закрыт паролем...
(там переделывать придётся около 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

Конечно, функциональность этой надстройки присутствует и в Excel, - если в настройках поиска выбрать опцию "Искать в книге":

Поиск по всем листам в Excel

Моя же надстройка чуть упрощает работу - не надо нажимать лишние кнопки для типа Ctrl + F, и не надо выбирать область поиска.

К тому же, при использовании надстройки, вы можете провести мышом (при нажатой левой кнопке) по результатам поиска, - и Excel пролистает (выделит) все найденные ячейки по очереди (во встроенном поиске Excel надо щелкать на каждом результате отдельно)

> Можно выделить одновременно все листы в книге и воспользоваться обычным поиском в Excel
у меня в Excel 2003 такая фишка не прошла, ищет только на последнем и 1ом листах

to EducatedFool
функция там просто блеск, спасибо большое за код)))

Давно и с удовольствием пользуюсь этой надстройкой. Сильная вещь!!!
Спасибо!
Ввиду ее огромной пользы, я бы переместил ее в раздел "Инструментарий разработчика".

можно ли как-нибудь изменить данный макрос поиска так чтобы при найденном результате не выводилась таблица результата поиска, а просто переходила на найденную ячейку.

Здравствуйте, существует очень простая альтернатива данной надстройке. Можно выделить одновременно все листы в книге и воспользоваться обычным поиском в Excel, ввести искомое выражение в строку поиска и нажать кнопку "найти все". В итоге получим тот же самый результат, что и при использовании надстройки. Но все, что делается никогда не бывает напрасным. Из кода данной надстройки можно почерпнуть много полезного. ОГРОМНАЯ ВАМ ЗА ЭТО БЛАГОДАРНОСТЬ!!!

В Excel 2007 поле поиска отображается на ленте на вкладке «Надстройки»

На нашем Excel2007 надстройка не запускается. Может быть что-то есть для Excel2007? 

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
7 + 3 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.