|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.11.2009, 15:47 | #1 |
Пользователь
Регистрация: 14.08.2009
Сообщений: 66
|
Фильтрация нескольких таблиц одновременно на одном листе при заданных условиях
Фильтрация нескольких таблиц одновременно на одном листе при заданных условиях
Всем добрый день! Подскажите, пожалуйста! Есть файл, на листе Shipping расположены подряд несколько таблиц (в примере их три, а так может быть несколько). При нажатии кнопки пуск выполняется макрос, выводится пользовательское окошко для ввода начальной и конечной даты периода, при нажатии на кнопку применить фильтр фильтруются только данные первой таблицы. Помогите организовать цикл, чтобы по заданным параметрам фильтровались все таблицы сразу. 2. А в лист1 на основании отфильтрованных данных помещались наименования каждой таблицы и рассчитывались данные. Заранее большое спасибо! |
06.11.2009, 15:58 | #2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
Использованный в макросе автофильтр тут не поможет:
Как я понял, автофильтр можно применить только к одной таблице на листе. Надо полностью переделывать макрос. |
06.11.2009, 21:15 | #3 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
Здравствуйте Наталья.
Ваша задача мне интересна, я готов её "решить", но мой вариант решения будет без "фильтра", с применением ADO библиотеки. И для его выполнения нужна информация о том как "рассчитывались данные", как суммировать или группировать данные 18 столбцов? Проще говоря - какими данными заполнять семь полей таблицы Лист1? Евгений. |
06.11.2009, 23:00 | #4 |
Пользователь
Регистрация: 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 библиотекой я плохо знакома, поэтому была бы признательна, если будут комментарии Спасибо Вам Евгений, большое спасибо! С наилучшими пожеланиями, Наталья Последний раз редактировалось KNatalia; 06.11.2009 в 23:19. |
08.11.2009, 16:44 | #5 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
Здравствуйте Наталья.
возможно Вам понравится моя попытка ..., надеюсь "продукт" будет работоспособным. Евгений. |
08.11.2009, 18:43 | #6 |
Пользователь
Регистрация: 14.08.2009
Сообщений: 66
|
Добрый вечер, Евгений!
Выражаю Вам огромную благодарность! Правда пока программу не смогла запустить, нет Microsoft Date and Time picker control. Ищу, где можно скачать. Наталья |
08.11.2009, 18:54 | #7 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
Наталья, для запуска соорудите и запустите подобную конструкцию:
Код:
Евгений. P.S. похоже библиотеку можно взять здесь Последний раз редактировалось Teslenko_EA; 08.11.2009 в 19:28. |
08.11.2009, 19:05 | #8 |
Пользователь
Регистрация: 14.08.2009
Сообщений: 66
|
Евгений,
Может я что-то не то делаю, но при введении дат и нажатии на кнопку старт, мне выводится ошибка: Can't execute code in break mode Наталья |
08.11.2009, 19:37 | #9 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
Действительно "что-то не то"
переименуйте созданную процедуры созданную begin1 в start процедуру start находящуюся в модуле Module2 на start- при такой корректировке кода кнопка Старт работать будет. иначе вызов процедуры может быть выполнен в редакторе VBA клавишей F5 или F8 - пошаговое выполнение. Но теперь выполнение программы находится в режиме прерывания и для повторного запуска её необходимо сначала остановить : в меню Run редактора VBA нажать Reset. Евгений. Последний раз редактировалось Teslenko_EA; 08.11.2009 в 19:44. |
08.11.2009, 19:46 | #10 |
Пользователь
Регистрация: 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. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Воспроизведение нескольких звуков одновременно | 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 |