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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2009, 15:47   #1
KNatalia
Пользователь
 
Регистрация: 14.08.2009
Сообщений: 66
По умолчанию Фильтрация нескольких таблиц одновременно на одном листе при заданных условиях

Фильтрация нескольких таблиц одновременно на одном листе при заданных условиях
Всем добрый день!
Подскажите, пожалуйста!
Есть файл, на листе Shipping расположены подряд несколько таблиц (в примере их три, а так может быть несколько). При нажатии кнопки пуск выполняется макрос, выводится пользовательское окошко для ввода начальной и конечной даты периода, при нажатии на кнопку применить фильтр фильтруются только данные первой таблицы.

Помогите организовать цикл, чтобы по заданным параметрам фильтровались все таблицы сразу.

2. А в лист1 на основании отфильтрованных данных помещались наименования каждой таблицы и рассчитывались данные.

Заранее большое спасибо!
Вложения
Тип файла: rar Экономика.rar (40.2 Кб, 35 просмотров)
KNatalia вне форума Ответить с цитированием
Старый 06.11.2009, 15:58   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Использованный в макросе автофильтр тут не поможет:



Как я понял, автофильтр можно применить только к одной таблице на листе.

Надо полностью переделывать макрос.
EducatedFool вне форума Ответить с цитированием
Старый 06.11.2009, 21:15   #3
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Наталья.
Ваша задача мне интересна, я готов её "решить", но мой вариант решения будет без "фильтра", с применением ADO библиотеки. И для его выполнения нужна информация о том как "рассчитывались данные", как суммировать или группировать данные 18 столбцов? Проще говоря - какими данными заполнять семь полей таблицы Лист1?
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 06.11.2009, 23:00   #4
KNatalia
Пользователь
 
Регистрация: 14.08.2009
Сообщений: 66
По умолчанию Спасибо Вам, Евгений!

Здравствуйте Евгений!
Вы часто приходите на помощь, спасибо Вам большое за это!

Задача заключается в следующем:
1. У нас есть данные по ценным бумагам. Это лист "Данные". Ценных бумаг в файле может быть более 200. Для каждой ценной бумаги сформирована своя таблица с данными, перед таблицей указано название ценной бумаги.
Сколько в файле ценных бумаг, столько и таблиц.

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

Рассчет параметров для каждой ценной бумаги:

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

Например, мы берем период с 13.10.2009 по 27.10.2009
Для облигации Газпром нефть, 4 в этот период входят даты:
26.10.2009
23.10.2009
22.10.2009
21.10.2009
20.10.2009
14.10.2009
13.10.2009
Именно для них мы и будем рассчитывать параметры.

Период должен задаваться один раз для всех ценных бумаг сразу!


Для данной облигации параметры будут рассчитываться следующим образом:
1. Количество сделок за период*, штук
Количественный показатель:
Это общее количество сделок за заданный пользователем период, т.е. в нашем случае это с 13.10.2009 по 27.10.2009 (диапазон выделен цветом).
Рассчет суммы ведется по колонке "# сде-лок" (столбец К, для нашего диапазона это сумма ячеек К6:К12)
Оценка:
От 20 - высокое
От 10 до 19 - среднее
До 9 - низкое

2. Объём торгов за период*, (млн. рублей)
Количественный показатель:
Это общее количество объёма за заданный пользователем период, т.е. в нашем случае это с 13.10.2009 по 27.10.2009 (диапазон выделен цветом).
Рассчет суммы ведется по колонке "Оборот" (столбец J, для нашего диапазона это сумма ячеек J6:J12)
Оценка:
От 100000000 - высокое
От 25000000 до 100000000 - среднее
До 25000000 - низкое

3. Доходность к погашению / оферте (для облигаций), % годовых
Количественный показатель:
Берется параметр на последнее число заданного пользователем периода, т.е. в нашем случае это 26.10.2009 из периода с 13.10.2009 по 27.10.2009 (диапазон выделен цветом).
Число выбирается из колонки "Дох. к оферте, цена bid" (столбец N, для нашего диапазона это число из ячейки N6)
Оценка:
До 15% - высокое
От 15% до 19% - среднее
От 19% до 24% - низкое

4. Спрэды между заявкой на покупку / продажу, внутри дня
Количественный показатель:
Рассчитывается параметр на последнее число заданного пользователем периода, т.е. в нашем случае это 26.10.2009 из периода с 13.10.2009 по 27.10.2009 (диапазон выделен цветом).
Для рассчета берутся колонки "Bid, закр. и Ask, закр." (столбцы C и D, и рассчитывается их разность Ask - Bid, для нашего диапазона этот параметр равен разности ячеек D6-C6)
Оценка:
До 0,5% - высокое
От 0,5% до 1% - среднее
От 1% - низкое

5. Разница между max и min сделкой, внутри дня
Количественный показатель:
Рассчитывается параметр на последнее число заданного пользователем периода, т.е. в нашем случае это 26.10.2009 из периода с 13.10.2009 по 27.10.2009 (диапазон выделен цветом).
Для рассчета берутся колонки "Цена мин.. и Цена макс." (столбцы F и G, и рассчитывается их разность Цена макс - Цена мин., для нашего диапазона этот параметр равен разности ячеек G6-F6)
Оценка:
До 0,5% - высокое
От 0,5% до 1% - среднее
От 1% - низкое

