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