logo search
Avtomatizatsia_ekonomicheskih_raschetov_v_Excel

5.4.4. Поиск данных

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

В меру же их возможностей проще всего организовать поиск на новом (отдельном) листе. Для этого правда требуется внести изменения в проект системы – т.е. добавить новый лист, дать ему имя «Поиск» и создать кнопку «Поиск» в главном меню.

На рис.5.6 приведен возможный вариант интерфейса для организации поиска.

Рис. 5.6. Интерфейс для организации операции поиска

Поиск производится следующим образом:

– в группе полей «Критерии поиска» вводятся нужные значения;

– щелкается кнопка «Найти».

Кнопка «Очистить» предназначена для очистки результатов поиска.

Технология создания элементов интерфейса аналогична предыдущему разделу – т.е. сначала пишутся макросы, выполняющие нужные операции, а затем создаются кнопки, связанные с этими макросами.

Итак, поэтапно.

Макрос для кнопки «Найти»

Выполним команды Сервис > Макрос > Начать запись > На запрос об имени макроса напечатать имя «Найти» > Установить курсор в B8 > Данные > Фильтр > Расширенный фильтр > В окне «Расширенный фильтр» в поле «Исходный диапазон» указать адрес основной базы> В поле «Диапазон условий» указать $С$10:$H$11 > Установить переключатель в опции «Скопировать результат в другое место» > В поле «Поместить результат в диапазон» указать $C$17:$H$17 > Ok > Сервис > Макрос > Остановить запись.

В результате должен получиться следующий макрос:

Sub Найти()

Sheets("Продажи").Range("Данные_продаж").AdvancedFilter Action:=xlFilterCopy, _

CriteriaRange:=Range("C10:H11"), CopyToRange:=Range("C17:H17"), _

Unique:= False

End Sub

Макрос для кнопки «Очистить»

Выполним команды Сервис > Макрос > Начать запись > На запрос об имени макроса напечатать имя «Очистить» > Выделить мышью ячейки C18:H32 > Нажать клавишу «Delete» > Установить курсор в C17 > Сервис > Макрос > Остановить запись.

В результате должен получиться следующий макрос:

Sub Очистить()

Range("C18:H61").Select

Selection.ClearContents

Range("C17").Select

End Sub

Нарисуйте кнопки «Найти» и «Очистить» назначив им соответствующие макросы.

Проверьте действие кнопок, задавая различные критерии поиска.