6. Изменение стоимости ценной бумаги за период*, %
Количественный показатель:
Рассчитывается параметр следующим образом:
За заданный период из колонки "Цена макс", (столбец G) выбирается максимальное число, а из колонки "Цена мин." (столбец F) выбирается минимальное число и считается число по формуле (max - min)/min

Оценка:
До 1% - высокое
От 1% до 2% - среднее
От 2% - низкое

7. Общая оценка рассчитывается следующим образом:
Если есть в строке хоть одно слово "Низкое" статус присваивается "Низкое"
Если в строке, где все слова "Высокое" хоть одно слово "Среднее", то присваивается статус "Среднее"
Если есть в строке хоть одно слово "Дефолт" статус присваивается "Дефолт"

PS: Евгений, с ADO библиотекой я плохо знакома, поэтому была бы признательна, если будут комментарии

Спасибо Вам Евгений, большое спасибо!
С наилучшими пожеланиями, Наталья
Вложения
Тип файла: rar Задача.rar (34.2 Кб, 21 просмотров)

Последний раз редактировалось KNatalia; 06.11.2009 в 23:19.
KNatalia вне форума Ответить с цитированием
Старый 08.11.2009, 16:44   #5
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Наталья.
возможно Вам понравится моя попытка ..., надеюсь "продукт" будет работоспособным.
Евгений.
Вложения
Тип файла: rar ADOвведение.rar (166.9 Кб, 52 просмотров)
Тип файла: rar Экономика.rar (38.2 Кб, 33 просмотров)
Teslenko_EA вне форума Ответить с цитированием
Старый 08.11.2009, 18:43   #6
KNatalia
Пользователь
 
Регистрация: 14.08.2009
Сообщений: 66
По умолчанию

Добрый вечер, Евгений!
Выражаю Вам огромную благодарность!
Правда пока программу не смогла запустить, нет Microsoft Date and Time picker control.
Ищу, где можно скачать.
Наталья
KNatalia вне форума Ответить с цитированием
Старый 08.11.2009, 18:54   #7
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Наталья, для запуска соорудите и запустите подобную конструкцию:
Код:
Sub begin1()
    runProcedure Format(Sheets(1).[a4], "dd--mm-YYYY"), Format(Sheets(1).[b4], "dd--mm-YYYY")
End Sub
введя а ячейки A4 и B4 первого листа начальную и конечную даты, возможно Вам удастся увидеть результат и без библиотеки.
Евгений.
P.S. похоже библиотеку можно взять здесь

Последний раз редактировалось Teslenko_EA; 08.11.2009 в 19:28.
Teslenko_EA вне форума Ответить с цитированием
Старый 08.11.2009, 19:05   #8
KNatalia
Пользователь
 
Регистрация: 14.08.2009
Сообщений: 66
По умолчанию

Евгений,
Может я что-то не то делаю, но при введении дат и нажатии на кнопку старт, мне выводится ошибка:

Can't execute code in break mode

Наталья
KNatalia вне форума Ответить с цитированием
Старый 08.11.2009, 19:37   #9
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Действительно "что-то не то"
переименуйте созданную процедуры
созданную begin1 в start
процедуру start находящуюся в модуле Module2 на start-
при такой корректировке кода кнопка Старт работать будет.
иначе вызов процедуры может быть выполнен в редакторе VBA клавишей F5 или F8 - пошаговое выполнение.
Но теперь выполнение программы находится в режиме прерывания и для повторного запуска её необходимо сначала остановить : в меню Run редактора VBA нажать Reset.
Евгений.

Последний раз редактировалось Teslenko_EA; 08.11.2009 в 19:44.
Teslenko_EA вне форума Ответить с цитированием
Старый 08.11.2009, 19:46   #10
KNatalia
Пользователь
 
Регистрация: 14.08.2009
Сообщений: 66
По умолчанию

Евгений, я нашла Microsoft Date and Time Picker Control

1. Разархивировала его в папку - C:\WINDOWS\system32\MSCOMCT2.OCX,
2. Зарегистрировала его через regsvr32.exe C:\WINDOWS\system32\MSCOMCT2.OCX
3. А дальше что?

Я попробовала в VBA выбрать через кнопку Browse в Tools -> References -> MSCOMCT2.OCX
В результате появилась галочка напротив Microsoft Windows Common Controls - 2 6.0 (SP6)

Но теперь при нажатии кнопки старт выводится ошибка Object recuired (error 424)
ссылаясь на строчку модуля 2 :
Sub start()
UserForm1.Show
End Sub

Либо ошибка Can't execute code in break mode

С наилучшими пожеланиями, Наталья

Последний раз редактировалось KNatalia; 08.11.2009 в 20:33.
KNatalia вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Воспроизведение нескольких звуков одновременно GodSmack Общие вопросы Delphi 3 13.08.2009 02:28
Сумма при заданных условиях + Ранг Acro Microsoft Office Excel 2 14.04.2009 00:03
ячейка на одном листе, в которую необходимо подставлять данные из столбца, находящегося на другом листе Ирина Водолагина Microsoft Office Excel 4 04.03.2009 23:38
Макрос для обновления формул вручную только в одном листе Neo007 Microsoft Office Excel 7 26.09.2008 18:17
Фильтрация данных на втором листе по данным на первом ppl Microsoft Office Excel 3 13.08.2008 14:07