Диплом: Анализ эффективности вложений денежных средств в РКО
Содержание. стр. Введение._______________________________________________________________ Глава 1. Функционирование рынка РКО._____________________________________ Участники рынка.______________________________________________________ Процедура торгов.______________________________________________________ Первичное размещение (аукцион)._______________________________________ Вторичные торги.____________________________________________________ Погашение._________________________________________________________ Документооборот.______________________________________________________ Отчеты, предоставляемые биржей._______________________________________ Отчеты, предоставляемые Дилерами._____________________________________ Глава 2. Задачи Дилера на рынке РКО._______________________________________ Ведение бэк-офиса._____________________________________________________ Оптимизация вложений собственных средств._______________________________ Управление средствами инвесторов._______________________________________ Исполнение поручений Инвесторов.________________________________________ Анализ эффективности вложений._________________________________________ Глава 3. Задачи формирования и ведения собственного портфеля облигаций Дилера. Формирование портфеля облигаций._______________________________________ Ликвидность портфеля.________________________________________________ Период инвестирования._______________________________________________ Инвестирование с целью максимизации дохода.___________________________ Безрисковое инвестирование.__________________________________________ Анализ эффективности вложений денежных средств в РКО.__________________ Постановка задачи.__________________________________________________ Метод решения._____________________________________________________ Экономическая интерпретация метода.__________________________________ Экономическая интерпретация полученных результатов.____________________ Применение результатов исследования для построения методов эффективного управления портфелем облигаций. Заключение.___________________________________________________________ Список литературы.____________________________________________________ Приложения.__________________________________________________________ Приложение № 1. Программа автоматизации учета РКО.______________________ Приложение 1.1. Руководство пользователя._______________________________ Приложение 1.2. Текст программы._____________________________________ Приложение № 1.3. Журнал оборотов.___________________________________ Приложение № 1.4. Журнал лицевого учета.______________________________ Приложение № 1.5. Мемориальный ордер.________________________________ Приложение № 1.6. Отчет инвестору о совершенных сделках._________________ Приложение № 1.7. Структура пртфеля в разрезе по бумагам._________________ Приложение № 1.8. Структура портфеля обобщенная._______________________ Приложение № 1.9. Биржевая информация._______________________________ Приложение № 1.10. Еженедельный отчет в депозитарий.____________________ Приложение № 1.11. Ежемесячный отчет в депозитарий._____________________ Приложение № 2. Программа анализа эффективности вложений в РКО._________ Приложение 2.1. Текст программы._____________________________________ Приложение № 2.2. Диаграмма сравнения доходности портфеля и рынка._______ Приложение № 2.3. Диаграмма сравнения индекса портфеля и рынка.__________ Приложение № 3. Входные статистические данные._________________________ Приложение 3.1. Информация о бумагах._________________________________ Приложение 3.2. Информация о сделках._________________________________ Приложение 3.3. Информация о движениях денежных средств.________________ Приложение 3.4. Биржевая информация._________________________________
Введение.
Республиканские краткосрочные бескупонные облигации (РКО) выпускаются Министерством Финансов Республики Татарстан. Рынок РКО существует с 1995 года. За три года он стал важнейшим сегментом в экономике Татарстана, сравнимый по объему заимствований с рынком межбанковских кредитов и иностранной валюты. Гарантом надежности вложений в РКО является Правительство РТ. РКО - ликвидный и наиболее доходный инструмент финансового рынка. Доходность по РКО выше, чем по банковским вкладам и депозитным сертификатам, а также государственным ценным бумагам. Имея льготное налогообложение, РКО является наиболее привлекательным вложением свободных финансовых ресурсов. Вкладывать средства в РКО могут как юридические, так и физические лица. Доход по этим облигациям получается от разницы между ценой покупки и продажи, т.е. дисконт. РКО обращаются в бездокументарной форме и учитываются записями по счетам депо. Продажа и покупка производится на фондовой бирже. В связи с этим возникает задача учета операций с РКО как со стороны биржи, так и со стороны организаций-инвесторов. На данном сегменте фондового рынка можно производить как краткосрочные спекулятивные операции, так и долгосрочные вложения свободных собственных или заемных средств. Таким образом, актуальной является задача оценки эффективности вложений в РКО. В данной дипломной работе решаются две задачи: 1. Автоматизация учета операций с РКО; 2. Оценка эффективности вложений в РКО. На основе результатов второй задачи можно будет сделать некоторые выводы для оптимизации принятия решений при вложении в бескупонные облигации.Глава 1. Функционирование рынка РКО.
Республиканские краткосрочные облигации обращаются на Волжско-Камской бирже (ВКБ) посредством проведения электронных торгов. В функционировании рынка РКО можно выделить следующие моменты: 1. Участники рынка. 2. Процедура торгов. 3. Документооборот.Участники рынка.
Участники рынка разделяются на две категории: Дилеры и инвесторы. Дилер - любое юридическое лицо, профессиональным участником рынка ценных бумаг, заключившее договор на выполнение функций по обслуживанию операций с облигациями с коммунальным предприятием "Дирекция по работе с ценными бумагами". Дилер может заключать сделки с РКО от своего имени и за свой счет, а также может выполнять функции финансового брокера при заключении сделок от своего имени за счет и по поручению инвестора. Инвестор - любое юридическое или физическое лицо, заключившее с Дилером договор брокерского обслуживания на рынке РКО. Инвестор может приобретать облигации только через Дилеров, уплачивая при этом комиссию.Процедура торгов.
В ходе торгов РКО проходят следующие этапы: Первичное размещение; Вторичные торги; Погашение.Первичное размещение (аукцион).
Аукцион - это первичное размещение облигаций, проводимого Организатором (Коммунальное предприятие "Дирекция по работе с ценными бумагами", агент Министерства финансов РТ по обслуживанию выпусков облигаций) по поручению Министерства финансов Республики Татарстан. Они проводятся по специальному графику. Дата аукциона, предельный объем выпуска, место и время проведения аукциона объявляются Организатором. Контрагентами в этой процедуре являются Министерство Финансов с одной стороны, и Дилеры - другой. В ходе аукциона Дилеры подают заявки на покупку облигаций. После подачи всех заявок до установленного времени, Министерство Финансов устанавливает цену отсечения - минимальная цена, по которой он готов продать облигации. Все заявки, поданные выше цены отсечения, удовлетворяются, заявки, поданные с более низкой ценой, не удовлетворяются.Вторичные торги.
Обращение облигаций на вторичных торгах осуществляется в форме сделок купли- продажи через Торговую систему (организация, уполномоченная на основании договора с Министерством финансов РТ и двусторонних договоров с Дилерами обеспечивать процедуру заключения сделок купли-продажи путем предоставления технических средств). Контрагентами в этой процедуре выступают Дилеры. Дилеры вводят в Торговую систему посредством рабочих терминалов заявки на покупку или продажу облигаций. Если цены заявок совпадают, то они удовлетворяются, т.е. сделка считается совершенной.Погашение.
Погашение облигаций производится в определенный день Министерством Финансов по номинальной стоимости.Документооборот.
РКО обращаются в электронной форме. Учет по ним ведется посредством записей на счетах депо, открытых в Волжско-Камской трастовой компании (ВКТК). В связи с этим возникают вопросы отражения учета операций в документальной форме. В ходе обращения РКО можно выделить следующие типы документов: Отчеты, предоставляемые биржей; Отчеты, предоставляемые Дилерами.Отчеты, предоставляемые биржей.
По завершении торгов биржа предоставляет каждому Дилеру следующие документы: Биржевая информация; Выписка из протокола торгов; Обязательства Дилера по итогам торгов; Выписка из реестра сделок.Отчеты, предоставляемые Дилерами.
В процессе участия в торгах Дилеры обязаны предоставлять следующие документы бирже: Еженедельный отчет; Ежемесячный отчет; Другие документы, необходимые для допуска Дилера к торгам. После совершения сделки купли-продажи по поручению Инвестора, Дилер обязан предоставить Инвестору отчет о совершенной сделке в форме, установленной в договоре по брокерскому обслуживанию и выписку со счета депо. Дилер также может предоставить биржевую информацию и оказывать консультационные услуги.Глава 2. Задачи Дилера на рынке РКО.
Являясь активным участником рынка РКО, Дилер сталкивается со следующими задачами: 1. Ведение бэк-офиса; 2. Оптимизация вложений собственных средств; 3. Управление средствами Инвесторов; 4. Исполнение поручений Инвесторов; 5. Анализ эффективности вложений.Ведение бэк-офиса.
Бэк-офис - система электронного учета операций с ценными бумагами. Он включает в себя очень широкий спектр функциональных вопросов: Ведение журнала лицевого учета и журнала оборотов (Приложение № 1.3, 1.4); Формирование и печать мемориальных ордеров (Приложение №1.5); Формирование и печать отчетов Инвесторам (Приложение №1.6); Формирование и печать собственного портфеля Дилера (Приложение № 1.7, 1.8); Формирование и печать биржевой информации (Приложение №1.9); Формирование и печать еженедельного и ежемесячного отчетов (Приложение №1.10, 1.11). Все перечисленные задачи реализованы в представленной программе автоматизированного учета операций с РКО.Оптимизация вложений собственных средств.
Под оптимизацией вложений собственных средств понимается создание портфеля облигаций, который удовлетворял бы поставленной инвестиционной или спекулятивной задаче. Для формирования портфеля можно исходить из следующих факторов: Ликвидность; "Время жизни"; Получение наибольшего дохода; Использование РКО в залоговых операциях для получения межбанковских кредитов.Управление средствами инвесторов.
Дилер может сам управлять средствами Инвесторов, если был заключен договор трастового обслуживания. При этом он может брать комиссию как с отдельной сделки, так и с дохода, полученного Инвестором. В данном случае актуальной является задача оптимального управления портфелем Инвестора и оценка эффективности деятельности Дилера.Исполнение поручений Инвесторов.
Дилер, являясь также и брокером на рынке РКО, совершает операции купли- продажи от своего имени, но по поручению Инвестора и за его счет. В этом случае Дилер должен вести учет приема заявок Инвесторов, исполнение поручений на бирже и формирование отчетов. За эти услуги он получает комиссионное вознаграждение.Анализ эффективности вложений.
Данная задача является одной из наиболее сложных и необходимых. Определение метода анализа - нетривиальная задача. В Главе 3 рассмотрены две методики анализа эффективности вложений собственных средств в облигации. Глава 3. Задачи формирования и ведения собственного портфеля облигаций Дилера. В процессе управления портфелем облигаций Дилер ставит перед собой следующие задачи: формирование портфеля облигаций; анализ эффективности вложений денежных средств.Формирование портфеля облигаций.
В процессе участия в торгах Дилер инвестирует свободные денежные средства в облигации, создавая при этом портфель, состоящий из разных серий РКО, отличающиеся тем, что имеют разные сроки до погашения. Спецификой портфеля, состоящего из РКО, могут являться следующие моменты: ликвидность портфеля; период инвестирования; инвестирование с целью максимизации дохода; безрисковое инвестирование.Ликвидность портфеля.
При инвестировании средств в РКО необходимо учитывать следующий момент. Денежные средства Дилеров, инвестируемые в облигации на вторичных торгах, часто превышают объемы торгов по какой-либо отдельной серии облигации. В связи с этим возникает вопрос ликвидности портфеля. Как показывает практика фондового рынка, облигации с наименьшим сроком погашения более ликвидные, чем те, которые имеют более длительный срок до погашения. Но, с другой стороны, облигации с меньшим сроком до погашения имеют и меньшую доходность. Таким образом, при продаже легче всего продать облигации с меньшим сроком до погашения, а купить те, которые имеют более длительный срок до погашения.Период инвестирования.
Дилер при инвестировании сталкивается и со следующей задачей: период инвестирования. Так как ликвидность рынка напрямую зависит от срока до погашения облигации, то с этим приходится диверсифицировать портфеля по срокам погашения облигаций. Причем необходимо выбрать наилучшую стратегию, зависящую от целей инвестирования. Если целью инвестирования является получения максимального дохода за продолжительный период времени, то можно инвестировать средства в наиболее доходные серии облигаций. В случае если целью инвестирования является краткосрочная спекуляция, то наиболее оптимальной стратегией в данном случае является покупка серий облигаций со сроком погашения, близким к установленному сроку инвестирования; в этом случае минимизируется риск невозможности продажи облигаций на вторичном рынке.Инвестирование с целью максимизации дохода.
В случае если целью инвестирования является максимизация дохода, причем срок инвестирования не фиксирован, т.е. неизвестен период инвестирования, Дилер сталкивается с двумя противоречивыми факторами: доходность и ликвидность. В связи с этим возникают задачи оптимального управления портфелем облигаций. Методы, которые применяют Дилеры, являются их собственными разработками (ноу- хау). Существуют множество публикаций в финансово-экономической литературе по оптимизации вложений в бескупонные облигации, но предложенные методы либо содержат в себе неверные предпосылки при построении метода оптимизации, либо содержат упрощения, после чего модель становится неприменима на практике.Безрисковое инвестирование.
В целях получения дохода, но также минимизации риска извлечения денежных средств из портфеля, можно формировать портфеля с помощью диверсификации по срокам погашения серий облигаций. Облигации, по определению, являясь долговыми обязательствами, имеют срок погашения, т.е. срок, в который инвестор получает номинал облигации, поэтому о риске вложений приходится говорить лишь с точки зрения периода вложения.Анализ эффективности вложений денежных средств в РКО.
Постановка задачи.
Анализ эффективности вложения денежных в РКО можно разделить на анализ внутреннего управления портфелем облигаций и внешнего. Внутреннее управление - это оценка изменения индекса портфеля в сравнении с индексом рынка. Внешнее управление - это оценка изменения средневзвешенной доходности к погашению портфеля в сравнении со средневзвешенной доходностью к погашению рынка. Таким образом, возникает задача сравнения управления портфелем облигаций относительно рынка путем построения некоторого показателя, который адекватно отражал бы динамику изменения портфеля в сравнении с динамикой изменения рынка.Метод решения.
Предлагаются методики для решения поставленных задач путем построения следующих показателей: 1. Индекс портфеля и рынка (для оценки внутреннего управления). Индекс строится следующим образом. Для портфеля: (1) (1.1) (1.2) где: значение индекса в момент t коэффициент стоимость портфеля по средневзвешенным ценам на момент закрытия торгов в момент t сумма дополнительных вложений (извлечений) денежных средств в портфель в момент t, причем, если дополнительные вложения сумма изъятых денег средневзвешенная цена i серии на момент закрытия торгов количество бумаг i серии в портфеле количество серий бумаг, обращающихся на рынке Для рынка при расчете коэффициента и переменные будут иметь следующий смысл: объем капитализации рынка по средневзвешенным ценам на момент t сумма размещенных (погашенных) средств на аукционе сумма размещенных средств на аукционе сумма погашенных средств на аукционе количество бумаг i серии, обращающихся на рынке Данный индекс показывает, насколько эффективнее было внутреннее управление портфелем по сравнению с рыночной конъюктурой. Причем, если индекс портфеля меньше индекса рынка, то управление было неэффективным. 2. Эффективная норма доходности к погашению портфеля и рынка (для оценки внешнего управления). Показатель строится следующим образом(2 метода): В теории расчета применяется следующий метод: (2) где: (2.1) сумма i расходного платежа сумма i доходного платежа количество дней между i расходным и доходным платежами эффективная норма доходности, которая и определяется из решения данного уравнения количество расходных и доходных платежей Уравнение (2) решается численными методами, причем решение единственно. Из-за неудобства решения уравнения на практике обычно применяют другой метод нахождения : (2.2) где: доходность к погашению i бумаги количество i бумаги дней до погашения i бумаги рассчитывается следующим образом: (2.3) где: цена покупки i бумаги в % от номинала (расходный платеж) цена погашения в % от номинала (доходный платеж) количество дней в году дней до погашения i бумаги Данный метод более удобен при расчетах и дает более быстрые результаты, вследствие чего он был применен при построении данного показателя.Экономическая интерпретация метода.
Анализ с помощью методики построения индекса портфеля и рынка включает в себя следующие моменты: Индекс построен таким образом, что он адекватно отражает управление портфелем и поведение рынка. По построенному индексу можно определить доходность к приобретению портфеля и рынка, что бывает необходимым для сравнения вложений в РКО с другими инвестиционными операциями. Доходность к приобретению - это доходность на день расчета, которую можно получить при продаже портфеля облигаций. Кроме того, можно оценить поведение рынка РКО в сравнении с другими рынками. Методика сравнения может быть различной и их построение требует учета специфики различных рынков. Второй вид анализа - вычисление эффективной нормы доходности портфеля и рынка. Предложенный метод отражает поведение рынка и доходность к погашению портфеля в текущий момент времени. Воздействовать на этот показатель можно путем добавления или извлечения денежных средств в портфель облигаций. При этом, эффективное внешнее управление напрямую зависит от объемов добавления/извлечения денежных средств и сложившейся конъюнктурой рынка в день проведения операций, т.е. другими словами, должно быть своевременное проведение данных операций. Этот вид анализа можно применить также для эффективного распределения свободных ресурсов между различными инвестиционными рынками, оценивая и сравнивая доходности различных рынков и направляя свободные денежные средства на наиболее доходные секторы.Экономическая интерпретация полученных результатов.
В данной работе сравнивался портфель РКО банка и рынок РКО с февраля по май месяц 1997 года. При анализе путем построения индекса было выявлено следующее. График, построенный на основе индекса рынка (Приложение №2.3), имеет положительный наклон. Это обусловлено тем, что рынок в то время имел тенденцию к снижению доходности, поэтому, индекс, отражающий доходность к приобретению, увеличивался. В приведенном примере, основанном на реальных данных, внутреннее управление портфелем было эффективным по сравнению с рынком до начала мая месяца. На графике сравнения доходности портфеля и рынка (Приложение № 2.2) можно видеть падение доходности к погашению портфеля в связи со сложившейся рыночной конъюнктурой. При анализе с помощью данного показателя можно сказать, что апрель месяц был наиболее благоприятным для дополнительного инвестирования денежных средств. Применение результатов исследования для построения методов эффективного управления портфелем облигаций. Результаты исследования с помощью применения предложенных методик позволяют сделать основополагающие выводы для построения методов эффективного управления портфелем облигаций. В данном случае, под эффективным управлением понимается получение наибольшего дохода за определенный промежуток времени. Для построения методик эффективного управления портфелем облигаций необходимо учитывать следующее: 1) управление должно давать максимальный эффект; 2) в управлении нужно учитывать возможность ввода-вывода денежных средств; 3) необходимость попытки прогнозирования ситуации при изменении рыночной конъюнктуры; 4) управление портфелем с точки зрения как доходности, так и ликвидности; Полученные результаты также позволяют оценить степень влияния человека (в данном случае - трейдер) на управление портфелем облигаций. От методов, применяемых им для принятия решений, зависит эффективность управления портфелем облигаций. В этом случае бывает целесообразным контроль за управлением портфелем со стороны вышестоящего начальства без применения обременительных методик расчетов, с другой стороны, можно поощрять трейдера за успешное управление портфелем облигаций. Следовательно, предложенный индекс можно применить для оценки управления портфелем облигаций трейдером. Другая задача, которою можно решить на основе полученных результатов - это задача доверительного управления (траст). Основываясь на результатах, можно предложить следующую схему взимания платы за траст со стороны управляющего с клиента. Сравнивается индекс рынка и индекс портфеля облигаций, находящегося в трасте. В случае, если индекс портфеля превосходит индекс рынка, то дополнительный доход, получающийся от более эффективного управления портфелем облигаций, делится в определенной пропорции между управляющим и клиентом. Другой вариант: управляющий гарантирует клиенту определенный процент, а плата управляющему рассчитывается по определенной методике исходя из гарантированного дохода и дохода, полученного свыше.Заключение.
В работе решены следующие ключевые моменты, необходимые для работы с Республиканскими краткосрочными бескупонными облигациями (РКО): Автоматизация учета операций с РКО Оценка эффективности вложений в РКО Описано функционирование рынка РКО, поставлены задачи, которые решает Дилер на рынке. Решением задачи автоматизации операций с РКО является программный продукт, написанный на Visual Basic for Microsoft Excel, который позволяет вести полный документооборот Дилера на рынке РКО. Результатами автоматизации являются стандартизованные выходные формы, необходимые для ведения бухгалтерского учета РКО и предоставления различных отчетов. При решении задачи оценки эффективности вложений в РКО применялись статьи, содержащие информацию об различных методиках расчета доходности облигаций. Результатом решения данной задачи является разработка собственной методики анализа. Методика проверена на реальных численных данных за определенный период функционирования рынка РКО. Конечным продуктом метода является программа, написанная на Visual Basic for Microsoft Excel, позволяющая делать анализ эффективности управления портфелем облигаций. Приведенный метод анализа также можно применить в дальнейшем для построения методов эффективного управления портфелем облигаций. Обе поставленные задачи внедрены и используются на практике.Список литературы.
1. Башарин Г.П. лНачала финансовой математики Москва, лИНФРА-М 1997 г. 2. Бродский В., Горлин Ю. лМодель действительной доходности ГКО для клиентов журнал лРынок ценных бумаг №1 1994 г. 3. Ветров А. лКак построить агрегированные показатели доходности рынка ГКО/ОФЗ журнал лРынок ценных бумаг №5 1996 г. 4. Горелов М. лПостроение оптимального портфеля ГКО: как максимизировать прибыль журнал лРынок ценных бумаг №6 1996 г. 5. Горелов М., Никифоров Л. лО границах применимости принципа рыночного момента журнал лРынок ценных бумаг №16 1996 г. 6. Горелов М. лЧто нельзя упускать при построении модели управления портфелем ГКО журнал лРынок ценных бумаг №11 1996 г. 7. Горлин Ю. лОценка доходности операций с ГКО: вырианты биржевой игры журнал лРынок ценных бумаг №6 1994 г. 8. Грядовая О. лДоходность как критерий оптимизации решений по управлению портфелем ГКО журнал лРынок ценных бумаг №15 1994 г. 9. Губерниев В. лГКО в оптимальном портфеле журнал лРынок ценных бумаг №15 1996 г. 10. Демушкина Е. лСделки с государственными ценными бумагами журнал лРынок ценных бумаг №23 1996 г. 11. Екушов А. лКак превысить среднюю доходность рынка ГКО журнал лРынок ценных бумаг №11 1997 г. 12. Ивахин А. лКак преодолеть ограничения в моделировании рынка ГКО журнал лРынок ценных бумаг №12 1996 г. 13. Комягин В.Б. лПрограммирование в Excel 5 и Excel 7 на языке Visual Basic Москва, лРадио и связь 1996 г. 14. Кузнецов М., Нифатов П. лДенежный поток и торговые операции на рынке ГКО журнал лРынок ценных бумаг №4 1996 г. 15. Мешкова Н. Кулакова Ю. лПрогнозирование тренда цены ГКО журнал лРынок ценных бумаг №6 1996 г. 16. Михеев А. лИграем на заемные средства журнал лРынок ценных бумаг №3 1997 г. 17. Остроушко О., Гришин О. лДоходность и дюрация портфеля ГКО журнал лРынок ценных бумаг №5 1996г. 18. Положение об обслуживании и обращении выпусков РКО РТ(утверждено постановлением Кабинета Министров РТ от 21 апреля 1995 г. № 238) 19. лПотоки платежей,виды облигаций и вычисление доходности Москва лКонсультационное агентство лСоболев 1996 г. 20. лРынок ценных бумаг учебник под ред. Галанова В.А., Басова А.И. Москва лФинансы и статистика 1996 г. 21. Суменкова Е.В. лОперации с ценными бумагами Москва лПерспектива 1997 г. 22. Ушаков П. лО взаимосвязях индикаторов рынка ГКО журнал лРынок ценных бумаг №3 1997 г. 23. Черкасов В.Е. лПрактическое руководство по финансово-экономическим расчетам Москва лМетаинформ 1995 г. 24. Черновский А. лКак оценить эффективноть управления портфелем ГКО журнал лРынок ценных бумаг №24 1996 г. 25. Четыркин Е. лМетоды финансовых и коммерческих расчетовПриложения.
Приложение № 1. Программа автоматизации учета РКО.
Приложение 1.1. Руководство пользователя.
Данная программа написана на Microsoft Visual Basic for Excel. Для запуска программы необходимо открыть файл sprav.xls в Excel, после чего в линейке меню появится дополнительный пункт меню лСправочник, состоящий из следующих разделов: Дата Просмотр остатков Печать Депозитарий Портфель Биржевая информация Отчеты клиентам Отчет недельный Отчет месячный Журнал лицевого учета Окно Бумаги Сделки Клиенты Биржа Рассмотрим подробнее каждое из пунктов меню. Дата - изменение даты для работы. Просмотр остатков - просмотр остатков по Клиентам. Печать - распечатка на принтер следующих данных: Депозитарий - печать депозитария. Портфель - печать собственного портфеля Дилера. Биржевая информация - печать биржевой информации. Отчеты клиентам - печать отчетов Клиентам. Отчет недельный - печать еженедельного отчета, предоставляемого в депозитарий. Отчет месячный - печать ежемесячного отчета, предоставляемого в депозитарий. Журнал лицевого учета - печать журнала лицевого учета и журнала оборотов Дилера. Окно - выбор следующих окон для ввода информации: Бумаги - выбор окна ввода информации об обращающихся на рынке бумагах. Сделки - выбор окна ввода сделок. Клиенты - выбор окна ввода Клиентов. Биржа - выбор окна ввода биржевой информации. Результатом работы программы являются Приложения №1.3-1.12Приложение 1.2. Текст программы.
Option Explicit Option Base 1 Public CurDate As Date Public DepoArray() As Integer Public BumArray(); BumArrayV() As Integer Public Button; Просмотр; ExitVar; Покупка; Продажа; Погашение As Boolean Const DilerConst = 1000900000 Const FilialConst = 1000999999 Const ConstMaxBum = 100 ' максимальное кол-во бумаг(выпусков) Const MaxCount = 1000 ' максимальное кол-во сделок по 1-ой бумаге Const S192 = "50202" Const S904 = "47423" Const S960 = "70102" Const S970 = "70204" Const SR970 = "70204" Sub Auto_Open() ActiveWindow.WindowState = xlMaximized CurDate = Date Worksheets("Врем").Cells(1; 4) = CurDate Application.OnWindow = "CancelChanges" Application.Windows("Sprav.xls").OnWindow = "Start" End Sub Sub Auto_Close() MenuBars(xlModule).Reset MenuBars(xlWorksheet).Reset Application.OnWindow = "" Application.Windows("Sprav.xls").OnWindow = "" ActiveWorkbook.Save End Sub Sub Start() Call CreateMenu Application.DisplayFullScreen = False ActiveWindow.WindowState = xlMaximized CurDate = Date Worksheets("Врем").Cells(1; 4) = CurDate End Sub Sub CancelChanges() MenuBars(xlModule).Reset MenuBars(xlWorksheet).Reset End Sub Sub CreateMenu() MenuBars(xlModule).Reset MenuBars(xlWorksheet).Reset With MenuBars(xlModule).Menus.Add("&Справочник") .MenuItems.Add "&Дата"; "DateChange" .MenuItems.Add "П&росмотр остатков"; "PrintOst" .MenuItems.AddMenu ("&Печать") .MenuItems("&Печать").MenuItems.Add "&Депозитарий"; "PrintDepo" .MenuItems("&Печать").MenuItems.Add "&Портфель"; "PrintPortfel" .MenuItems("&Печать").MenuItems.Add "&Биржевая информация"; "PrintBirgaInfo" .MenuItems("&Печать").MenuItems.Add "Отчеты &клиентам"; "PrintOtchClient" .MenuItems("&Печать").MenuItems.Add "Отчет &недельный"; "PrintOtchWeek" .MenuItems("&Печать").MenuItems.Add "Отчет &месячный"; "PrintOtchMonth" .MenuItems("&Печать").MenuItems.Add "Журнал &лицевого учета"; "PrintMagazine" .MenuItems.AddMenu ("&Окно") .MenuItems("&Окно").MenuItems.Add "&Бумаги"; "ViewPaper" .MenuItems("&Окно").MenuItems.Add "&Сделки"; "ViewDeal" .MenuItems("&Окно").MenuItems.Add "&Клиенты"; "ViewClient" .MenuItems("&Окно").MenuItems.Add "Би&ржа"; "ViewBirga" .MenuItems("&Окно").MenuItems.Add "&Остатки 812"; "ViewOst812" .MenuItems("&Окно").MenuItems.Add "О&статки биржа"; "ViewOstBirga" .MenuItems("&Окно").MenuItems.Add "&Защита"; "ViewProgram" End With With MenuBars(xlWorksheet).Menus.Add("&Справочник") .MenuItems.Add "&Дата"; "DateChange" .MenuItems.Add "П&росмотр остатков"; "PrintOst" .MenuItems.AddMenu ("&Печать") .MenuItems("&Печать").MenuItems.Add "&Депозитарий"; "PrintDepo" .MenuItems("&Печать").MenuItems.Add "&Портфель"; "PrintPortfel" .MenuItems("&Печать").MenuItems.Add "&Биржевая информация"; "PrintBirgaInfo" .MenuItems("&Печать").MenuItems.Add "Отчеты &клиентам"; "PrintOtchClient" .MenuItems("&Печать").MenuItems.Add "Отчет &недельный"; "PrintOtchWeek" .MenuItems("&Печать").MenuItems.Add "Отчет &месячный"; "PrintOtchMonth" .MenuItems("&Печать").MenuItems.Add "Журнал &лицевого учета"; "PrintMagazine" .MenuItems.AddMenu ("&Окно") .MenuItems("&Окно").MenuItems.Add "&Бумаги"; "ViewPaper" .MenuItems("&Окно").MenuItems.Add "&Сделки"; "ViewDeal" .MenuItems("&Окно").MenuItems.Add "&Клиенты"; "ViewClient" .MenuItems("&Окно").MenuItems.Add "Би&ржа"; "ViewBirga" .MenuItems("&Окно").MenuItems.Add "&Остатки 812"; "ViewOst812" .MenuItems("&Окно").MenuItems.Add "О&статки биржа"; "ViewOstBirga" .MenuItems("&Окно").MenuItems.Add "&Защита"; "ViewProgram" End With End Sub Sub ViewPaper() Sheets("Бумаги").Select Call EndOf End Sub Sub ViewDeal() Sheets("Сделки").Select Call EndOf End Sub Sub ViewClient() Sheets("Клиенты").Select Call EndOf End Sub Sub ViewBirga() Sheets("Биржа").Select Call EndOf End Sub Sub ViewOst812() Sheets("Остатки812").Select Call EndOf End Sub Sub ViewOstBirga() Sheets("ОстаткиБиржа").Select Call EndOf End Sub Sub ViewProgram() Sheets("Защита").Select End Sub '------------------------------ Печать Депозитария --------------- Sub PrintDepo() Dim BumNum; CliNum; i; j; k; a; n; Sign; s As Integer Dim Flag As Boolean Dim Code As Long Dim Str As String Dim DepoFil() As Integer Dim Num As Integer CurDate = Worksheets("Врем").Cells(1; 4) Call FormBum Sheets("Депо").Select BumNum = Worksheets("Врем").Cells(1; 2) Cells(3; 5) = Worksheets("Врем").Cells(1; 4) Cells(3; 5).NumberFormat = "Д ММММ, ГГГГ" Cells(3; 5).HorizontalAlignment = xlCenterAcrossSelection Cells(3; 5).Font.Bold = True Num = 9 For i = 1 To BumNum Cells(6; i + 1) = Worksheets("Врем").Cells(i; 1) Cells(6; i + 1).Font.Bold = True Cells(6; i + 1).Interior.ColorIndex = 40 Cells(Num + 1; i + 1).Interior.ColorIndex = 15 Cells(Num + 1; i + 1) = "" Cells(Num; i + 1).Interior.ColorIndex = 40 Cells(Num; i + 1) = "" Cells(5; i + 1).Interior.ColorIndex = 40 Next Cells(Num; 1).Interior.ColorIndex = 40 Cells(Num; 1) = "Итого" Cells(Num; 1).Font.Bold = True Cells(Num; 1).Font.Italic = True Cells(Num; 1).HorizontalAlignment = xlCenter Cells(Num + 1; 1) = "" Cells(Num + 1; 1).Interior.ColorIndex = 15 CliNum = Worksheets("Врем").Cells(1; 3) ReDim DepoArray(CliNum; BumNum) ReDim DepoFil(BumNum) a = 2 While Worksheets("Сделки").Cells(a; 1) <> Empty i = 1 While Worksheets("Клиенты").Cells(i + 1; 2) <> _ Worksheets("Сделки").Cells(a; 2) If Worksheets("Клиенты").Cells(i + 1; 2) = Empty Then MsgBox "Неверный номер клиента в Окне 'Сделки' строка: " + CStr(a) Sheets("Сделки").Select Cells(a; 2).Select Exit Sub End If i = i + 1 Wend k = 0 For j = 1 To BumNum If Worksheets("Врем").Cells(j; 1) = Worksheets("Сделки").Cells(a; 3) Then k = j Exit For End If Next If k = 0 Then a = a + 1 GoTo NNN End If If Not IsEmpty(Worksheets("Сделки").Cells(a; 4)) Then Sign = 1 Else Sign = -1 End If If CurDate >= Worksheets("Сделки").Cells(a; 1) Then If Worksheets("Сделки").Cells(a; 2) = FilialConst Then DepoFil(k) = DepoFil(k) + Sign * Worksheets("Сделки").Cells(a; 6) Else DepoArray(i; k) = DepoArray(i; k) + Sign * Worksheets("Сделки").Cells(a; 6) End If End If a = a + 1 NNN: Wend n = 7 For i = 1 To CliNum Flag = False For k = 1 To BumNum If DepoArray(i; k) > 0 Then Flag = True Next If Flag Then Str = Format(Worksheets("Клиенты").Cells(i + 1; 2); "0000000000") Str = Right(Str; 5) Cells(n; 1).NumberFormat = "@" Cells(n; 1).Font.Bold = True Cells(n; 1).HorizontalAlignment = xlCenter Cells(n; 1).Font.Italic = False Cells(n; 1).Interior.ColorIndex = 2 Cells(n; 1) = Str For k = 1 To BumNum If DepoArray(i; k) <> 0 Then Cells(n; k + 1) = DepoArray(i; k) Else Cells(n; k + 1) = "" End If Cells(n; k + 1).Font.Bold = False Cells(n; k + 1).Font.Italic = False Cells(n; k + 1).Interior.ColorIndex = 2 Next If n = 7 Then n = n + 4 Else n = n + 1 End If End If Next 'расчет по филиалу Cells(8; 1) = "Филиал" Cells(8; 1).Font.Bold = True Cells(8; 1).HorizontalAlignment = xlCenter Cells(8; 1).Font.Italic = False Cells(8; 1).Interior.ColorIndex = 2 For k = 1 To BumNum If DepoFil(k) <> 0 Then Cells(8; k + 1) = DepoFil(k) Else Cells(8; k + 1) = "" End If Cells(8; k + 1).Font.Bold = False Cells(8; k + 1).Font.Italic = False Cells(8; k + 1).Interior.ColorIndex = 2 Next For i = 1 To BumNum Cells(n; i + 1).Interior.ColorIndex = 40 s = 0 For k = 11 To n - 1 s = s + Cells(k; i + 1) Next Cells(n; i + 1).Value = s Next For i = 1 To BumNum Cells(9; i + 1) = Cells(7; i + 1) + Cells(8; i + 1) Next Cells(n; 1).Interior.ColorIndex = 40 Cells(n; 1) = "Итого 9998" Cells(n; 1).Font.Bold = True Cells(n; 1).Font.Italic = True Range("A1:Z200").Borders(xlLeft).LineStyle = xlNone Range("A1:Z200").Borders(xlRight).LineStyle = xlNone Range("A1:Z200").Borders(xlTop).LineStyle = xlNone Range("A1:Z200").Borders(xlBottom).LineStyle = xlNone Range("A1:Z200").BorderAround LineStyle:=xlNone Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlLeft).Weight = xlThin Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlRight).Weight = xlThin Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlTop).Weight = xlThin Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlBottom).Weight = xlThin Range(Cells(5; 1); Cells(n; BumNum + 1)).BorderAround Weight:=xlMedium Range(Cells(n + 1; 1); Cells(100; 30)).Delete shift:=xlToLeft Range(Cells(1; BumNum + 2); Cells(100; 30)).Delete shift:=xlToLeft If DialogPrint("Депо"; 1) Then Exit Sub Call EditOstBirga(DilerConst) End Sub '-------------------------------- Печать Отчеты клиентам ----------- Sub PrintOtchClient() Dim Sheet; Ost812 As Object Dim i; j; d; a; Col; m; MM; NN; MMM; k; b; q As Long Dim FlagBuy; FlagCell; FlagDeal; FlagDepo As Boolean Dim CliNum As Long Dim ComStr; StrComS As String Dim BumNum; z; z1; Index As Integer Dim s; sum; SumBuy; Ost; SumCom; ComBirga; ComDiler; ComSum As Double Dim Com As Double Dim OstIn; OstOut; OstBegin; OstEnd As Double Dim RowNum As Long Dim OstInDate; OstOutDate As String Dim DoFlag As Boolean Dim Auk As Boolean Set Sheet = Worksheets("Сделки") Sheet.Range("A2").Sort Key1:=Sheet.Range("A2"); Order1:=xlAscending; _ Key2:=Sheet.Range("B2"); Order2:=xlAscending; _ Key3:=Sheet.Range("D2"); Order3:=xlAscending; _ Header:=xlYes; OrderCustom:=1; _ MatchCase:=False; Orientation:=xlTopToBottom CurDate = Worksheets("Врем").Cells(1; 4) Worksheets("ОтчетыИнвесторам").Select i = 2 FlagDeal = False FlagBuy = True FlagCell = True NN = 29 ' начало m = NN Range(Cells(NN - 1; 2); Cells(NN + 200; 6)).Delete shift:=xlToLeft Rows(CStr(NN - 1) + ":" + CStr(NN - 1)).RowHeight = 28 Rows(CStr(NN - 1) + ":" + CStr(NN - 1)).WrapText = True Rows(CStr(NN - 1) + ":" + CStr(NN - 1)).HorizontalAlignment = xlCenter Rows(CStr(NN - 1) + ":" + CStr(NN - 1)).VerticalAlignment = xlBottom Cells(NN - 1; 2) = "№ выпуска" Cells(NN - 1; 3) = "Дата погашения" Cells(NN - 1; 4) = "Цена сделки" Cells(NN - 1; 5) = "Количество" Cells(NN - 1; 6) = "Сумма сделки" Cells(NN - 3; 3) = "Совершенные сделки на рынке РКО" Cells(NN - 3; 3).Font.Bold = True sum = 0 SumBuy = 0 SumCom = 0 ComBirga = 0 Call FormBum BumNum = Worksheets("Врем").Cells(1; 2) ReDim BumArray(BumNum) ReDim BumArrayV(BumNum) Index = CInt(InputBox("Введите номер 1-го ордера")) Do While Sheet.Cells(i; 1) <> Empty If Sheet.Cells(i; 1) = CurDate And Sheet.Cells(i; 2) <> DilerConst Then FlagDeal = True If FlagBuy And Sheet.Cells(i; 4) <> Empty Then Покупка = True CliNum = Sheet.Cells(i; 2) Cells(m; 2) = "Покупка" Cells(m; 2).HorizontalAlignment = xlLeft Range(Cells(m; 2); Cells(m; 6)).Interior.ColorIndex = 15 m = m + 1 MM = m FlagBuy = False End If If FlagCell And Sheet.Cells(i; 4) = Empty Then If Not FlagBuy Then s = 0 Col = 0 SumCom = 0 ComBirga = 0 For a = MM To m - 1 Cells(a; 6) = Cells(a; 4) * Cells(a; 5) * 10 If Cells(a; 4) <> 100 Then SumCom = SumCom + Cells(a; 4) * Cells(a; 5) * 10 ComBirga = ComBirga + _ CDbl(Format(Cells(a; 4) * Cells(a; 5) * 0,1 * Worksheets("Инфо").Cells(1; 2) + 0,001; "0,00")) Else Погашение = True End If Cells(a; 6).NumberFormat = "# ###" s = s + Cells(a; 6) Col = Col + Cells(a; 5) Next a sum = sum + s SumBuy = s Cells(m; 6) = s Cells(m; 6).NumberFormat = "# ###" Cells(m; 5) = Col Cells(m; 2) = "Итого" m = m + 1 End If CliNum = Sheet.Cells(i; 2) Cells(m; 2) = "Продажа" Продажа = True Cells(m; 2).HorizontalAlignment = xlLeft Range(Cells(m; 2); Cells(m; 6)).Interior.ColorIndex = 15 m = m + 1 MM = m FlagCell = False End If Cells(m; 2) = Sheet.Cells(i; 3) q = 2 While Worksheets("Бумаги").Cells(q; 1) <> Empty If Worksheets("Бумаги").Cells(q; 1) = Cells(m; 2) Then Cells(m; 3) = Worksheets("Бумаги").Cells(q; 3) Cells(m; 3).NumberFormat = "ДД.ММ.ГГ" End If q = q + 1 Wend If Sheet.Cells(i; 4) <> Empty Then Cells(m; 4) = Sheet.Cells(i; 4) Else Cells(m; 4) = Sheet.Cells(i; 5) End If Cells(m; 4).NumberFormat = "0,00" Cells(m; 5) = Sheet.Cells(i; 6) m = m + 1 If CliNum <> Sheet.Cells(i + 1; 2) Or Sheet.Cells(i + 1; 1) <> CurDate Then s = 0 Col = 0 For a = MM To m - 1 Cells(a; 6) = Cells(a; 4) * Cells(a; 5) * 10 If Cells(a; 4) <> 100 Then SumCom = SumCom + Cells(a; 4) * Cells(a; 5) * 10 ComBirga = ComBirga + _ CDbl(Format(Cells(a; 4) * Cells(a; 5) * 0,1 * Worksheets("Инфо").Cells(1; 2) + 0,001; "0,00")) Else Погашение = True End If Cells(a; 6).NumberFormat = "# ###,00" s = s + Cells(a; 6) Col = Col + Cells(a; 5) Next a sum = sum + s If FlagCell Then SumBuy = s Cells(m; 6) = s Cells(m; 6).NumberFormat = "# ###,00" Cells(m; 5) = Col Cells(m; 2) = "Итого" Cells(5; 4) = CliNum If CliNum = FilialConst Then Cells(5; 4) = DilerConst k = 2 While Worksheets("Клиенты").Cells(k; 1) <> Empty If Worksheets("Клиенты").Cells(k; 2) = CliNum Then Cells(4; 4) = Worksheets("Клиенты").Cells(k; 1) End If k = k + 1 Wend Range(Cells(NN - 1; 2); Cells(m; 6)).Borders(xlLeft).Weight = xlThin Range(Cells(NN - 1; 2); Cells(m; 6)).Borders(xlRight).Weight = xlThin Range(Cells(NN - 1; 2); Cells(m; 6)).Borders(xlTop).Weight = xlThin Range(Cells(NN - 1; 2); Cells(m; 6)).Borders(xlBottom).Weight = xlThin Range(Cells(NN - 1; 2); Cells(m; 6)).BorderAround Weight:=xlMedium For b = 1 To BumNum BumArray(b) = 0 BumArrayV(b) = 0 Next b = 2 While Worksheets("Сделки").Cells(b; 1) <> Empty If CurDate >= Worksheets("Сделки").Cells(b; 1) And _ CliNum = Worksheets("Сделки").Cells(b; 2) Then z = 0 For z1 = 1 To BumNum If Worksheets("Врем").Cells(z1; 1) = Worksheets("Сделки").Cells(b; 3) Then z = z1 Exit For End If Next If z <> 0 Then If Not IsEmpty(Worksheets("Сделки").Cells(b; 4)) Then If CurDate > Worksheets("Сделки").Cells(b; 1) Then BumArrayV(z) = BumArrayV(z) + Worksheets("Сделки").Cells(b; 6) End If BumArray(z) = BumArray(z) + Worksheets("Сделки").Cells(b; 6) Else If CurDate > Worksheets("Сделки").Cells(b; 1) Then BumArrayV(z) = BumArrayV(z) - Worksheets("Сделки").Cells(b; 6) End If BumArray(z) = BumArray(z) - Worksheets("Сделки").Cells(b; 6) End If End If End If b = b + 1 Wend ' M+4 MMM = m + 5 Rows(CStr(m + 1) + ":" + CStr(m + 200)).Delete FlagDepo = False For b = 1 To BumNum If BumArray(b) > 0 Or BumArrayV(b) > 0 Then FlagDepo = True Cells(MMM; 2) = Worksheets("Врем").Cells(b; 1) If BumArrayV(b) < BumArray(b) Then Cells(MMM; 4) = BumArray(b) - BumArrayV(b) Else If BumArrayV(b) > BumArray(b) Then Cells(MMM; 5) = BumArrayV(b) - BumArray(b) End If End If Cells(MMM; 3) = BumArrayV(b) Cells(MMM; 6) = BumArray(b) MMM = MMM + 1 End If Next If FlagDepo Then Rows(CStr(m + 4) + ":" + CStr(m + 4)).RowHeight = 28 Rows(CStr(m + 4) + ":" + CStr(m + 4)).WrapText = True Rows(CStr(m + 4) + ":" + CStr(m + 4)).HorizontalAlignment = xlCenter Rows(CStr(m + 4) + ":" + CStr(m + 4)).VerticalAlignment = xlBottom Cells(m + 4; 2) = "№ выпуска" Cells(m + 4; 3) = "Входящий остаток" Cells(m + 4; 4) = "Куплено" Cells(m + 4; 5) = "Продано/ Погашено" Cells(m + 4; 6) = "Исходящий остаток" Cells(m + 2; 3).Font.Bold = True Cells(m + 2; 3) = "Количество бумаг, принадлежащих Инвестору (штук)" Range(Cells(m + 4; 2); Cells(MMM - 1; 6)).Borders(xlLeft).Weight = xlThin Range(Cells(m + 4; 2); Cells(MMM - 1; 6)).Borders(xlRight).Weight = xlThin Range(Cells(m + 4; 2); Cells(MMM - 1; 6)).Borders(xlTop).Weight = xlThin Range(Cells(m + 4; 2); Cells(MMM - 1; 6)).Borders(xlBottom).Weight = xlThin Range(Cells(m + 4; 2); Cells(MMM - 1; 6)).BorderAround Weight:=xlMedium End If ' ------------------------------------------------------ ' - расчет остатков Set Ost812 = Worksheets("Остатки812") Ost812.Range("B2").Sort Key1:=Ost812.Range("B2"); Order1:=xlAscending; _ Key2:=Ost812.Range("A2"); Order2:=xlDescending; _ Header:=xlYes; OrderCustom:=1; _ MatchCase:=False; Orientation:=xlTopToBottom OstIn = 0 OstOut = 0 OstBegin = 0 OstInDate = "" OstOutDate = "" RowNum = 0 k = 2 DoFlag = True Do While Ost812.Cells(k; 1) <> Empty If Ost812.Cells(k; 2) = CliNum And DoFlag Then If Ost812.Cells(k; 1) < CurDate Then OstBegin = Ost812.Cells(k; 8) Else Do While Ost812.Cells(k; 1) <> Empty If Ost812.Cells(k; 2) <> CliNum Then Exit Do If Ost812.Cells(k; 1) = CurDate Then OstBegin = Ost812.Cells(k; 3) OstIn = Ost812.Cells(k; 4) OstInDate = Ost812.Cells(k; 5) OstOut = Ost812.Cells(k; 6) OstOutDate = Ost812.Cells(k; 7) RowNum = k Exit Do End If k = k + 1 Loop End If DoFlag = False End If k = k + 1 Loop If RowNum = 0 Then RowNum = k k = RowNum ' - начало таблицы With DialogSheets("ДиалогКлиент") .Labels(8).Text = Cells(4; 4) ' Клиент .Labels(9).Text = sum ' Сумма сделки .Labels(10).Text = CurDate ' Дата текущая .Labels(17).Text = CliNum If CliNum = FilialConst Then .Labels(17).Text = DilerConst .EditBoxes(1).Text = "0" ' Сумма списания .EditBoxes(1).InputType = xlNumber .EditBoxes(2).Text = CurDate ' Дата сделки .EditBoxes(7).Text = OstOutDate ' списано (дата) .EditBoxes(8).Text = OstOut ' списано (сумма) .EditBoxes(8).InputType = xlNumber .EditBoxes(9).Text = OstInDate ' перечислено (дата) .EditBoxes(10).Text = OstIn ' перечислено (сумма) .EditBoxes(10).InputType = xlNumber Com = 0,00015 Select Case SumCom Case Is < 36000 Com = 0,005 Case Is < 51000 Com = 0,004 Case Is < 101000 Com = 0,003 Case Is < 301000 Com = 0,002 Case Is < 501000 Com = 0,001 Case Is < 1001000 Com = 0,0005 Case Is < 3001000 Com = 0,00025 End Select If Cells(4; 4) = "Универсалбанк" Then Com = 0 .EditBoxes(3).Text = Com ' Комиссия дилера .EditBoxes(3).InputType = xlNumber .EditBoxes(4).Text = "0" ' Сумма вознаграждения дилера .EditBoxes(4).InputType = xlNumber .EditBoxes(5).Text = "" ' Запись о вознаграждении .EditBoxes(6).Text = OstBegin ' Остаток на 812 счете клиента .EditBoxes(6).InputType = xlNumber Cells(MMM + 3; 1) = "Начальник инвестиционно-аналитического отдела_________________" Cells(MMM + 3; 6) = "" Again: Просмотр = False ExitVar = False Button = False .Show If .EditBoxes(1).Text = "" Then .EditBoxes(1).Text = 0 If .EditBoxes(3).Text = "" Then .EditBoxes(3).Text = 0 If .EditBoxes(4).Text = "" Then .EditBoxes(4).Text = 0 If .EditBoxes(6).Text = "" Then .EditBoxes(6).Text = 0 If .EditBoxes(8).Text = "" Then .EditBoxes(8).Text = 0 If .EditBoxes(10).Text = "" Then .EditBoxes(10).Text = 0 Cells(21; 1) = .EditBoxes(5).Text ' Запись о вознаграждении Cells(21; 1).Font.Italic = True Cells(6; 4) = .EditBoxes(2).Text ' Дата сделки ' занесение данных в итоговую таблицу Cells(10; 6) = .EditBoxes(6).Text ' Входящий остаток OstBegin = .EditBoxes(6).Text Cells(14; 6) = SumBuy Cells(15; 6) = sum - SumBuy ComStr = Format(SumCom * .EditBoxes(3).Text; "0,00") ComDiler = CDbl(ComStr) Cells(16; 6) = ComBirga Cells(18; 6) = ComDiler Cells(20; 6) = .EditBoxes(4).Text Cells(11; 6) = .EditBoxes(8).Text OstOut = .EditBoxes(8).Text OstIn = .EditBoxes(10).Text Cells(12; 6) = .EditBoxes(10).Text Cells(13; 6) = .EditBoxes(6).Text - .EditBoxes(8).Text + .EditBoxes(10).Text Cells(11; 1) = "2.Списано на р/с / выдано наличными " + .EditBoxes(7).Text OstInDate = .EditBoxes(9).Text OstOutDate = .EditBoxes(7).Text Cells(12; 1) = "3.Перечислено на покупку " + .EditBoxes(9).Text Cells(22; 6) = 2 * SumBuy - sum + ComBirga + ComDiler Cells(23; 6) = .EditBoxes(1).Text Cells(24; 6) = .EditBoxes(6).Text - .EditBoxes(8).Text + .EditBoxes(10).Text - _ (2 * SumBuy - sum + ComBirga + ComDiler) - _ .EditBoxes(1).Text - .EditBoxes(4).Text OstEnd = Cells(24; 6) Ost812.Cells(k; 1) = CurDate Ost812.Cells(k; 2) = CliNum Ost812.Cells(k; 3) = OstBegin Ost812.Cells(k; 4) = OstIn Ost812.Cells(k; 5) = OstInDate Ost812.Cells(k; 6) = OstOut Ost812.Cells(k; 7) = OstOutDate Ost812.Cells(k; 8) = OstEnd Ost812.Cells(k; 9) = Cells(14; 6) + Cells(15; 6) Ost812.Cells(k; 10) = Cells(16; 6) Ost812.Cells(k; 11) = Cells(18; 6) Call EditOstBirga(CliNum) ' конец занесения данных If Просмотр Then Worksheets("ОтчетыИнвесторам").PrintPreview GoTo Again End If If Button Then ActiveWindow.SelectedSheets.PrintOut copies:=2 If ExitVar Then Exit Sub End With ' печать мемориальных ордеров Dim StrS As String Auk = False With DialogSheets("ДиалогОперация") .Show If .OptionButtons(1).Value = xlOn Then StrS = "Покупка" If .OptionButtons(2).Value = xlOn Then StrS = "Продажа" If .OptionButtons(3).Value = xlOn Then StrS = "Погашение" If .OptionButtons(4).Value = xlOn Then StrS = "Покупка / Продажа" If .OptionButtons(5).Value = xlOn Then StrS = "Покупка / Погашение" If .OptionButtons(5).Value = xlOn Then Auk = True End With Worksheets("Ордер").Select Dim Pos812 As Integer Dim Page; Page1 As Object Set Page = Worksheets("ОтчетыИнвесторам") Set Page1 = Worksheets("Клиенты") Pos812 = 2 While (Page1.Cells(Pos812; 1) <> Empty) And (Worksheets("Клиенты").Cells(Pos812; 2) <> CliNum) Pos812 = Pos812 + 1 Wend If Page.Cells(14; 6) - Page.Cells(15; 6) > 0 Then If MemoOrder(Index; Page.Cells(14; 6) - Page.Cells(15; 6); 6; 7; Pos812; _ StrS + " РКО за " + CStr(CurDate)) Then Exit Sub Index = Index + 1 Else If MemoOrder(Index; Page.Cells(15; 6) - Page.Cells(14; 6); 7; 6; Pos812; _ StrS + " РКО за " + CStr(CurDate)) Then Exit Sub Index = Index + 1 End If Dim SumS As Double SumS = Page.Cells(16; 6) + Page.Cells(18; 6) + Page.Cells(20; 6) If SumS > 0 Then StrS = "" If Page.Cells(18; 6) > 0 Then StrS = "Комиссия Дилера " + CStr(Page.Cells(18; 6)) + " в т.ч. НДС " + _ CStr(Format(Page.Cells(18; 6) / 6; "0,00")) If Page.Cells(16; 6) > 0 And Not Auk Then StrS = StrS + " возмещение ком. ВКБ " + CStr(Page.Cells(16; 6)) + " в т.ч. НДС " + _ CStr(Format(Page.Cells(16; 6) / 6; "0,00")) If CliNum = FilialConst Then If MemoOrder(Index; SumS; 6; 7; Pos812; StrS) Then Exit Sub Else If Auk Then StrS = StrS + " по приобретению на аукционе" If MemoOrder(Index; Page.Cells(18; 6) + Page.Cells(20; 6); 6; 12; Pos812; StrS) Then Exit Sub StrS = "Возмещение ком. ВКБ " + CStr(Page.Cells(16; 6)) + " в т.ч. НДС " + _ CStr(Format(Page.Cells(16; 6) / 6; "0,00")) Index = Index + 1 If MemoOrder(Index; Page.Cells(16; 6); 6; 8; Pos812; StrS) Then Exit Sub Else If MemoOrder(Index; SumS; 6; 8; Pos812; StrS) Then Exit Sub End If End If Index = Index + 1 End If If CliNum <> FilialConst Then If Len(StrComS) > 0 Then StrComS = StrComS + "," + CStr(Right(CliNum; 3)) Else StrComS = StrComS + CStr(Right(CliNum; 3)) End If End If If CliNum <> FilialConst Then ComSum = ComSum + Page.Cells(16; 6) Worksheets("ОтчетыИнвесторам").Select '--------------- Rows(CStr(m + 4) + ":" + CStr(m + 4)).RowHeight = 13,8 Rows(CStr(m + 4) + ":" + CStr(m + 4)).WrapText = False Rows(CStr(m + 4) + ":" + CStr(m + 4)).HorizontalAlignment = xlRight Rows(CStr(m + 4) + ":" + CStr(m + 4)).VerticalAlignment = xlBottom Range(Cells(NN; 2); Cells(NN + 200; 6)).Delete shift:=xlToLeft m = NN FlagBuy = True FlagCell = True ComBirga = 0 sum = 0 SumBuy = 0 SumCom = 0 End If End If i = i + 1 Loop If Not FlagDeal Then MsgBox "Сделок в текущий день не было" Else If ComSum > 0 Then Worksheets("Ордер").Select If MemoOrder(Index; ComSum; 9; 7; 2; _ "Комиссия ВКБ по инвесторам " + StrComS + " в т.ч. НДС " + _ CStr(Format(ComSum / 6; "0,00"))) Then Exit Sub End If End If End Sub '-------------------------------- Печать Отчеты недельные ---------- Sub PrintOtchWeek() Dim BumNum; CliNum; i; j; k; a; n; Sign; s As Integer Dim Flag As Boolean Dim Code As Long Dim Str As String Dim DepoFil() As Integer Dim Num As Integer CurDate = Worksheets("Врем").Cells(1; 4) Call FormBum Sheets("ОтчетНедельный").Select BumNum = Worksheets("Врем").Cells(1; 2) Num = 8 For i = 1 To BumNum Cells(6; i + 1) = Worksheets("Врем").Cells(i; 1) Cells(6; i + 1).Font.Bold = True Cells(6; i + 1).Interior.ColorIndex = 40 Cells(Num; i + 1).Interior.ColorIndex = 15 Cells(Num; i + 1) = "" Cells(5; i + 1).Interior.ColorIndex = 40 Next Cells(Num; 1).Interior.ColorIndex = 15 Cells(Num; 1) = "" Cells(5; 1).Interior.ColorIndex = 40 Cells(5; 1) = "" Cells(6; 1).Interior.ColorIndex = 40 Cells(6; 1).Font.Bold = True Cells(6; 1) = "№ бумаги" Cells(7; 1) = "Дилер" Cells(6; 1).HorizontalAlignment = xlCenter Cells(7; 1).HorizontalAlignment = xlCenter Cells(7; 1).Font.Bold = True CliNum = Worksheets("Врем").Cells(1; 3) ReDim DepoArray(CliNum; BumNum) a = 2 While Worksheets("Сделки").Cells(a; 1) <> Empty i = 1 While Worksheets("Клиенты").Cells(i + 1; 2) <> _ Worksheets("Сделки").Cells(a; 2) If Worksheets("Клиенты").Cells(i + 1; 2) = Empty Then MsgBox "Неверный номер клиента в Окне 'Сделки'" Exit Sub End If i = i + 1 Wend k = 0 For j = 1 To BumNum If Worksheets("Врем").Cells(j; 1) = Worksheets("Сделки").Cells(a; 3) Then k = j Exit For End If Next If k = 0 Then a = a + 1 GoTo NNN End If If Not IsEmpty(Worksheets("Сделки").Cells(a; 4)) Then Sign = 1 Else Sign = -1 End If If CurDate >= Worksheets("Сделки").Cells(a; 1) Then DepoArray(i; k) = DepoArray(i; k) + Sign * Worksheets("Сделки").Cells(a; 6) End If a = a + 1 NNN: Wend For k = 1 To BumNum DepoArray(1; k) = DepoArray(1; k) + DepoArray(2; k) DepoArray(2; k) = 0 Next k n = 7 For i = 1 To CliNum Flag = False For k = 1 To BumNum If DepoArray(i; k) > 0 Then Flag = True Next If Flag Then If n > 7 Then Str = Format(Worksheets("Клиенты").Cells(i + 1; 2); "0000000000") Str = Right(Str; 5) Cells(n; 1).NumberFormat = "@" Cells(n; 1).Font.Bold = True Cells(n; 1).HorizontalAlignment = xlCenter Cells(n; 1).Font.Italic = False Cells(n; 1).Interior.ColorIndex = 2 Cells(n; 1) = Str End If For k = 1 To BumNum If DepoArray(i; k) <> 0 Then Cells(n; k + 1) = DepoArray(i; k) Else Cells(n; k + 1) = "" End If Cells(n; k + 1).Font.Bold = False Cells(n; k + 1).Font.Italic = False Cells(n; k + 1).Interior.ColorIndex = 2 Next If n = 7 Then n = n + 2 Else n = n + 1 End If End If Next For i = 1 To BumNum Cells(n; i + 1).Interior.ColorIndex = 40 s = 0 For k = 9 To n - 1 s = s + Cells(k; i + 1) Next Cells(n; i + 1).Value = s Next Cells(n; 1).Interior.ColorIndex = 40 Cells(n; 1) = "Итого по инвесторам" Cells(n; 1).Font.Bold = True Cells(n; 1).Font.Italic = True Range("A1:Z200").Borders(xlLeft).LineStyle = xlNone Range("A1:Z200").Borders(xlRight).LineStyle = xlNone Range("A1:Z200").Borders(xlTop).LineStyle = xlNone Range("A1:Z200").Borders(xlBottom).LineStyle = xlNone Range("A1:Z200").BorderAround LineStyle:=xlNone Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlLeft).Weight = xlThin Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlRight).Weight = xlThin Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlTop).Weight = xlThin Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlBottom).Weight = xlThin Range(Cells(5; 1); Cells(n; BumNum + 1)).BorderAround Weight:=xlMedium Range(Cells(n + 1; 1); Cells(100; 30)).Delete shift:=xlToLeft Range(Cells(1; BumNum + 2); Cells(100; 30)).Delete shift:=xlToLeft Range("a2") = "на " + CStr(CurDate) Range(Cells(n + 2; 1); Cells(n + 3; BumNum + 1)).BorderAround Weight:=xlMedium Cells(n + 2; 1) = "Количество перечисленных облигаций на счета ""Депо""" Cells(n + 3; 1) = "без совершения сделок купли-продажи" Cells(n + 2; 1).Font.Bold = True Cells(n + 3; 1).Font.Bold = True Cells(n + 5; 1).Font.Size = 12 Cells(n + 5; 1) = "Ответственное лицо Дилера " + _ " _________________________ " Cells(n + 3; BumNum + 1) = 0 Cells(n + 3; BumNum + 1).Font.Bold = True If DialogPrint("ОтчетНедельный"; 2) Then Exit Sub End Sub '-------------------------------- Печать Отчеты Месячные ----------- Sub PrintOtchMonth() Dim DateBegin; DateEnd; DateMas() As Date Dim i; k; m; NumberClients; kk As Long Dim Sign; BumNum; Row; Col; Num; sum As Integer Dim DateFlag; Flag; CliInput(); BumInput() As Boolean Dim Bum(ConstMaxBum) As Long Dim mas() As Integer Dim Sheet As Object Dim Str As String With DialogSheets("ДиалогМесОтчет") .EditBoxes(1).InputType = xlDate .EditBoxes(2).InputType = xlDate .Show If Not Button Then Exit Sub If IsDate(.EditBoxes(1).Text) = False Or _ IsDate(.EditBoxes(2).Text) = False Then MsgBox "Неверно введены даты" Exit Sub End If DateBegin = CDate(.EditBoxes(1).Text) DateEnd = CDate(.EditBoxes(2).Text) If DateBegin >= DateEnd Then MsgBox "Даты не пересекаются" Exit Sub End If End With Set Sheet = Worksheets("Бумаги") i = 2 BumNum = 0 While Sheet.Cells(i; 1) <> Empty If (Sheet.Cells(i; 2) < DateBegin And Sheet.Cells(i; 3) > DateBegin) Or _ (Sheet.Cells(i; 2) < DateEnd And Sheet.Cells(i; 3) > DateEnd) Or _ (Sheet.Cells(i; 2) > DateBegin And Sheet.Cells(i; 3) < DateEnd) Then Bum(BumNum + 1) = Sheet.Cells(i; 1) BumNum = BumNum + 1 End If i = i + 1 Wend Set Sheet = Worksheets("Клиенты") i = 2 k = 0 While Sheet.Cells(i; 1) <> Empty If Sheet.Cells(i; 2) > k And Sheet.Cells(i; 2) <> FilialConst Then k = Sheet.Cells(i; 2) End If i = i + 1 Wend NumberClients = k - DilerConst DateFlag = True ReDim mas(NumberClients; BumNum * 7) ReDim DateMas(NumberClients; BumNum) ReDim CliInput(NumberClients) ReDim BumInput(BumNum) i = 2 Worksheets("Сделки").Select While Cells(i; 1) <> Empty If Cells(i; 2) <> DilerConst And Cells(i; 2) <> FilialConst Then If Cells(i; 1) < DateBegin Then Flag = True For k = 1 To BumNum ' поиск номера бумаги If Cells(i; 3) = Bum(k) Then Flag = False Exit For End If Next k If Flag Then GoTo cont Sign = 1 If IsEmpty(Cells(i; 4)) Then Sign = -1 mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 1) = _ mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 1) + Sign * Cells(i; 6) End If If Cells(i; 1) >= DateBegin And DateFlag Then For k = 1 To NumberClients For m = 1 To BumNum mas(k; (m - 1) * 7 + 2) = mas(k; (m - 1) * 7 + 1) Next m Next k DateFlag = False End If If Cells(i; 1) >= DateBegin And Cells(i; 1) <= DateEnd Then Flag = True For k = 1 To BumNum If Cells(i; 3) = Bum(k) Then Flag = False Exit For End If Next k If Flag Then GoTo cont If Cells(i; 7) <> "списание" And Cells(i; 7) <> "зачисление" Then If Not IsEmpty(Cells(i; 4)) Then mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 3) = _ mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 3) + Cells(i; 6) Else mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 4) = _ mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 4) + Cells(i; 6) End If If DateMas(Cells(i; 2) - DilerConst; k) <> Cells(i; 1) Then DateMas(Cells(i; 2) - DilerConst; k) = Cells(i; 1) mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 5) = _ mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 5) + 1 End If End If If Cells(i; 7) = "списание" Then mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 6) = _ mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 6) + Cells(i; 6) End If If Cells(i; 7) = "зачисление" Then mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 7) = _ mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 7) + Cells(i; 6) End If Sign = 1 If IsEmpty(Cells(i; 4)) Then Sign = -1 mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 2) = _ mas(Cells(i; 2) - DilerConst; (k - 1) * 7 + 2) + Sign * Cells(i; 6) End If End If cont: i = i + 1 Wend For i = 1 To NumberClients CliInput(i) = False For k = 1 To BumNum If mas(i; (k - 1) * 7 + 1) > 0 Or _ mas(i; (k - 1) * 7 + 2) > 0 Or _ mas(i; (k - 1) * 7 + 3) > 0 Or _ mas(i; (k - 1) * 7 + 4) > 0 Or _ mas(i; (k - 1) * 7 + 5) > 0 Or _ mas(i; (k - 1) * 7 + 6) > 0 Or _ mas(i; (k - 1) * 7 + 7) > 0 Then CliInput(i) = True Next k Next i For k = 1 To BumNum BumInput(k) = False For i = 1 To NumberClients If mas(i; (k - 1) * 7 + 1) > 0 Or _ mas(i; (k - 1) * 7 + 2) > 0 Or _ mas(i; (k - 1) * 7 + 3) > 0 Or _ mas(i; (k - 1) * 7 + 4) > 0 Or _ mas(i; (k - 1) * 7 + 5) > 0 Or _ mas(i; (k - 1) * 7 + 6) > 0 Or _ mas(i; (k - 1) * 7 + 7) > 0 Then BumInput(k) = True Next i Next k Worksheets("ОтчетМесячный").Select Range(Cells(7; 1); Cells(800; 22)).Delete shift:=xlToLeft Row = 4 Col = 2 Cells(2; 1) = "за период от " + CStr(DateBegin) + " до " + CStr(DateEnd) kk = 0 Flag = False For k = 1 To BumNum If BumInput(k) Then Cells(Row; Col) = Bum(k) Num = 0 For i = 1 To NumberClients If CliInput(i) Then If Col = 2 Then Str = Format(i; "0000000000") Str = Right(Str; 5) Cells(Row + Num + 3; Col - 1).NumberFormat = "@" Cells(Row + Num + 3; Col - 1).Font.Bold = True Cells(Row + Num + 3; Col - 1).HorizontalAlignment = xlCenter Cells(Row + Num + 3; Col - 1).Font.Italic = False Cells(Row + Num + 3; Col - 1).Interior.ColorIndex = 2 Cells(Row + Num + 3; Col - 1) = Str End If Cells(Row + Num + 3; Col) = mas(i; (k - 1) * 7 + 1) Cells(Row + Num + 3; Col + 1) = mas(i; (k - 1) * 7 + 2) Cells(Row + Num + 3; Col + 2) = mas(i; (k - 1) * 7 + 3) Cells(Row + Num + 3; Col + 3) = mas(i; (k - 1) * 7 + 4) Cells(Row + Num + 3; Col + 4) = mas(i; (k - 1) * 7 + 5) Cells(Row + Num + 3; Col + 5) = mas(i; (k - 1) * 7 + 6) Cells(Row + Num + 3; Col + 6) = mas(i; (k - 1) * 7 + 7) Num = Num + 1 End If Next i Col = Col + 7 kk = kk + 1 Flag = True End If If ((kk > 0) And (kk Mod 3 = 0) And Flag) Or k = BumNum Then Flag = False For i = 2 To 22 sum = 0 For m = 1 To NumberClients sum = sum + Cells(m + 6; i) Next m Cells(Num + 7; i) = sum Cells(Num + 7; i).Font.Bold = True Cells(Num + 7; i).Interior.ColorIndex = 15 Next i Cells(Num + 7; 1) = "Итого" Cells(Num + 7; 1).Font.Bold = True Cells(Num + 7; 1).HorizontalAlignment = xlCenter Cells(Num + 7; 1).Interior.ColorIndex = 15 Range(Cells(7; 1); Cells(Num + 7; 22)).Borders(xlLeft).Weight = xlThin Range(Cells(7; 1); Cells(Num + 7; 22)).Borders(xlRight).Weight = xlThin Range(Cells(7; 1); Cells(Num + 7; 22)).Borders(xlTop).Weight = xlThin Range(Cells(7; 1); Cells(Num + 7; 22)).Borders(xlBottom).Weight = xlThin Range(Cells(7; 1); Cells(Num + 7; 22)).BorderAround Weight:=xlMedium Range(Cells(7; 9); Cells(Num + 7; 15)).BorderAround Weight:=xlMedium Cells(Num + 10; 10) = "Ответственное лицо Дилера______________________________" If DialogPrint("ОтчетМесячный"; 2) Then Exit Sub Row = 4 Col = 2 Cells(Row; Col) = " " Cells(Row; Col + 7) = " " Cells(Row; Col + 14) = " " Range(Cells(7; 1); Cells(800; 22)).Delete shift:=xlToLeft End If Next k Worksheets("СписокКлиентов").Select Num = 5 Range(Cells(Num; 1); Cells(100; 3)).Delete shift:=xlToLeft For i = 1 To NumberClients If CliInput(i) Then k = 2 While Sheet.Cells(k; 2) <> DilerConst + i k = k + 1 Wend Cells(Num; 1) = Sheet.Cells(k; 1) Cells(Num; 2) = Sheet.Cells(k; 2) Cells(Num; 3) = Sheet.Cells(k; 3) Cells(Num; 1).HorizontalAlignment = xlLeft Cells(Num; 2).HorizontalAlignment = xlCenter Cells(Num; 3).HorizontalAlignment = xlCenter Cells(Num; 3).WrapText = True Num = Num + 1 End If Next i Cells(2; 1) = "за период от " + CStr(DateBegin) + " до " + CStr(DateEnd) Range(Cells(5; 1); Cells(Num - 1; 3)).Borders(xlLeft).Weight = xlThin Range(Cells(5; 1); Cells(Num - 1; 3)).Borders(xlRight).Weight = xlThin Range(Cells(5; 1); Cells(Num - 1; 3)).Borders(xlTop).Weight = xlThin Range(Cells(5; 1); Cells(Num - 1; 3)).Borders(xlBottom).Weight = xlThin Range(Cells(5; 1); Cells(Num - 1; 3)).BorderAround Weight:=xlMedium Range(Cells(5; 2); Cells(Num - 1; 2)).BorderAround Weight:=xlMedium Cells(Num + 2; 2) = "Ответственное лицо Дилера______________________________" With DialogSheets("ДиалогПечать") AgainMonthOtch1: Просмотр = False ExitVar = False Button = False .Show If Просмотр Then Worksheets("СписокКлиентов").PrintPreview GoTo AgainMonthOtch1 End If If ExitVar Then Exit Sub If Button Then ActiveWindow.SelectedSheets.PrintOut copies:=2 End With End Sub '-------------------------------- Перечисление/списание биржа ------ Sub GotoBirga() Dim Sheet As Object Dim OstIn; OstOut; OstBegin; CliNum As Double Dim RowNum; k As Long Dim DoFlag As Boolean Set Sheet = Worksheets("ОстаткиБиржа") Sheet.Range("B2").Sort Key1:=Sheet.Range("B2"); Order1:=xlAscending; _ Key2:=Sheet.Range("A2"); Order2:=xlDescending; _ Header:=xlYes; OrderCustom:=1; _ MatchCase:=False; Orientation:=xlTopToBottom Sheet.Select CurDate = Worksheets("Врем").Cells(1; 4) k = 2 While Worksheets("Клиенты").Cells(k; 1) <> Empty k = k + 1 Wend With DialogSheets("ДиалогБиржа") .DropDowns.ListFillRange = "Клиенты!$B$2:$B$" + CStr(k - 1) .EditBoxes(1).InputType = xlNumber .EditBoxes(2).InputType = xlNumber .Show If Button = False Then MsgBox "Данные не занесены" Exit Sub End If CliNum = .DropDowns(1).List(.DropDowns(1).ListIndex) If .EditBoxes(1).Text = "" Then OstIn = 0 Else OstIn = .EditBoxes(1).Text End If If .EditBoxes(2).Text = "" Then OstOut = 0 Else OstOut = .EditBoxes(2).Text End If OstBegin = 0 k = 2 DoFlag = True Do While Cells(k; 1) <> Empty If Cells(k; 2) = CliNum And DoFlag Then If Cells(k; 1) < CurDate Then OstBegin = Cells(k; 6) Else MsgBox "Невозможен ввод информации" Exit Sub End If DoFlag = False End If k = k + 1 Loop Cells(k; 1) = CurDate Cells(k; 2) = CliNum Cells(k; 3) = OstBegin Cells(k; 4) = OstIn Cells(k; 5) = OstOut Cells(k; 6) = OstBegin + OstIn - OstOut End With End Sub '-------------------------------- Просмотр остатков 812 ------------ Sub PrintOst() Dim Sheet; Sheet1 As Object Dim i; k; CliNum As Long Dim Ost As Double CurDate = Worksheets("Врем").Cells(1; 4) i = 2 While Worksheets("Сделки").Cells(i; 1) <> Empty If Worksheets("Сделки").Cells(i; 1) = CurDate Then Call EditOstBirga(Worksheets("Сделки").Cells(i; 2)) End If i = i + 1 Wend Set Sheet = Worksheets("Остатки812") Set Sheet1 = Worksheets("ОстаткиБиржа") Sheets("Клиенты").Select i = 2 Sheet.Range("B2").Sort Key1:=Sheet.Range("B2"); Order1:=xlAscending; _ Key2:=Sheet.Range("A2"); Order2:=xlDescending; _ Header:=xlYes; OrderCustom:=1; _ MatchCase:=False; Orientation:=xlTopToBottom Sheet1.Range("B2").Sort Key1:=Sheet1.Range("B2"); Order1:=xlAscending; _ Key2:=Sheet1.Range("A2"); Order2:=xlDescending; _ Header:=xlYes; OrderCustom:=1; _ MatchCase:=False; Orientation:=xlTopToBottom While Cells(i; 2) <> Empty CliNum = Cells(i; 2) k = 2 Do If Sheet.Cells(k; 1) = Empty Then Ost = 0 Exit Do End If If Sheet.Cells(k; 2) = CliNum Then Ost = Sheet.Cells(k; 8) Exit Do End If k = k + 1 Loop Cells(i; 4) = Ost k = 2 Do If Sheet1.Cells(k; 1) = Empty Then Ost = 0 Exit Do End If If Sheet1.Cells(k; 2) = CliNum Then Ost = Sheet1.Cells(k; 6) Exit Do End If k = k + 1 Loop Cells(i; 5) = Ost i = i + 1 Wend End Sub '-------------------------------- Печать портфель ------------------ Sub PrintPortfel() Dim Sheet As Object Dim i; k; BumNum; m As Long Dim Bum(ConstMaxBum); DatePog(ConstMaxBum) As Long Dim Volume(); BiginIndex(); dates(); V() As Integer Dim Price(); BumPrice(); DohPog(); DohPriobr() As Double Dim DateMas() As Date Dim Flag; BumIndex() As Boolean Dim SumPog1(); SumPog2(); SumPriobr1(); SumPriobr2() As Double Dim SumPog11; SumPriobr11; SumPog22; SumPriobr22 As Double Dim BumVol() As Integer Dim AllVol As Long Dim PortfelCost; PortfelBalance As Double CurDate = Worksheets("Врем").Cells(1; 4) Set Sheet = Worksheets("Бумаги") i = 2 BumNum = 0 While Sheet.Cells(i; 1) <> Empty If (Sheet.Cells(i; 2) <= CurDate And Sheet.Cells(i; 3) > CurDate) Then Bum(BumNum + 1) = Sheet.Cells(i; 1) DatePog(BumNum + 1) = Sheet.Cells(i; 3) BumNum = BumNum + 1 End If i = i + 1 Wend Worksheets("Сделки").Select Range("B2").Sort Key1:=Range("A2"); Order1:=xlAscending; _ Key2:=Range("D2"); Order2:=xlAscending; _ Header:=xlYes; OrderCustom:=1; _ MatchCase:=False; Orientation:=xlTopToBottom ReDim Volume(BumNum; MaxCount) ReDim Price(BumNum; MaxCount) ReDim DateMas(BumNum; MaxCount) ReDim DohPog(BumNum; MaxCount) ReDim DohPriobr(BumNum; MaxCount) ReDim dates(BumNum); V(BumNum); BeginIndex(BumNum) ReDim BumIndex(BumNum); BumPrice(BumNum) ReDim SumPog1(BumNum); SumPog2(BumNum); SumPriobr1(BumNum); SumPriobr2(BumNum) ReDim BumVol(BumNum) For i = 1 To BumNum dates(i) = 1 Next i i = 2 While Cells(i; 1) <> Empty If Cells(i; 2) = DilerConst And Cells(i; 7) <> "списание" _ And Cells(i; 7) <> "зачисление" Then Flag = True For k = 1 To BumNum ' поиск номера бумаги If Cells(i; 3) = Bum(k) Then Flag = False Exit For End If Next k If Flag Then GoTo cont If Cells(i; 1) <= CurDate Then If Not IsEmpty(Cells(i; 4)) Then Volume(k; dates(k)) = Cells(i; 6) Price(k; dates(k)) = Cells(i; 4) DateMas(k; dates(k)) = Cells(i; 1) dates(k) = dates(k) + 1 V(k) = V(k) + Cells(i; 6) Else V(k) = V(k) - Cells(i; 6) End If End If End If cont: i = i + 1 Wend For k = 1 To BumNum For i = dates(k) To 1 Step -1 If V(k) > Volume(k; i) Then V(k) = V(k) - Volume(k; i) Else Volume(k; i) = V(k) BeginIndex(k) = i Exit For End If Next i Next k For k = 1 To BumNum BumIndex(k) = False If V(k) > 0 Then BumIndex(k) = True Next k i = 2 While Cells(i; 1) <= CurDate And Cells(i; 1) <> Empty If (Cells(i; 1) = CurDate And Cells(i; 2) = DilerConst) _ And (Cells(i; 7) <> "зачисление" And Cells(i; 7) <> "списание") Then For k = 1 To BumNum If Cells(i; 3) = Bum(k) Then BumIndex(k) = True End If Next k End If i = i + 1 Wend i = 2 Set Sheet = Worksheets("Биржа") Flag = True While Sheet.Cells(i; 1) <> Empty If Sheet.Cells(i; 1) = CurDate Then Flag = False For k = 1 To BumNum If Sheet.Cells(i; 2) = Bum(k) Then If Sheet.Cells(i; 6) > 0 Then BumPrice(k) = Sheet.Cells(i; 6) Else BumPrice(k) = 0 End If End If Next k End If i = i + 1 Wend If Flag Then MsgBox "Биржевой информации нет. Портфель сформировать невозможно." Exit Sub End If Worksheets("Портфель1").Select Cells(4; 3) = CurDate Range("A7:H200").Delete shift:=xlToLeft m = 7 PortfelCost = 0 PortfelBalance = 0 For k = 1 To BumNum If Volume(k; BeginIndex(k)) > 0 Then For i = BeginIndex(k) To dates(k) If Volume(k; i) > 0 Then Cells(m; 1) = Bum(k) Cells(m; 1).NumberFormat = "0" Cells(m; 2) = DateMas(k; i) Cells(m; 2).NumberFormat = "ДД.ММ.ГГ" Cells(m; 3) = Price(k; i) Cells(m; 3).NumberFormat = "0,00" Cells(m; 4) = Volume(k; i) Cells(m; 4).NumberFormat = "0" DohPog(k; i) = (100 / Price(k; i) - 1) * 36500 / (DatePog(k) - DateMas(k; i)) Cells(m; 5) = DohPog(k; i) Cells(m; 5).NumberFormat = "0,00" Cells(m; 8).NumberFormat = "0" Dim tmp As Long tmp = CurDate - DateMas(k; i) Cells(m; 8) = tmp PortfelBalance = PortfelBalance + Price(k; i) * Volume(k; i) If BumPrice(k) > 0 Then PortfelCost = PortfelCost + BumPrice(k) * Volume(k; i) Else PortfelCost = PortfelCost + Price(k; i) * Volume(k; i) End If If BumPrice(k) > 0 Then Cells(m; 6) = BumPrice(k) Cells(m; 6).NumberFormat = "0,00" If CurDate <> DateMas(k; i) Then DohPriobr(k; i) = (BumPrice(k) / Price(k; i) - 1) * 36500 / (CurDate - DateMas(k; i)) Cells(m; 7) = DohPriobr(k; i) Cells(m; 7).NumberFormat = "0,00" End If End If m = m + 1 End If Next i Range(Cells(m; 1); Cells(m; 8)).Interior.ColorIndex = 15 m = m + 1 End If Next k Range(Cells(7; 1); Cells(m - 1; 8)).Borders(xlLeft).Weight = xlThin Range(Cells(7; 1); Cells(m - 1; 8)).Borders(xlRight).Weight = xlThin Range(Cells(7; 1); Cells(m - 1; 8)).Borders(xlTop).Weight = xlThin Range(Cells(7; 1); Cells(m - 1; 8)).Borders(xlBottom).Weight = xlThin Range(Cells(7; 1); Cells(m - 1; 8)).BorderAround Weight:=xlMedium If DialogPrint("Портфель1"; 1) Then Exit Sub Worksheets("Портфель2").Select Cells(4; 3) = CurDate SumPog11 = 0 SumPog22 = 0 SumPriobr11 = 0 SumPriobr22 = 0 AllVol = 0 m = 7 Range("A7:H200").Delete shift:=xlToLeft For k = 1 To BumNum If Volume(k; BeginIndex(k)) > 0 Then SumPog1(k) = 0 SumPog2(k) = 0 SumPriobr1(k) = 0 SumPriobr2(k) = 0 BumVol(k) = 0 For i = BeginIndex(k) To dates(k) If Volume(k; i) > 0 Then SumPog1(k) = SumPog1(k) + DohPog(k; i) * Volume(k; i) * (DatePog(k) - DateMas(k; i)) SumPog2(k) = SumPog2(k) + Volume(k; i) * (DatePog(k) - DateMas(k; i)) If CurDate <> DateMas(k; i) Then SumPriobr1(k) = SumPriobr1(k) + DohPriobr(k; i) * Volume(k; i) * (CurDate - DateMas(k; i)) SumPriobr2(k) = SumPriobr2(k) + Volume(k; i) * (CurDate - DateMas(k; i)) End If SumPog11 = SumPog11 + SumPog1(k) SumPog22 = SumPog22 + SumPog2(k) SumPriobr11 = SumPriobr11 + SumPriobr1(k) SumPriobr22 = SumPriobr22 + SumPriobr2(k) BumVol(k) = BumVol(k) + Volume(k; i) AllVol = AllVol + Volume(k; i) End If Next i Cells(m; 1) = Bum(k) Cells(m; 1).NumberFormat = "0" Cells(m; 2) = BumVol(k) Cells(m; 2).NumberFormat = "0" Cells(m; 3) = SumPog1(k) / SumPog2(k) Cells(m; 3).NumberFormat = "0,00" If SumPriobr2(k) > 0 And SumPriobr1(k) > 0 Then Cells(m; 4) = SumPriobr1(k) / SumPriobr2(k) Cells(m; 4).NumberFormat = "0,00" End If m = m + 1 End If Next k Cells(m; 1) = "Итого" Cells(m; 1).Font.Bold = True Cells(m; 1).HorizontalAlignment = xlCenter Cells(m; 2) = AllVol Cells(m; 2).NumberFormat = "0" Cells(m; 3) = SumPog11 / SumPog22 Cells(m; 3).NumberFormat = "0,00" Cells(m; 4) = SumPriobr11 / SumPriobr22 Cells(m; 4).NumberFormat = "0,00" Range(Cells(m; 1); Cells(m; 4)).Interior.ColorIndex = 15 Range(Cells(7; 1); Cells(m; 4)).Borders(xlLeft).Weight = xlThin Range(Cells(7; 1); Cells(m; 4)).Borders(xlRight).Weight = xlThin Range(Cells(7; 1); Cells(m; 4)).Borders(xlTop).Weight = xlThin Range(Cells(7; 1); Cells(m; 4)).Borders(xlBottom).Weight = xlThin Range(Cells(7; 1); Cells(m; 4)).BorderAround Weight:=xlMedium Range(Cells(m; 1); Cells(m; 4)).BorderAround Weight:=xlMedium Cells(m + 1; 1) = "Стоимость портфеля по балансу" Cells(m + 2; 1) = "Текущая стоимость потфеля" Cells(m + 1; 1).Font.Bold = True Cells(m + 2; 1).Font.Bold = True Range(Cells(m + 1; 1); Cells(m + 2; 4)).BorderAround Weight:=xlMedium Cells(m + 1; 4) = PortfelBalance * 10 Cells(m + 1; 4).NumberFormat = "### ### ###,00" Cells(m + 1; 4).Font.Bold = True Cells(m + 2; 4) = PortfelCost * 10 Cells(m + 2; 4).NumberFormat = "### ### ###,00" Cells(m + 2; 4).Font.Bold = True If DialogPrint("Портфель2"; 1) Then Exit Sub End Sub '-------------------------------- Печать Журнала лицевого учета --------- Sub PrintMagazine() Dim Sheet As Object Dim i; k; BumNum; m; m1; j As Long Dim Bum(ConstMaxBum) As Long Dim Volume(); BiginIndex(); dates(); V(); Vol As Integer Dim sum; Price() As Double Dim DateMas() As Date Dim Flag; BumIndex() As Boolean Dim ComBirga; ComMas(); MagMas(); Mag(4) As Double CurDate = Worksheets("Врем").Cells(1; 4) i = 2 Flag = True Do While Worksheets("Сделки").Cells(i; 1) <> Empty If Worksheets("Сделки").Cells(i; 1) = CurDate And _ Worksheets("Сделки").Cells(i; 2) = DilerConst Then Flag = False Exit Do End If i = i + 1 Loop If Flag Then MsgBox "Сделок в текущий день не было" Exit Sub End If Set Sheet = Worksheets("Бумаги") i = 2 BumNum = 0 While Sheet.Cells(i; 1) <> Empty If (Sheet.Cells(i; 2) <= CurDate And Sheet.Cells(i; 3) >= CurDate) Then Bum(BumNum + 1) = Sheet.Cells(i; 1) BumNum = BumNum + 1 End If i = i + 1 Wend Worksheets("Сделки").Select Range("B2").Sort Key1:=Range("A2"); Order1:=xlAscending; _ Key2:=Range("D2"); Order2:=xlAscending; _ Header:=xlYes; OrderCustom:=1; _ MatchCase:=False; Orientation:=xlTopToBottom ReDim Volume(BumNum; MaxCount) ReDim Price(BumNum; MaxCount) ReDim DateMas(BumNum; MaxCount) ReDim dates(BumNum); V(BumNum); BeginIndex(BumNum) ReDim BumIndex(BumNum); ComMas(BumNum) ReDim MagMas(BumNum; 4) For i = 1 To BumNum ComMas(i) = 0 dates(i) = 1 Next i i = 2 While Cells(i; 1) <> Empty And CurDate > Cells(i; 1) If Cells(i; 2) = DilerConst And Cells(i; 7) <> "списание" _ And Cells(i; 7) <> "зачисление" Then Flag = True For k = 1 To BumNum ' поиск номера бумаги If Cells(i; 3) = Bum(k) Then Flag = False Exit For End If Next k If Flag Then GoTo cont If Not IsEmpty(Cells(i; 4)) Then Volume(k; dates(k)) = Cells(i; 6) Price(k; dates(k)) = Cells(i; 4) DateMas(k; dates(k)) = Cells(i; 1) dates(k) = dates(k) + 1 V(k) = V(k) + Cells(i; 6) Else V(k) = V(k) - Cells(i; 6) End If End If cont: i = i + 1 Wend For k = 1 To BumNum For i = dates(k) To 1 Step -1 If V(k) > Volume(k; i) Then V(k) = V(k) - Volume(k; i) Else Volume(k; i) = V(k) BeginIndex(k) = i Exit For End If Next i Next k For k = 1 To BumNum BumIndex(k) = False If V(k) > 0 Then BumIndex(k) = True Next k ComBirga = Worksheets("Инфо").Cells(1; 2) i = 2 While Cells(i; 1) <> Empty If (Cells(i; 1) = CurDate And Cells(i; 2) = DilerConst) _ And (Cells(i; 7) <> "зачисление" And Cells(i; 7) <> "списание") Then For k = 1 To BumNum If Cells(i; 3) = Bum(k) Then BumIndex(k) = True If Not IsEmpty(Cells(i; 4)) Then ComMas(k) = ComMas(k) + Format(Cells(i; 4) * Cells(i; 6) * ComBirga * 0,1 + 0,0001; "0,00") Else If Cells(i; 5) <> 100 Then ComMas(k) = ComMas(k) + Format(Cells(i; 5) * Cells(i; 6) * ComBirga * 0,1 + 0,0001; "0,00") End If End If End If Next k End If i = i + 1 Wend Set Sheet = Worksheets("Сделки") Worksheets("Журнал лицевого учета").Select Cells(5; 1) = CurDate Cells(49; 2) = ComBirga Покупка = False Продажа = False Vol = 0 sum = 0 For k = 1 To BumNum If BumIndex(k) Then m = 7 Range("A7:C43").ClearContents Range("E7:G43").ClearContents Vol = 0 sum = 0 For i = BeginIndex(k) To dates(k) If Volume(k; i) > 0 Then Cells(m; 1) = DateMas(k; i) Cells(m; 2) = Volume(k; i) Cells(m; 3) = Format(Price(k; i); "0,00") Vol = Vol + Volume(k; i) sum = sum + Format(Price(k; i); "0,00") * Volume(k; i) * 10 m = m + 1 End If Next i Cells(6; 2) = Vol Cells(6; 4) = sum Cells(49; 3) = ComMas(k) Cells(5; 3) = CStr(Bum(k)) + "MFTS" i = 2 m1 = 7 j = BeginIndex(k) While Sheet.Cells(i; 1) <> Empty If Sheet.Cells(i; 1) = CurDate And Sheet.Cells(i; 3) = Bum(k) And _ Sheet.Cells(i; 7) <> "зачисление" And Sheet.Cells(i; 7) <> "списание" And _ Sheet.Cells(i; 2) = DilerConst Then If Not IsEmpty(Sheet.Cells(i; 4)) Then Покупка = True Cells(m; 1) = Sheet.Cells(i; 1) Cells(m; 2) = Sheet.Cells(i; 6) Cells(m; 3) = Sheet.Cells(i; 4) Volume(k; dates(k)) = Sheet.Cells(i; 6) Price(k; dates(k)) = Sheet.Cells(i; 4) DateMas(k; dates(k)) = Sheet.Cells(i; 4) dates(k) = dates(k) + 1 m = m + 1 Else Продажа = True Vol = Sheet.Cells(i; 6) If Vol < Volume(k; j) Then Cells(m1; 5) = Vol Cells(m1; 6) = Format(Price(k; j); "0,00") Cells(m1; 7) = Sheet.Cells(i; 5) Volume(k; j) = Volume(k; j) - Sheet.Cells(i; 6) m1 = m1 + 1 Else If Volume(k; j) = 0 Then j = j + 1 While Vol > Volume(k; j) And Volume(k; j) <> Empty Cells(m1; 5) = Volume(k; j) Cells(m1; 6) = Format(Price(k; j); "0,00") Cells(m1; 7) = Sheet.Cells(i; 5) Vol = Vol - Volume(k; j) j = j + 1 m1 = m1 + 1 Wend If Volume(k; j) <> Empty Then Cells(m1; 5) = Vol Cells(m1; 6) = Format(Price(k; j); "0,00") Cells(m1; 7) = Sheet.Cells(i; 5) Volume(k; j) = Volume(k; j) - Vol m1 = m1 + 1 End If End If End If End If i = i + 1 Wend no_do: MagMas(k; 1) = Format(Cells(46; 3); "0,00") MagMas(k; 2) = Format(Cells(47; 3); "0,00") MagMas(k; 3) = Format(Cells(48; 3); "0,00") MagMas(k; 4) = Format(Cells(45; 4); "0,00") If DialogPrint("Журнал лицевого учета"; 1) Then Exit Sub End If Next k ' Формирование журнала оборотов Worksheets("ЖурналОборотов").Select Cells(6; 1) = CurDate Range(Cells(7; 1); Cells(100; 6)).Delete shift:=xlToLeft m = 7 For k = 1 To BumNum If BumIndex(k) Then Cells(m; 1) = CStr(Bum(k)) + "MFTS" Cells(m; 2) = MagMas(k; 1) Cells(m; 3) = MagMas(k; 2) Cells(m; 4) = MagMas(k; 3) Cells(m; 5) = MagMas(k; 4) Cells(m; 6) = ComMas(k) Cells(m; 1).Font.Bold = True Cells(m; 2).NumberFormat = "0,00" Cells(m; 3).NumberFormat = "0,00" Cells(m; 4).NumberFormat = "0,00" Cells(m; 5).NumberFormat = "0,00" Cells(m; 6).NumberFormat = "0,00" m = m + 1 End If Next k For i = 2 To 6 sum = 0 For m1 = 7 To m - 1 sum = sum + Cells(m1; i) Next m1 Cells(m; i) = sum Cells(m; i).NumberFormat = "0,00" Next i Mag(1) = Cells(m; 2) Mag(2) = Cells(m; 3) Mag(3) = Cells(m; 4) Mag(4) = Cells(m; 6) If Cells(m; 2) > 0 Then Cells(m + 1; 2) = "Дт" + S192 If Cells(m; 2) < 0 Then Cells(m + 1; 2) = "Кт" + S192 If Cells(m; 3) > 0 Then Cells(m + 1; 3) = "Дт" + S904 If Cells(m; 3) < 0 Then Cells(m + 1; 3) = "Кт" + S904 If Cells(m; 4) > 0 Then Cells(m + 1; 4) = "Кт" + S960 If Cells(m; 4) < 0 Then Cells(m + 1; 4) = "Дт" + S970 Cells(m + 1; 6) = "Дт" + S970 Range(Cells(m + 1; 2); Cells(m + 2; 6)).HorizontalAlignment = xlCenter Range(Cells(m + 1; 1); Cells(m + 1; 6)).Interior.ColorIndex = 15 Cells(m + 2; 6) = "Кт" + S904 Cells(m + 2; 6).Interior.ColorIndex = 15 Range(Cells(7; 1); Cells(m - 1; 6)).Borders(xlRight).Weight = xlThin Range(Cells(m; 1); Cells(m; 6)).Borders(xlRight).LineStyle = xlDouble Range(Cells(m; 1); Cells(m; 6)).Borders(xlLeft).LineStyle = xlDouble Range(Cells(m; 1); Cells(m; 6)).Borders(xlTop).LineStyle = xlDouble Range(Cells(m; 1); Cells(m; 6)).Borders(xlBottom).LineStyle = xlDouble Cells(m + 2; 4) = "Подпись ответственного" Cells(m + 3; 4) = "сотрудника" Range(Cells(m + 2; 4); Cells(m + 3; 4)).Font.Size = 8 Range(Cells(m + 2; 4); Cells(m + 3; 4)).HorizontalAlignment = xlLeft Range(Cells(7; 1); Cells(m + 4; 6)).BorderAround Weight:=xlMedium Range(Cells(m + 2; 3); Cells(m + 4; 3)).Borders(xlRight).Weight = xlThin Range(Cells(m + 1; 1); Cells(m + 1; 5)).Borders(xlBottom).Weight = xlThin Cells(m + 2; 6).Borders(xlLeft).Weight = xlThin Cells(m + 2; 6).Borders(xlBottom).Weight = xlThin If DialogPrint("ЖурналОборотов"; 1) Then Exit Sub ' печать мемориального ордера Dim StrS As String With DialogSheets("ДиалогОперация") .Show If .OptionButtons(1).Value = xlOn Then StrS = "Покупка" If .OptionButtons(2).Value = xlOn Then StrS = "Продажа" If .OptionButtons(3).Value = xlOn Then StrS = "Погашение" If .OptionButtons(4).Value = xlOn Then StrS = "Покупка / Продажа" If .OptionButtons(5).Value = xlOn Then StrS = "Покупка / Погашение" End With Worksheets("Ордер").Select i = CInt(InputBox("Введите номер 1-го ордера")) If Mag(1) > 0 Then If Mag(2) < 0 Then If MemoOrder(i; min(Mag(1); Mag(2)); S192; S904; 0; _ StrS + " РКО за " + CStr(CurDate)) Then Exit Sub i = i + 1 End If If Mag(3) > 0 Then If MemoOrder(i; min(Mag(1); Mag(3)); S192; S960; 0; _ "Доход от продажи РКО за " + CStr(CurDate)) Then Exit Sub i = i + 1 End If End If If Mag(2) > 0 Then If Mag(1) < 0 Then If MemoOrder(i; min(Mag(2); Mag(1)); S904; S192; 0; _ StrS + " РКО за " + CStr(CurDate)) Then Exit Sub i = i + 1 End If If Mag(3) > 0 Then If MemoOrder(i; min(Mag(2); Mag(3)); S904; S960; 0; _ "Доход от продажи РКО за " + CStr(CurDate)) Then Exit Sub i = i + 1 End If End If If Mag(3) < 0 Then If Mag(1) < 0 Then If MemoOrder(i; min(Mag(3); Mag(1)); SR970; S192; 0; _ "Отрицательная разница от продажи РКО за " + CStr(CurDate)) Then Exit Sub i = i + 1 End If If Mag(2) < 0 Then If MemoOrder(i; min(Mag(3); Mag(2)); SR970; S904; 0; _ "Отрицательная разница от продажи РКО за " + CStr(CurDate)) Then Exit Sub i = i + 1 End If End If If Format(Mag(4)) > 0 Then If MemoOrder(i; Mag(4); S970; S904; 0; _ "Комиссия ВКБ в т.ч. НДС " + CStr(Format(Mag(4) / 6; "0,00"))) Then Exit Sub End If End Sub '-------------------------------------------- Memo Order Function MemoOrder(Num; sum As Double; n1; n2; Pos As Integer; Order As String) Dim i As Integer Dim Flag As Boolean Dim Str; Str1 As String Str1 = "" Str = CStr(sum) Str = Format(Str; "000000000000,00") Flag = False For i = 1 To Len(Str) If Mid(Str; i; 1) = "," Then If CInt(Right(Str; 2)) = 0 Then Str1 = Str1 + "=" Exit For Else Str1 = Str1 + "-" End If Else If Mid(Str; i; 1) <> "0" Then Flag = True If Mid(Str; i; 1) <> "0" Or Flag Then Str1 = Str1 + Mid(Str; i; 1) End If Next i Cells(3; 6) = Str1 If Pos > 0 Then If n1 > 6 Then Cells(5; 6) = Worksheets("Клиенты").Cells(2; n1) Else Cells(5; 6) = Worksheets("Клиенты").Cells(Pos; n1) End If If n2 > 6 Then Cells(10; 6) = Worksheets("Клиенты").Cells(2; n2) Else Cells(10; 6) = Worksheets("Клиенты").Cells(Pos; n2) End If Else Cells(5; 6) = n1 Cells(10; 6) = n2 End If Cells(16; 1) = Order Cells(1; 6) = Num Range("A1:H24").Copy Range("A32").Select ActiveSheet.Paste If DialogPrint("Ордер"; 2) Then MemoOrder = True Else MemoOrder = False End If End Function '-------------------------------- Печать биржевой информации ------- Sub PrintBirgaInfo() Dim Sheet As Object Dim Flag As Boolean Dim i; n; k; Num As Long Dim mas(3) As Double Set Sheet = Worksheets("Биржа") CurDate = Worksheets("Врем").Cells(1; 4) Sheets("Биржевая Информация").Select Cells(3; 10) = CurDate For i = 1 To 3 mas(i) = 0 Next i i = 2 n = 7 Range(Cells(n; 1); Cells(n + 100; 17)).Delete shift:=xlToLeft Flag = True Do While Sheet.Cells(i; 1) <> Empty If Sheet.Cells(i; 1) = CurDate Then Flag = False Cells(n; 1) = Sheet.Cells(i; 2) Cells(n; 7) = Sheet.Cells(i; 3) Cells(n; 9) = Sheet.Cells(i; 4) Cells(n; 10) = Sheet.Cells(i; 5) Cells(n; 5).Font.Bold = True Cells(n; 11) = Sheet.Cells(i; 6) Cells(n; 11).Font.Bold = True Cells(n; 12) = Sheet.Cells(i; 7) Cells(n; 13) = Sheet.Cells(i; 8) k = 2 While Worksheets("Бумаги").Cells(k; 1) <> Empty If Worksheets("Бумаги").Cells(k; 1) = Cells(n; 1) Then Cells(n; 2) = Worksheets("Бумаги").Cells(k; 2) Cells(n; 3) = Worksheets("Бумаги").Cells(k; 3) Cells(n; 6) = Worksheets("Бумаги").Cells(k; 4) End If k = k + 1 Wend Cells(n; 2).NumberFormat = "ДД.ММ.ГГ" Cells(n; 3).NumberFormat = "ДД.ММ.ГГ" Cells(n; 6).NumberFormat = "# ##0" Cells(n; 9).NumberFormat = "# ##0" Range(Cells(n; 10); Cells(n; 17)).NumberFormat = "0,00" Cells(n; 4) = Cells(3; 10) - Cells(n; 2) Cells(n; 5) = Cells(n; 3) - Cells(3; 10) Cells(n; 8) = Cells(n; 9) / Cells(n; 6) * 100 Cells(n; 8).NumberFormat = "0,00" If Cells(n; 7) <> 0 And Cells(n; 5) <> 0 Then Cells(n; 14) = (100 / Cells(n; 10) - 1) * 36500 / Cells(n; 5) * 0,85 Cells(n; 15) = (100 / Cells(n; 10) - 1) * 36500 / Cells(n; 5) Cells(n; 16) = (100 / Cells(n; 11) - 1) * 36500 / Cells(n; 5) * 0,85 Cells(n; 16).Font.Bold = True Cells(n; 17) = (100 / Cells(n; 11) - 1) * 36500 / Cells(n; 5) mas(1) = mas(1) + Cells(n; 5) * Cells(n; 9) * Cells(n; 14) mas(2) = mas(2) + Cells(n; 5) * Cells(n; 9) * Cells(n; 16) mas(3) = mas(3) + Cells(n; 5) * Cells(n; 9) End If n = n + 1 End If i = i + 1 Loop If Flag Then MsgBox "Биржевой информации нет" Exit Sub End If Num = n Range(Cells(7; 1); Cells(Num - 1; 17)).Borders(xlLeft).Weight = xlThin Range(Cells(7; 1); Cells(Num - 1; 17)).Borders(xlRight).Weight = xlThin Range(Cells(7; 1); Cells(Num - 1; 17)).Borders(xlTop).Weight = xlThin Range(Cells(7; 1); Cells(Num - 1; 17)).Borders(xlBottom).Weight = xlThin Range(Cells(7; 1); Cells(Num - 1; 17)).BorderAround Weight:=xlMedium Cells(Num; 1) = "Итого" Cells(Num; 1).Font.Bold = True Cells(Num; 1).HorizontalAlignment = xlCenter Cells(Num; 14) = mas(1) / mas(3) Cells(Num; 15) = mas(1) / mas(3) / 0,85 Cells(Num; 16) = mas(2) / mas(3) Cells(Num; 16).Font.Bold = True Cells(Num; 17) = mas(2) / mas(3) / 0,85 Range(Cells(Num; 14); Cells(Num; 17)).NumberFormat = "0,00" For i = 1 To 3 mas(i) = 0 Next i For i = 7 To Num - 1 mas(1) = mas(1) + Cells(i; 6) mas(2) = mas(2) + Cells(i; 7) mas(3) = mas(3) + Cells(i; 9) Next Cells(Num; 6) = mas(1) Cells(Num; 6).NumberFormat = "# ##0" Cells(Num; 7) = mas(2) Cells(Num; 9) = mas(3) Cells(Num; 9).NumberFormat = "# ##0" Cells(Num; 8) = mas(3) / mas(1) * 100 Cells(Num; 8).NumberFormat = "0,00" Cells(Num; 7).Font.Bold = True Cells(Num; 9).Font.Bold = True Range(Cells(Num; 1); Cells(Num; 17)).BorderAround Weight:=xlMedium Range(Cells(Num; 1); Cells(Num; 17)).Interior.ColorIndex = 15 If DialogPrint("Биржевая Информация"; 1) Then Exit Sub End Sub '-------------------------------- Дата ----------------------------- Sub DateChange() With DialogSheets("ДиалогДата") .EditBoxes.Text = CurDate .EditBoxes.InputType = 1 .Show CurDate = Worksheets("Врем").Cells(1; 4) If Button = False Then CurDate = Date Worksheets("Врем").Cells(1; 4) = CurDate MsgBox "Дата восстановлена" Else If IsDate(.EditBoxes.Text) Then CurDate = .EditBoxes.Text MsgBox "Дата изменена" Worksheets("Врем").Cells(1; 4) = CurDate Exit Sub End If MsgBox "Ошибка при вводе даты" End If End With End Sub '-------------------------------- Формирование текущей таблицы бумаг ---- Sub FormBum() Dim L As Object Dim i; k As Integer Set L = Worksheets("Бумаги") CurDate = Worksheets("Врем").Cells(1; 4) i = 2 k = 1 While L.Cells(i; 1) <> Empty If L.Cells(i; 2) <= CurDate And L.Cells(i; 3) >= CurDate Then Worksheets("Врем").Cells(k; 1) = L.Cells(i; 1) k = k + 1 End If i = i + 1 Wend Worksheets("Врем").Cells(1; 2) = k - 1 Set L = Worksheets("Клиенты") i = 1 While L.Cells(i; 1) <> Empty i = i + 1 Wend Worksheets("Врем").Cells(1; 3) = i - 2 End Sub ' ------------------------------- Остатки на бирже -------------------- Sub EditOstBirga(CliNum As Long) Dim ComBirga; sum; OstBegin As Double Dim DoFlag As Boolean Dim Sheet; Sheet1 As Object Dim i; k; RowNum As Long Set Sheet = Worksheets("ОстаткиБиржа") Set Sheet1 = Worksheets("Сделки") CurDate = Worksheets("Врем").Cells(1; 4) ComBirga = Worksheets("Инфо").Cells(1; 2) Sheet.Range("B2").Sort Key1:=Sheet.Range("B2"); Order1:=xlAscending; _ Key2:=Sheet.Range("A2"); Order2:=xlDescending; _ Header:=xlYes; OrderCustom:=1; _ MatchCase:=False; Orientation:=xlTopToBottom OstBegin = 0 RowNum = 0 k = 2 DoFlag = True Do While Sheet.Cells(k; 1) <> Empty If Sheet.Cells(k; 2) = CliNum And DoFlag Then If Sheet.Cells(k; 1) < CurDate Then OstBegin = Sheet.Cells(k; 6) Else Do While Sheet.Cells(k; 1) <> Empty If Sheet.Cells(k; 2) <> CliNum Then Exit Do If Sheet.Cells(k; 1) = CurDate Then OstBegin = Sheet.Cells(k; 3) RowNum = k Exit Do End If k = k + 1 Loop End If DoFlag = False End If k = k + 1 Loop If RowNum = 0 Then RowNum = k k = RowNum sum = 0 i = 2 While Sheet1.Cells(i; 1) <> Empty If Sheet1.Cells(i; 1) = CurDate And Sheet1.Cells(i; 2) = CliNum Then If Sheet1.Cells(i; 4) <> Empty Then sum = sum - _ Sheet1.Cells(i; 4) * Sheet1.Cells(i; 6) * 10000 - _ Format(Sheet1.Cells(i; 4) * Sheet1.Cells(i; 6) * 100 * ComBirga + 0,0001; "0,00") Else If Sheet1.Cells(i; 5) = 100 Then ComBirga = 0 sum = sum + _ Sheet1.Cells(i; 5) * Sheet1.Cells(i; 6) * 10000 - _ Format(Sheet1.Cells(i; 5) * Sheet1.Cells(i; 6) * 100 * ComBirga + 0,0001; "0,00") End If End If i = i + 1 Wend Sheet.Cells(k; 3) = OstBegin Sheet.Cells(k; 6) = OstBegin + sum + Sheet.Cells(k; 4) Sheet.Cells(k; 1) = CurDate Sheet.Cells(k; 2) = CliNum End Sub Sub Ok() Button = True End Sub Sub Cancel() Button = False End Sub Sub ПросмотрОтчетов() Просмотр = True End Sub Sub Останов() ExitVar = True End Sub Sub EndOf() Dim i As Long i = 2 While Cells(i; 1) <> Empty i = i + 1 Wend Cells(i; 1).Select End Sub Function DialogPrint(Str As String; Count As Integer) With DialogSheets("ДиалогПечать") AgainView: Просмотр = False ExitVar = False Button = False .Show If Просмотр Then Worksheets(Str).PrintPreview GoTo AgainView End If If ExitVar Then DialogPrint = True Else DialogPrint = False End If If Button Then ActiveWindow.SelectedSheets.PrintOut copies:=Count End With End Function Function min(a; b) If Abs(a) > Abs(b) Then min = Abs(b) Else min = Abs(a) End If End FunctionПриложение № 1.3. Журнал оборотов.
Приложение № 1.4. Журнал лицевого учета.
Приложение № 1.5. Мемориальный ордер.
Приложение № 1.6. Отчет инвестору о совершенных сделках. Приложение № 1.7. Структура пртфеля в разрезе по бумагам.Приложение № 1.8. Структура портфеля обобщенная.
Приложение № 1.9. Биржевая информация.
Приложение № 1.10. Еженедельный отчет в депозитарий.
Приложение № 1.11. Ежемесячный отчет в депозитарий.
Приложение № 2. Программа анализа эффективности вложений в РКО.Приложение 2.1. Текст программы.
Option Explicit Option Base 1 '*************************** Сортировка ************************* ' Процедура сортировки страницы ' Параметры: ' Sheet - лист ' RangeSort - первая ячейка для сортировки ' StrKey1 - сортировка сначала производится по этому столбцу ' StrKey2 - а затем по этому ' StrKey3 - и по этому в последнюю очередь ' OrderType1 - Направление сортировки по столбцу StrKey1 ' OrderType2 - Направление сортировки по столбцу StrKey2 ' OrderType3 - Направление сортировки по столбцу StrKey3 ' Пример использования : ' Call Сортировка(Worksheets("Биржа"); "A2"; "A2"; "B2"; "C2"; xlAscending; xlDescending; xlAscending) '***************************************************************** Sub Сортировка(Sheet As Object; RangeSort As String; StrKey1 As String; _ StrKey2 As String; StrKey3 As String; TypeOrder1 As Integer; TypeOrder2 As Integer; TypeOrder3 As Integer) Sheet.Range(RangeSort).Sort Key1:=Sheet.Range(StrKey1); Order1:=TypeOrder1; Key2:= _ Sheet.Range(StrKey2); Order2:=TypeOrder2; Key3:=Sheet.Range(StrKey3); Order3:= _ TypeOrder3; Header:=xlGuess; OrderCustom:=1; MatchCase:=False _ ; Orientation:=xlTopToBottom End Sub '******************************* Поиск *************************** ' Функция поиска значения в определенном столбце с определенной позиции вперед/назад ' Параметры: ' Sheet - лист ' Column - колонка для поиска ' Row - начальная строка поиска ' Text - искомое значение ' Direction - направление поиска: ' 1 - вперед ' -1 - назад ' Пример использования : ' MsgBox Поиск(Worksheets("Биржа"); 4; 8; 5; -1) '******************************************************************* Function Поиск(Sheet As Object; Column As Integer; Row As Integer; Text; Direction As Integer) Dim i As Integer Dim Compare; Compare1 If Direction <> 1 And Direction <> -1 Then MsgBox "Неверно задано направление поиска" End End If On Error GoTo ErrorFuncFind i = Row While Not IsEmpty(Sheet.Cells(i; Column)) If IsDate(Text) Then Compare = CDate(Sheet.Cells(i; Column)) Compare1 = CDate(Text) Else If IsNumeric(Text) Then Compare = CDbl(Sheet.Cells(i; Column)) Compare1 = CDbl(Text) Else Compare = CStr(Sheet.Cells(i; Column)) Compare1 = CStr(Text) End If End If If Compare = Compare1 Then Поиск = i Exit Function End If i = i + Direction Wend Поиск = 0 Exit Function ErrorFuncFind: MsgBox "Несовпадение типов данных в вызове" + Chr(13) + "функции Поиск и в искомом столбце." _ + Chr(13) + Chr(13) + "Данные разных типов в столбце базы" + Chr(13) End End Function Option Explicit Option Base 1 ' ---------------------------- Общая часть ------------------------------------- ' внешние параметры ' тип данных для записи информации о бумаге Type BumRecord Num As Long ' номер бумаги DateStart As Date ' дата выпуска DateEnd As Date 'дата погашения Volume As Long 'объем выпуска Present As Boolean End Type ' тип данных для записи информации о структуре портфеля Type PortfelRecord Dates() As Date ' дата покупки Price() As Single ' цена покупки Volume() As Long ' количество StartPos() As Integer ' начальный индекс бумаги в массиве бумаг данной серии EndPos() As Integer ' конечный индекс бумаги в массиве бумаг данной серии VolumeAll() As Long ' количество бумаг данной серии в портфеле End Type ' тип данных для записи информации об индксах портфеля и рынка Type IndexRecord Dates As Date Portfel As Single Birga As Single End Type Const MaxBum = 500 ' максимальное количество бумаг в портфеле одной серии Const DilerConst = 1000900000 ' константа для выборки портфеля дилера Dim MaxPeriod As Long ' максимальное количество дней для анализа(можно вычислить как последний день анализа-первый день анализа+1) Dim Portfel As PortfelRecord ' данные о портфеле Dim BumInfo() As BumRecord ' данные о бумагах Dim BumNum As Integer ' количество различных серий бумаг Dim Index() As IndexRecord ' индексы портфеля и рынка Dim Revenue() As IndexRecord ' доходность к погашению портфеля и рынка Dim BirgaInfo() As Single ' текущая биржевая информация по каждой серии Dim CoefIndex As Long ' индекс коэффициента Dim RevIndex As Long ' индекс доходности Dim EvalDate As Date ' дата для расчета Dim StartDate As Date ' начальная дата для постоения индексов Dim PortfelPricePred; BirgaPricePred As Single Dim Analize1; Analize2 As Boolean '------------------------------- Процедура расчета портфеля (главный модуль)- Sub АнализПортфель() Dim Sheet As Object Dim i; Ind As Integer Dim SumCell As Long Dim CurDate As Date Set Sheet = Worksheets("Бумаги") BumNum = 0 While Sheet.Cells(BumNum + 2; 1) <> Empty BumNum = BumNum + 1 Wend With DialogSheets("ДиалогДата") .EditBoxes(1).Text = "05.02.97" .EditBoxes(2).Text = "30.05.97" .EditBoxes(1).InputType = xlDate .EditBoxes(2).InputType = xlDate .Show StartDate = CDate(.EditBoxes(1).Text) EvalDate = CDate(.EditBoxes(2).Text) End With With DialogSheets("ДиалогВыбор") again: .Show Analize1 = False Analize2 = False If .CheckBoxes(1).Value = 1 Then Analize1 = True If .CheckBoxes(2).Value = 1 Then Analize2 = True If Not Analize1 And Not Analize2 Then MsgBox "Выберите тип анализа" GoTo again End If End With MaxPeriod = EvalDate - StartDate + 1 ReDim Index(MaxPeriod) ReDim Revenue(MaxPeriod) Index(1).Portfel = 1 Index(1).Birga = 1 Index(1).Dates = StartDate ReDim BumInfo(BumNum) ReDim BirgaInfo(BumNum) For i = 1 To BumNum With BumInfo(i) .Num = Sheet.Cells(i + 1; 1) .DateStart = Sheet.Cells(i + 1; 2) .DateEnd = Sheet.Cells(i + 1; 3) .Volume = Sheet.Cells(i + 1; 4) End With Next i ReDim Portfel.Dates(BumNum; MaxBum) ReDim Portfel.Price(BumNum; MaxBum) ReDim Portfel.Volume(BumNum; MaxBum) ReDim Portfel.StartPos(BumNum) ReDim Portfel.EndPos(BumNum) ReDim Portfel.VolumeAll(BumNum) For i = 1 To BumNum Portfel.StartPos(i) = 1 Portfel.EndPos(i) = 0 Next i Set Sheet = Worksheets("Сделки") Call Сортировка(Worksheets("Сделки"); "A2"; "A2"; "B2"; "D2"; _ xlAscending; xlAscending; xlAscending) i = 2 CoefIndex = 1 RevIndex = 1 CurDate = StartDate While Sheet.Cells(i; 1) <> Empty And Sheet.Cells(i; 1) <= EvalDate If Sheet.Cells(i; 2) = DilerConst Then Ind = ReturnBum(Sheet.Cells(i; 3)) If Not IsEmpty(Sheet.Cells(i; 4)) Then Portfel.EndPos(Ind) = Portfel.EndPos(Ind) + 1 Portfel.Dates(Ind; Portfel.EndPos(Ind)) = Sheet.Cells(i; 1) Portfel.Price(Ind; Portfel.EndPos(Ind)) = Sheet.Cells(i; 4) Portfel.Volume(Ind; Portfel.EndPos(Ind)) = Sheet.Cells(i; 6) Portfel.VolumeAll(Ind) = Portfel.VolumeAll(Ind) + Sheet.Cells(i; 6) Else SumCell = Sheet.Cells(i; 6) Portfel.VolumeAll(Ind) = Portfel.VolumeAll(Ind) - Sheet.Cells(i; 6) While SumCell >= Portfel.Volume(Ind; Portfel.StartPos(Ind)) And SumCell > 0 SumCell = SumCell - Portfel.Volume(Ind; Portfel.StartPos(Ind)) Portfel.StartPos(Ind) = Portfel.StartPos(Ind) + 1 Wend If SumCell < Portfel.Volume(Ind; Portfel.StartPos(Ind)) Then Portfel.Volume(Ind; Portfel.StartPos(Ind)) = Portfel.Volume(Ind; Portfel.StartPos(Ind)) - SumCell End If End If End If ' в данном месте можео провести анализ на основе данных о портфеле за текущую дату ' дата текущая - это Worksheets("Сделки").cells(i-1;1) ' т.е. анализ за эту текущую дату(доходность к погашению портфеля, индекс,...) If StartDate <= Sheet.Cells(i; 1) And Sheet.Cells(i; 1) <> CurDate Then Call Процедура_анализа(Sheet.Cells(i; 1)) CoefIndex = CoefIndex + 1 RevIndex = RevIndex + 1 CurDate = Sheet.Cells(i; 1) End If i = i + 1 Wend If Analize1 Then Worksheets("РезультатИндекс").Cells(1; 2) = "Портфель" Worksheets("РезультатИндекс").Cells(1; 3) = "Рынок" For i = 1 To CoefIndex - 1 Worksheets("РезультатИндекс").Cells(i + 1; 1) = Index(i).Dates Worksheets("РезультатИндекс").Cells(i + 1; 2) = Index(i).Portfel Worksheets("РезультатИндекс").Cells(i + 1; 3) = Index(i).Birga Next i Charts("ДиаграммаИндекс").ChartWizard Source:=Sheets("РезультатИндекс").Range( _ "A1:C" + CStr(i)); Gallery:=xlLine; Format:=4; PlotBy:=xlColumns; _ CategoryLabels:=1; SeriesLabels:=1; HasLegend:=1; Title:= _ "Сравнение индекса портфеля и рынка"; CategoryTitle:="дата"; ValueTitle:= _ "индекс"; ExtraTitle:="" Charts("ДиаграммаИндекс").Select MsgBox "Диаграмма Индекса" End If If Analize2 Then Worksheets("РезультатДоходность").Cells(1; 2) = "Портфель" Worksheets("РезультатДоходность").Cells(1; 3) = "Рынок" For i = 1 To RevIndex - 1 Worksheets("РезультатДоходность").Cells(i + 1; 1) = Revenue(i).Dates Worksheets("РезультатДоходность").Cells(i + 1; 2) = Revenue(i).Portfel Worksheets("РезультатДоходность").Cells(i + 1; 3) = Revenue(i).Birga Next i Charts("ДиаграммаДоходность").ChartWizard Source:=Sheets("РезультатДоходность").Range( _ "A1:C" + CStr(i)); Gallery:=xlLine; Format:=4; PlotBy:=xlColumns; _ CategoryLabels:=1; SeriesLabels:=1; HasLegend:=1; Title:= _ "Сравнение доходности портфеля и рынка"; CategoryTitle:="дата"; ValueTitle:= _ "доходность"; ExtraTitle:="" Charts("ДиаграммаДоходность").Select MsgBox "Диаграмма Доходности" End If End Sub '--------------------- функция возвращает индекс бумаги в массиве BumInfo --- ---------- Function ReturnBum(bum As Long) Dim i As Integer For i = 1 To BumNum If bum = BumInfo(i).Num Then ReturnBum = i Exit Function End If Next i MsgBox "Не найдена бумага в списке бумаг. Занести бумагу в лист Бумаги" End End Function '-------------------- Процедура построения индексов портфеля и рынка -------- --------- Sub Процедура_анализа(CurDate As Date) Dim i; k As Long Dim Sheet As Object Dim PortfelPrice; BirgaPrice As Single Dim BirgaCoef; PortfelCoef As Single Dim Doh; Volume As Single Dim Flag As Boolean Set Sheet = Worksheets("Биржа") ' поиск первой строки начала биржевой информации за текущий день i = Поиск(Worksheets("Биржа"); 1; 2; CurDate; 1) If i = 0 Then 'MsgBox "Биржевая информация за " + CStr(CDate(CurDate)) + "не найдена" 'End CoefIndex = CoefIndex - 1 Exit Sub End If ' занесение биржевой информации за текущий день If i <> 0 Then While Sheet.Cells(i; 1) = CurDate If Sheet.Cells(i; 6) <> Empty Then BirgaInfo(ReturnBum(Sheet.Cells(i; 2))) = Sheet.Cells(i; 6) End If i = i + 1 Wend End If ' определение по каждой бумаге обращения на бирже For i = 1 To BumNum If BumInfo(i).DateStart <= CurDate And CurDate <= BumInfo(i).DateEnd Then BumInfo(i).Present = True Else BumInfo(i).Present = False End If Next i ' если выбран анализ эффективной доходности портфеля и рынка If Analize2 Then Doh = 0 Volume = 0 Flag = True For k = 1 To BumNum If BumInfo(k).Present Then For i = Portfel.StartPos(k) To Portfel.EndPos(k) Flag = False Doh = Doh + (100 / Portfel.Price(k; i) - 1) * 36500 * Portfel.Volume(k; i) Volume = Volume + Portfel.Volume(k; i) * (BumInfo(k).DateEnd - Portfel.Dates(k; i)) Next i End If Next k If Flag Then RevIndex = RevIndex - 1 GoTo Anal1 End If Revenue(RevIndex).Portfel = Doh / Volume Revenue(RevIndex).Dates = CurDate Flag = True Doh = 0 Volume = 0 For k = 1 To BumNum If BumInfo(k).Present Then Flag = False Doh = Doh + (100 / BirgaInfo(k) - 1) * 36500 * BumInfo(k).Volume Volume = Volume + BumInfo(k).Volume * (BumInfo(k).DateEnd - CurDate) End If Next k If Flag Then RevIndex = RevIndex - 1 GoTo Anal1 End If Revenue(RevIndex).Birga = Doh / Volume End If Anal1: ' если выбран анализ индекса портфеля и рынка If Analize1 Then ' определение стоимости портфеля и биржи по средневзвешенным ценам PortfelPrice = 0 BirgaPrice = 0 For i = 1 To BumNum PortfelPrice = PortfelPrice + Portfel.VolumeAll(i) * BirgaInfo(i) * 10000 BirgaPrice = BirgaPrice + BumInfo(i).Volume * BirgaInfo(i) * 10000 Next i ' расчет индексов If CoefIndex <> 1 Then ' поиск остатков за текущий день k = Поиск(Worksheets("Остаток"); 1; 2; CurDate; 1) If k <> 0 Then PortfelPrice = PortfelPrice + Worksheets("Остаток").Cells(k; 2) End If ' вычисление коэффициента портфеля If k <> 0 Then PortfelCoef = (PortfelPrice - Worksheets("Остаток").Cells(k; 3) _ + Worksheets("Остаток").Cells(k; 4)) / PortfelPricePred Else PortfelCoef = PortfelPrice / PortfelPricePred End If PortfelPricePred = PortfelPrice ' определение индекса портфеля за текущий день Index(CoefIndex).Portfel = Index(CoefIndex - 1).Portfel * PortfelCoef Index(CoefIndex).Dates = CurDate BirgaCoef = BirgaPrice k = Поиск(Worksheets("Бумаги"); 2; 2; CurDate; 1) If k <> 0 Then BirgaCoef = BirgaCoef - Worksheets("Бумаги").Cells(k; 4) End If k = Поиск(Worksheets("Бумаги"); 3; 2; CurDate; 1) If k <> 0 Then BirgaCoef = BirgaCoef + Worksheets("Бумаги").Cells(k; 4) End If BirgaCoef = BirgaCoef / BirgaPricePred BirgaPricePred = BirgaPrice ' определение индекса биржи за текущий день Index(CoefIndex).Birga = Index(CoefIndex - 1).Birga * BirgaCoef Else k = Поиск(Worksheets("Остаток"); 1; 2; CurDate; 1) If k <> 0 Then PortfelPrice = PortfelPrice + Worksheets("Остаток").Cells(k; 2) End If PortfelPricePred = PortfelPrice BirgaPricePred = BirgaPrice End If End If End Sub Sub Cancel() End End Sub Приложение № 2.2. Диаграмма сравнения доходности портфеля и рынка. Приложение № 2.3. Диаграмма сравнения индекса портфеля и рынка.Приложение № 3. Входные статистические данные.
Приложение 3.1. Информация о бумагах.
№ | Дата выпуска | Дата погашения | Объем выпуска |
21019 | 14.11.96 | 13.02.97 | 60 000 000 |
21020 | 09.01.97 | 10.04.97 | 65 000 000 |
21021 | 13.02.97 | 15.05.97 | 55 000 000 |
21022 | 10.04.97 | 10.07.97 | 55 000 000 |
21023 | 10.07.97 | 09.10.97 | 40 000 000 |
21024 | 18.12.97 | 09.04.98 | 45 000 000 |
22002 | 29.08.96 | 27.02.97 | 25 000 000 |
22003 | 26.09.96 | 27.03.97 | 30 000 000 |
22004 | 24.10.96 | 24.04.97 | 40 000 000 |
22005 | 28.11.96 | 29.05.97 | 45 000 000 |
22006 | 19.12.96 | 19.06.97 | 90 000 000 |
22007 | 30.01.97 | 24.07.97 | 30 000 000 |
22008 | 27.02.97 | 28.08.97 | 55 000 000 |
22009 | 27.03.97 | 25.09.97 | 55 000 000 |
22010 | 24.04.97 | 23.10.97 | 60 000 000 |
22011 | 15.05.97 | 13.11.97 | 60 000 000 |
22012 | 29.05.97 | 27.11.97 | 60 000 000 |
24001 | 20.03.97 | 12.03.98 | 30 000 000 |
24002 | 08.05.97 | 07.05.98 | 25 000 000 |
Приложение 3.2. Информация о сделках.
Дата | № бумаги | Цена приобр | Цена продажи | Кол-во |
02.12.96 | 22004 | 92,99 | 62 | |
02.12.96 | 22004 | 93,00 | 340 | |
04.12.96 | 22005 | 77,50 | 6 | |
05.12.96 | 22003 | 85,14 | 5 | |
19.12.96 | 22006 | 80,05 | 300 | |
19.12.96 | 22006 | 80,21 | 500 | |
19.12.96 | 22006 | 80,37 | 259 | |
01.01.97 | 22005 | 92,06 | 7 | |
01.01.97 | 21021 | 0,00 | 1126 | |
01.01.97 | 22005 | 0,00 | 95 | |
01.01.97 | 22008 | 0,00 | 75 | |
01.01.97 | 22009 | 0,00 | 457 | |
01.01.97 | 22008 | 0,00 | 29 | |
01.01.97 | 21020 | 0,00 | 642 | |
01.01.97 | 22004 | 0,00 | 12 | |
01.01.97 | 22006 | 0,00 | 20 | |
01.01.97 | 22009 | 0,00 | 16 | |
01.01.97 | 21020 | 0,00 | 90 | |
01.01.97 | 22006 | 0,00 | 26 | |
01.01.97 | 21020 | 0,00 | 20 | |
01.01.97 | 22004 | 0,00 | 15 | |
01.01.97 | 22006 | 0,00 | 5 | |
01.01.97 | 21021 | 0,00 | 12 | |
01.01.97 | 22006 | 0,00 | 27 | |
01.01.97 | 21020 | 0,00 | 0 | |
01.01.97 | 21021 | 0,00 | 63 | |
01.01.97 | 22004 | 0,00 | 159 | |
01.01.97 | 22005 | 0,00 | 146 | |
01.01.97 | 22009 | 0,00 | 46 | |
01.01.97 | 22007 | 0,00 | 32 | |
01.01.97 | 22008 | 0,00 | 13 | |
01.01.97 | 22006 | 0,00 | 73 | |
01.01.97 | 22006 | 0,00 | 59 | |
01.01.97 | 22006 | 0,00 | 56 | |
01.01.97 | 21020 | 0,00 | 29 | |
01.01.97 | 21021 | 0,00 | 8 | |
01.01.97 | 22005 | 0,00 | 12 | |
01.01.97 | 22006 | 0,00 | 27 | |
01.01.97 | 21021 | 0,00 | 10 | |
01.01.97 | 22008 | 0,00 | 28 | |
01.01.97 | 22008 | 0,00 | 57 | |
01.01.97 | 21021 | 0,00 | 42 | |
01.01.97 | 24001 | 0,00 | 34 | |
01.01.97 | 24001 | 0,00 | 69 | |
01.01.97 | 21021 | 0,00 | 104 | |
09.01.97 | 21020 | 90,93 | 300 | |
09.01.97 | 21020 | 91,03 | 600 | |
09.01.97 | 21020 | 91,24 | 900 | |
09.01.97 | 21020 | 91,35 | 600 | |
09.01.97 | 21020 | 91,50 | 500 | |
10.01.97 | 22004 | 91,54 | 24 | |
13.01.97 | 21020 | 93,65 | 50 | |
14.01.97 | 21020 | 93,22 | 32 | |
15.01.97 | 22005 | 88,51 | 10 | |
17.01.97 | 21020 | 92,50 | 10 | |
28.01.97 | 21020 | 93,40 | 7 | |
31.01.97 | 22007 | 84,19 | 16 | |
31.01.97 | 22007 | 84,20 | 184 | |
06.02.97 | 22004 | 92,80 | 60 | |
10.02.97 | 22006 | 89,00 | 500 | |
13.02.97 | 21021 | 91,20 | 430 | |
13.02.97 | 21021 | 91,30 | 430 | |
13.02.97 | 21021 | 91,33 | 320 | |
17.02.97 | 22005 | 92,25 | 78 | |
17.02.97 | 22007 | 88,42 | 78 | |
19.02.97 | 22005 | 93,00 | 122 | |
19.02.97 | 22003 | 97,55 | 41 | |
19.02.97 | 22007 | 89,39 | 122 | |
20.02.97 | 22005 | 92,60 | 28 | |
25.02.97 | 22005 | 92,01 | 100 | |
25.02.97 | 22005 | 92,03 | 60 | |
25.02.97 | 21020 | 96,00 | 101 | |
26.02.97 | 22004 | 95,10 | 12 | |
26.02.97 | 21021 | 92,50 | 12 | |
27.02.97 | 22008 | 84,04 | 300 | |
27.02.97 | 22008 | 84,10 | 432 | |
27.02.97 | 22008 | 84,22 | 318 | |
27.02.97 | 22008 | 84,09 | 311 | |
27.02.97 | 22008 | 84,22 | 182 | |
27.02.97 | 22008 | 84,42 | 100 | |
28.02.97 | 21021 | 93,23 | 80 | |
03.03.97 | 21020 | 97,30 | 200 | |
03.03.97 | 21021 | 94,00 | 154 | |
03.03.97 | 22006 | 92,50 | 200 | |
04.03.97 | 22006 | 92,40 | 24 | |
04.03.97 | 22006 | 92,52 | 200 | |
04.03.97 | 22006 | 92,53 | 200 | |
06.03.97 | 22006 | 92,63 | 25 | |
06.03.97 | 22004 | 96,45 | 4 | |
06.03.97 | 21020 | 97,53 | 108 | |
12.03.97 | 21020 | 97,70 | 489 | |
13.03.97 | 21020 | 97,50 | 822 | |
13.03.97 | 21021 | 94,00 | 399 | |
17.03.97 | 21021 | 93,67 | 100 | |
19.03.97 | 22003 | 99,19 | 128 | |
19.03.97 | 22003 | 99,20 | 229 | |
20.03.97 | 24001 | 72,00 | 50 | |
20.03.97 | 24001 | 72,15 | 290 | |
21.03.97 | 22005 | 94,20 | 2 | |
21.03.97 | 22005 | 94,25 | 100 | |
24.03.97 | 22005 | 94,25 | 108 | |
24.03.97 | 22005 | 94,39 | 27 | |
24.03.97 | 22005 | 94,40 | 598 | |
24.03.97 | 21020 | 98,40 | 200 | |
25.03.97 | 22006 | 92,10 | 70 | |
25.03.97 | 22005 | 94,05 | 320 | |
25.03.97 | 22003 | 99,78 | 403 | |
26.03.97 | 22006 | 92,00 | 314 | |
26.03.97 | 21021 | 94,45 | 80 | |
26.03.97 | 21020 | 98,10 | 50 | |
28.03.97 | 22005 | 94,15 | 7 | |
28.03.97 | 21021 | 95,10 | 135 | |
28.03.97 | 21021 | 95,19 | 378 | |
28.03.97 | 21021 | 95,20 | 90 | |
28.03.97 | 21020 | 99,07 | 288 | |
28.03.97 | 21020 | 99,01 | 300 | |
31.03.97 | 22006 | 92,92 | 200 | |
31.03.97 | 22006 | 92,93 | 400 | |
31.03.97 | 22006 | 92,94 | 100 | |
31.03.97 | 22005 | 94,50 | 10 | |
31.03.97 | 21020 | 99,10 | 88 | |
31.03.97 | 21020 | 99,11 | 12 | |
31.03.97 | 21020 | 99,12 | 2 | |
31.03.97 | 22006 | 92,94 | 100 | |
31.03.97 | 22006 | 92,93 | 400 | |
31.03.97 | 22006 | 92,92 | 200 | |
01.04.97 | 22006 | 92,70 | 1 | |
01.04.97 | 22006 | 92,91 | 89 | |
01.04.97 | 22004 | 97,72 | 10 | |
03.04.97 | 22004 | 98,00 | 100 | |
03.04.97 | 21020 | 99,28 | 38 | |
03.04.97 | 22006 | 93,06 | 29 | |
03.04.97 | 22006 | 93,23 | 5 | |
03.04.97 | 22006 | 93,31 | 145 | |
04.04.97 | 21020 | 99,30 | 370 | |
04.04.97 | 22006 | 93,32 | 50 | |
04.04.97 | 22006 | 93,37 | 47 | |
04.04.97 | 22006 | 93,39 | 45 | |
08.04.97 | 22004 | 98,35 | 239 | |
08.04.97 | 22008 | 87,50 | 167 | |
08.04.97 | 24001 | 73,15 | 23 | |
08.04.97 | 22004 | 98,35 | 53 | |
09.04.97 | 21020 | 99,80 | 13 | |
09.04.97 | 21020 | 99,86 | 27 | |
09.04.97 | 21020 | 99,87 | 325 | |
09.04.97 | 24001 | 73,20 | 117 | |
09.04.97 | 24001 | 73,25 | 200 | |
09.04.97 | 22009 | 84,86 | 61 | |
10.04.97 | 21022 | 91,50 | 2101 | |
10.04.97 | 21020 | 100,00 | 1630 | |
10.04.97 | 21022 | 91,50 | 91 | |
10.04.97 | 21022 | 91,65 | 609 | |
10.04.97 | 21020 | 100,00 | 642 | |
10.04.97 | 21022 | 91,65 | 98 | |
10.04.97 | 21020 | 100,00 | 90 | |
10.04.97 | 21022 | 91,50 | 10 | |
10.04.97 | 21020 | 100,00 | 20 | |
10.04.97 | 21022 | 91,65 | 42 | |
10.04.97 | 21020 | 100,00 | 39 | |
10.04.97 | 21022 | 91,65 | 31 | |
10.04.97 | 21020 | 100,00 | 29 | |
10.04.97 | 21022 | 91,50 | 5458 | |
11.04.97 | 21022 | 92,40 | 1 | |
11.04.97 | 24001 | 73,50 | 300 | |
14.04.97 | 22009 | 85,50 | 340 | |
14.04.97 | 21021 | 97,25 | 300 | |
14.04.97 | 22006 | 94,53 | 157 | |
16.04.97 | 22008 | 88,40 | 330 | |
16.04.97 | 21021 | 97,80 | 600 | |
16.04.97 | 22004 | 99,60 | 90 | |
16.04.97 | 22009 | 86,39 | 340 | |
16.04.97 | 22004 | 99,60 | 50 | |
17.04.97 | 22009 | 86,50 | 60 | |
17.04.97 | 22004 | 99,64 | 3 | |
17.04.97 | 24001 | 73,80 | 1 | |
21.04.97 | 21022 | 92,45 | 515 | |
21.04.97 | 22006 | 95,30 | 500 | |
21.04.97 | 21022 | 92,38 | 3 | |
21.04.97 | 22006 | 95,30 | 321 | |
22.04.97 | 22004 | 99,90 | 189 | |
22.04.97 | 22008 | 88,72 | 112 | |
23.04.97 | 22005 | 97,20 | 12 | |
24.04.97 | 22004 | 100,00 | 572 | |
24.04.97 | 22010 | 84,35 | 14 | |
24.04.97 | 22004 | 100,00 | 12 | |
24.04.97 | 22010 | 84,32 | 10 | |
24.04.97 | 22004 | 100,00 | 15 | |
24.04.97 | 22010 | 84,32 | 28 | |
24.04.97 | 22010 | 84,35 | 34 | |
24.04.97 | 22004 | 100,00 | 53 | |
24.04.97 | 22010 | 84,28 | 586 | |
24.04.97 | 22010 | 84,32 | 355 | |
25.04.97 | 22008 | 89,89 | 18 | |
25.04.97 | 21022 | 93,55 | 48 | |
25.04.97 | 21022 | 93,49 | 2 | |
25.04.97 | 21022 | 93,50 | 4 | |
28.04.97 | 21022 | 93,50 | 790 | |
28.04.97 | 22005 | 97,68 | 200 | |
28.04.97 | 22005 | 97,70 | 500 | |
28.04.97 | 21022 | 93,50 | 1008 | |
28.04.97 | 21022 | 93,65 | 982 | |
28.04.97 | 21022 | 93,60 | 80 | |
28.04.97 | 21022 | 93,55 | 468 | |
28.04.97 | 21022 | 93,56 | 67 | |
28.04.97 | 21022 | 93,50 | 1916 | |
28.04.97 | 21022 | 93,61 | 10 | |
28.04.97 | 21022 | 93,51 | 46 | |
29.04.97 | 21022 | 94,01 | 826 | |
29.04.97 | 22006 | 96,50 | 800 | |
29.04.97 | 21022 | 94,00 | 400 | |
29.04.97 | 21022 | 94,01 | 836 | |
29.04.97 | 21022 | 94,05 | 55 | |
29.04.97 | 21022 | 94,10 | 300 | |
29.04.97 | 21022 | 94,15 | 298 | |
06.05.97 | 21021 | 99,40 | 78 | |
06.05.97 | 21022 | 94,70 | 131 | |
06.05.97 | 22006 | 97,00 | 1 | |
06.05.97 | 22006 | 96,90 | 1 | |
06.05.97 | 22006 | 96,65 | 31 | |
06.05.97 | 22006 | 96,61 | 263 | |
06.05.97 | 22008 | 91,20 | 42 | |
06.05.97 | 22008 | 90,80 | 501 | |
12.05.97 | 21022 | 0,00 | 32 | |
12.05.97 | 22009 | 0,00 | 160 | |
14.05.97 | 21022 | 95,40 | 300 | |
14.05.97 | 21022 | 95,45 | 300 | |
14.05.97 | 21022 | 95,48 | 500 | |
15.05.97 | 22011 | 86,30 | 1190 | |
15.05.97 | 21021 | 100,00 | 500 | |
15.05.97 | 22011 | 86,35 | 477 | |
15.05.97 | 22011 | 86,41 | 826 | |
15.05.97 | 21021 | 100,00 | 1126 | |
15.05.97 | 22011 | 86,35 | 13 | |
15.05.97 | 21021 | 100,00 | 12 | |
15.05.97 | 22011 | 86,35 | 63 | |
15.05.97 | 21021 | 100,00 | 63 | |
15.05.97 | 21021 | 100,00 | 8 | |
15.05.97 | 21021 | 100,00 | 10 | |
15.05.97 | 22011 | 86,35 | 48 | |
15.05.97 | 21021 | 100,00 | 42 | |
15.05.97 | 21021 | 100,00 | 104 | |
16.05.97 | 24001 | 79,30 | 50 | |
16.05.97 | 22011 | 87,09 | 60 | |
16.05.97 | 22011 | 87,10 | 90 | |
16.05.97 | 22011 | 87,35 | 353 | |
16.05.97 | 21022 | 95,75 | 355 | |
16.05.97 | 21022 | 95,80 | 145 | |
19.05.97 | 21022 | 96,54 | 50 | |
20.05.97 | 21022 | 96,65 | 13 | |
20.05.97 | 21022 | 96,73 | 44 | |
21.05.97 | 22005 | 99,65 | 1 | |
22.05.97 | 22011 | 88,40 | 92 | |
22.05.97 | 22011 | 88,43 | 17 | |
22.05.97 | 22011 | 88,44 | 391 | |
22.05.97 | 22011 | 88,50 | 1 | |
22.05.97 | 22011 | 88,70 | 350 | |
22.05.97 | 22005 | 99,80 | 500 | |
22.05.97 | 22005 | 99,82 | 252 | |
23.05.97 | 22011 | 88,70 | 224 | |
23.05.97 | 22005 | 99,82 | 119 | |
26.05.97 | 22011 | 88,55 | 129 | |
26.05.97 | 22011 | 88,54 | 26 | |
26.05.97 | 22011 | 88,53 | 410 | |
27.05.97 | 22011 | 0,00 | 791 | |
28.05.97 | 22011 | 88,03 | 2 | |
28.05.97 | 21022 | 96,40 | 10 | |
28.05.97 | 21022 | 96,50 | 12 | |
28.05.97 | 21022 | 96,69 | 100 | |
28.05.97 | 21022 | 96,70 | 45 | |
28.05.97 | 21022 | 96,88 | 144 | |
28.05.97 | 22008 | 93,30 | 25 | |
28.05.97 | 22011 | 88,21 | 50 | |
28.05.97 | 22011 | 88,26 | 20 | |
28.05.97 | 22011 | 88,25 | 100 | |
28.05.97 | 22011 | 88,20 | 48 | |
29.05.97 | 22012 | 87,30 | 108 | |
29.05.97 | 22005 | 100,00 | 95 | |
29.05.97 | 22012 | 87,30 | 8 | |
29.05.97 | 22005 | 100,00 | 7 | |
29.05.97 | 22012 | 87,30 | 64 | |
29.05.97 | 22005 | 100,00 | 57 | |
29.05.97 | 22005 | 100,00 | 12 | |
29.05.97 | 22012 | 87,00 | 573 | |
30.05.97 | 22007 | 95,79 | 73 | |
30.05.97 | 22006 | 98,65 | 82 | |
30.05.97 | 22012 | 87,85 | 50 | |
30.05.97 | 22012 | 87,85 | 13 |
Дата | Остаток на конец | Ввод | Вывод |
05.02.97 | 61 746 712,20 | ||
06.02.97 | 481 785 980,60 | ||
10.02.97 | 36 340 980,60 | ||
14.02.97 | 297 257 974,60 | ||
17.02.97 | 294 129 652,00 | ||
19.02.97 | 249 467 440,70 | ||
20.02.97 | 223 513 512,70 | ||
25.02.97 | 20 918 675,30 | ||
26.02.97 | 21 253 187,30 | ||
28.02.97 | 8 953 377,10 | ||
03.03.97 | 532 789 017,10 | ||
04.03.97 | 140 120 741,10 | ||
06.03.97 | 7 640 493,20 | ||
12.03.97 | 484 915 740,20 | ||
13.03.97 | 660 249 230,20 | 1 000 000 000,00 | |
17.03.97 | 566 485 560,20 | ||
19.03.97 | 912 000 229,00 | 700 000 000,00 | |
21.03.97 | 570 289 860,00 | ||
24.03.97 | 74 813 572,70 | ||
25.03.97 | 8 058 802,70 | ||
26.03.97 | 6 123 432,20 | ||
28.03.97 | 6 838 506,90 | ||
31.03.97 | 97 060 573,30 | ||
01.04.97 | 3 578 284,40 | ||
02.04.97 | 503 578 284,40 | 500 000 000,00 | |
03.04.97 | 368 270 852,10 | ||
04.04.97 | 493 442,10 | ||
07.04.97 | 500 493 442,10 | 500 000 000,00 | |
08.04.97 | 427 988 436,10 | ||
09.04.97 | 295 022 078,40 | ||
11.04.97 | 684 663,40 | ||
14.04.97 | 1 152 213,40 | ||
16.04.97 | 678 336 327,40 | ||
21.04.97 | 3 004 364,27 | 675 000 000,00 | |
22.04.97 | 290 965 631,22 | ||
23.04.97 | 302 620 883,22 | ||
24.04.97 | 2 620 883,22 | 300 000 000,00 | |
25.04.97 | 574 620 883,22 | ||
28.04.97 | 5 756 283,52 | ||
29.04.97 | 72 291,57 | ||
06.05.97 | 122 502,22 | 980 000 000,00 | |
14.05.97 | 533 285 039,72 | 516 000 000,00 | |
16.05.97 | 5 009 715,72 | ||
22.05.97 | 931 583,51 | ||
23.05.97 | 1 584 837,51 | ||
26.05.97 | 1 432 570,33 | 500 000 000,00 | |
28.05.97 | 650 729 151,73 | 500 000 000,00 | |
29.05.97 | 151 229 151,73 | 499 500 000,00 | |
30.05.97 | 296 336,95 |
Приложение 3.4. Биржевая информация.
Дата | № бумаги | Цена средневзвешенная |
06.01.97 | 21018 | 99,643 |
06.01.97 | 21019 | 94,126 |
06.01.97 | 22001 | 98,422 |
06.01.97 | 22002 | 94,880 |
06.01.97 | 22003 | 93,288 |
06.01.97 | 22004 | 90,318 |
06.01.97 | 22005 | 87,458 |
06.01.97 | 22006 | 96,187 |
08.01.97 | 21018 | 99,886 |
08.01.97 | 21019 | 96,830 |
08.01.97 | 22001 | 98,422 |
08.01.97 | 22002 | 95,664 |
08.01.97 | 22003 | 93,032 |
08.01.97 | 22004 | 91,372 |
08.01.97 | 22005 | 88,078 |
08.01.97 | 22006 | 86,150 |
09.01.97 | 21018 | 100,000 |
09.01.97 | 21020 | 90,832 |
10.01.97 | 21019 | 97,123 |
10.01.97 | 21020 | 92,340 |
10.01.97 | 22001 | 99,009 |
10.01.97 | 22002 | 95,907 |
10.01.97 | 22003 | 92,999 |
10.01.97 | 22004 | 90,773 |
10.01.97 | 22005 | 88,050 |
10.01.97 | 22006 | 86,316 |
13.01.97 | 21019 | 97,245 |
13.01.97 | 21020 | 93,147 |
13.01.97 | 22001 | 99,176 |
13.01.97 | 22002 | 96,648 |
13.01.97 | 22003 | 94,013 |
13.01.97 | 22004 | 93,042 |
13.01.97 | 22005 | 89,735 |
13.01.97 | 22006 | 90,704 |
14.01.97 | 21019 | 97,670 |
14.01.97 | 21020 | 93,335 |
14.01.97 | 22001 | 99,343 |
14.01.97 | 22002 | 96,617 |
14.01.97 | 22003 | 94,127 |
14.01.97 | 22004 | 92,800 |
14.01.97 | 22005 | 90,000 |
14.01.97 | 22006 | 86,999 |
15.01.97 | 21019 | 97,693 |
15.01.97 | 21020 | 93,354 |
15.01.97 | 22001 | 99,621 |
15.01.97 | 22002 | 96,500 |
15.01.97 | 22003 | 94,369 |
15.01.97 | 22004 | 91,988 |
15.01.97 | 22005 | 89,289 |
15.01.97 | 22006 | 88,008 |
16.01.97 | 21019 | 97,685 |
16.01.97 | 21020 | 92,831 |
16.01.97 | 22001 | 99,634 |
16.01.97 | 22002 | 96,500 |
16.01.97 | 22003 | 94,325 |
16.01.97 | 22004 | 91,525 |
16.01.97 | 22005 | 89,500 |
16.01.97 | 22006 | 87,936 |
17.01.97 | 21019 | 97,413 |
17.01.97 | 21020 | 92,541 |
17.01.97 | 22001 | 99,680 |
17.01.97 | 22002 | 96,544 |
17.01.97 | 22003 | 92,338 |
17.01.97 | 22004 | 91,715 |
17.01.97 | 22005 | 89,000 |
17.01.97 | 22006 | 87,373 |
20.01.97 | 21019 | 97,650 |
20.01.97 | 21020 | 92,538 |
20.01.97 | 22001 | 99,826 |
20.01.97 | 22002 | 95,996 |
20.01.97 | 22003 | 93,943 |
20.01.97 | 22004 | 91,855 |
20.01.97 | 22005 | 87,862 |
20.01.97 | 22006 | 87,631 |
21.01.97 | 21019 | 97,557 |
21.01.97 | 21020 | 92,463 |
21.01.97 | 22001 | 99,801 |
21.01.97 | 22002 | 96,402 |
21.01.97 | 22003 | 94,097 |
21.01.97 | 22004 | 91,114 |
21.01.97 | 22005 | 88,438 |
21.01.97 | 22006 | 86,820 |
22.01.97 | 21019 | 97,691 |
22.01.97 | 21020 | 92,509 |
22.01.97 | 22001 | 99,861 |
22.01.97 | 22002 | 96,990 |
22.01.97 | 22003 | 94,097 |
22.01.97 | 22004 | 91,349 |
22.01.97 | 22005 | 88,389 |
22.01.97 | 22006 | 86,710 |
23.01.97 | 22001 | 100,000 |
23.01.97 | 22006 | 86,597 |
24.01.97 | 21019 | 98,164 |
24.01.97 | 21020 | 92,854 |
24.01.97 | 22002 | 96,740 |
24.01.97 | 22003 | 94,233 |
24.01.97 | 22004 | 91,920 |
24.01.97 | 22005 | 89,055 |
24.01.97 | 22006 | 87,196 |
27.01.97 | 21019 | 98,620 |
27.01.97 | 21020 | 93,200 |
27.01.97 | 22002 | 97,327 |
27.01.97 | 22003 | 94,658 |
27.01.97 | 22004 | 92,081 |
27.01.97 | 22005 | 89,153 |
27.01.97 | 22006 | 87,163 |
28.01.97 | 21019 | 98,681 |
28.01.97 | 21020 | 93,369 |
28.01.97 | 22002 | 97,412 |
28.01.97 | 22003 | 94,732 |
28.01.97 | 22004 | 92,486 |
28.01.97 | 22005 | 89,617 |
28.01.97 | 22006 | 87,152 |
29.01.97 | 21019 | 98,242 |
29.01.97 | 21020 | 93,041 |
29.01.97 | 22002 | 97,485 |
29.01.97 | 22003 | 94,821 |
29.01.97 | 22004 | 91,200 |
29.01.97 | 22005 | 89,617 |
29.01.97 | 22006 | 87,353 |
30.01.97 | 22007 | 83,554 |
31.01.97 | 21019 | 98,864 |
31.01.97 | 21020 | 93,385 |
31.01.97 | 22002 | 97,485 |
31.01.97 | 22003 | 94,652 |
31.01.97 | 22004 | 91,787 |
31.01.97 | 22005 | 85,900 |
31.01.97 | 22006 | 87,419 |
31.01.97 | 22007 | 84,043 |
03.02.97 | 21019 | 99,326 |
03.02.97 | 21020 | 93,500 |
03.02.97 | 22002 | 97,880 |
03.02.97 | 22003 | 94,829 |
03.02.97 | 22004 | 92,601 |
03.02.97 | 22005 | 89,415 |
03.02.97 | 22006 | 88,276 |
03.02.97 | 22007 | 84,480 |
04.02.97 | 21019 | 99,155 |
04.02.97 | 21020 | 93,831 |
04.02.97 | 22002 | 97,954 |
04.02.97 | 22003 | 95,089 |
04.02.97 | 22004 | 92,484 |
04.02.97 | 22005 | 90,000 |
04.02.97 | 22006 | 88,181 |
04.02.97 | 22007 | 84,612 |
05.02.97 | 21019 | 99,245 |
05.02.97 | 21020 | 94,120 |
05.02.97 | 22002 | 97,954 |
05.02.97 | 22003 | 95,330 |
05.02.97 | 22004 | 92,705 |
05.02.97 | 22005 | 90,182 |
05.02.97 | 22006 | 88,575 |
05.02.97 | 22007 | 84,749 |
06.02.97 | 21019 | 99,502 |
06.02.97 | 21020 | 94,255 |
06.02.97 | 22002 | 98,440 |
06.02.97 | 22003 | 95,631 |
06.02.97 | 22004 | 93,010 |
06.02.97 | 22005 | 90,650 |
06.02.97 | 22006 | 89,112 |
06.02.97 | 22007 | 86,097 |
07.02.97 | 21019 | 99,646 |
07.02.97 | 21020 | 94,650 |
07.02.97 | 22002 | 97,238 |
07.02.97 | 22003 | 95,946 |
07.02.97 | 22004 | 93,249 |
07.02.97 | 22005 | 91,013 |
07.02.97 | 22006 | 89,136 |
07.02.97 | 22007 | 86,035 |
10.02.97 | 21019 | 99,771 |
10.02.97 | 21020 | 94,990 |
10.02.97 | 22002 | 98,667 |
10.02.97 | 22003 | 95,760 |
10.02.97 | 22004 | 93,520 |
10.02.97 | 22005 | 90,591 |
10.02.97 | 22006 | 88,109 |
10.02.97 | 22007 | 86,113 |
11.02.97 | 21019 | 99,842 |
11.02.97 | 21020 | 94,759 |
11.02.97 | 22002 | 98,667 |
11.02.97 | 22003 | 96,000 |
11.02.97 | 22004 | 93,565 |
11.02.97 | 22005 | 90,800 |
11.02.97 | 22006 | 89,259 |
11.02.97 | 22007 | 86,157 |
12.02.97 | 21019 | 99,875 |
12.02.97 | 21020 | 94,844 |
12.02.97 | 22002 | 98,571 |
12.02.97 | 22003 | 96,000 |
12.02.97 | 22004 | 93,678 |
12.02.97 | 22005 | 90,520 |
12.02.97 | 22006 | 89,239 |
12.02.97 | 22007 | 86,558 |
13.02.97 | 21019 | 100,000 |
13.02.97 | 21021 | 91,357 |
14.02.97 | 21020 | 95,057 |
14.02.97 | 21021 | 92,133 |
14.02.97 | 22002 | 99,233 |
14.02.97 | 22003 | 96,400 |
14.02.97 | 22004 | 94,100 |
14.02.97 | 22005 | 91,400 |
14.02.97 | 22006 | 90,053 |
14.02.97 | 22007 | 87,650 |
17.02.97 | 21020 | 95,604 |
17.02.97 | 21021 | 92,377 |
17.02.97 | 22002 | 99,535 |
17.02.97 | 22003 | 96,852 |
17.02.97 | 22004 | 94,484 |
17.02.97 | 22005 | 92,159 |
17.02.97 | 22006 | 90,548 |
17.02.97 | 22007 | 88,149 |
18.02.97 | 21020 | 96,133 |
18.02.97 | 21021 | 92,625 |
18.02.97 | 22002 | 99,700 |
18.02.97 | 22003 | 97,191 |
18.02.97 | 22004 | 94,987 |
18.02.97 | 22005 | 92,690 |
18.02.97 | 22006 | 90,988 |
18.02.97 | 22007 | 88,547 |
19.02.97 | 21020 | 96,364 |
19.02.97 | 21021 | 92,841 |
19.02.97 | 22002 | 99,702 |
19.02.97 | 22003 | 97,195 |
19.02.97 | 22004 | 95,049 |
19.02.97 | 22005 | 92,979 |
19.02.97 | 22006 | 91,236 |
19.02.97 | 22007 | 89,245 |
20.02.97 | 21020 | 96,263 |
20.02.97 | 21021 | 93,056 |
20.02.97 | 22002 | 99,800 |
20.02.97 | 22003 | 97,400 |
20.02.97 | 22004 | 95,370 |
20.02.97 | 22005 | 92,948 |
20.02.97 | 22006 | 90,918 |
20.02.97 | 22007 | 89,336 |
21.02.97 | 21020 | 96,490 |
21.02.97 | 21021 | 93,234 |
21.02.97 | 22002 | 99,800 |
21.02.97 | 22003 | 97,496 |
21.02.97 | 22004 | 95,310 |
21.02.97 | 22005 | 92,643 |
21.02.97 | 22006 | 91,359 |
21.02.97 | 22007 | 88,513 |
24.02.97 | 21020 | 96,071 |
24.02.97 | 21021 | 92,965 |
24.02.97 | 22002 | 99,800 |
24.02.97 | 22003 | 97,500 |
24.02.97 | 22004 | 95,200 |
24.02.97 | 22005 | 92,007 |
24.02.97 | 22006 | 90,456 |
24.02.97 | 22007 | 88,500 |
25.02.97 | 21020 | 96,000 |
25.02.97 | 21021 | 90,057 |
25.02.97 | 22002 | 99,852 |
25.02.97 | 22003 | 97,427 |
25.02.97 | 22004 | 95,454 |
25.02.97 | 22005 | 92,054 |
25.02.97 | 22006 | 90,930 |
25.02.97 | 22007 | 88,199 |
26.02.97 | 21020 | 96,119 |
26.02.97 | 21021 | 92,786 |
26.02.97 | 22002 | 99,883 |
26.02.97 | 22003 | 97,734 |
26.02.97 | 22004 | 95,019 |
26.02.97 | 22005 | 92,299 |
26.02.97 | 22006 | 90,874 |
26.02.97 | 22007 | 88,730 |
27.02.97 | 22002 | 100,000 |
27.02.97 | 22008 | 84,092 |
28.02.97 | 21020 | 96,809 |
28.02.97 | 21021 | 93,293 |
28.02.97 | 22003 | 98,120 |
28.02.97 | 22004 | 95,190 |
28.02.97 | 22005 | 93,100 |
28.02.97 | 22006 | 91,725 |
28.02.97 | 22007 | 88,782 |
28.02.97 | 22008 | 84,956 |
03.03.97 | 21020 | 97,293 |
03.03.97 | 21021 | 94,125 |
03.03.97 | 22003 | 98,350 |
03.03.97 | 22004 | 96,362 |
03.03.97 | 22005 | 93,100 |
03.03.97 | 22006 | 92,266 |
03.03.97 | 22007 | 90,333 |
03.03.97 | 22008 | 86,453 |
04.03.97 | 21020 | 97,348 |
04.03.97 | 21021 | 94,392 |
04.03.97 | 22003 | 98,436 |
04.03.97 | 22004 | 96,124 |
04.03.97 | 22005 | 93,939 |
04.03.97 | 22006 | 92,416 |
04.03.97 | 22007 | 89,930 |
04.03.97 | 22008 | 87,157 |
05.03.97 | 21020 | 97,600 |
05.03.97 | 21021 | 94,421 |
05.03.97 | 22003 | 98,811 |
05.03.97 | 22004 | 96,685 |
05.03.97 | 22005 | 94,343 |
05.03.97 | 22006 | 92,647 |
05.03.97 | 22007 | 89,930 |
05.03.97 | 22008 | 87,016 |
06.03.97 | 21020 | 97,654 |
06.03.97 | 21021 | 94,503 |
06.03.97 | 22003 | 98,962 |
06.03.97 | 22004 | 96,782 |
06.03.97 | 22005 | 94,450 |
06.03.97 | 22006 | 92,646 |
06.03.97 | 22007 | 90,257 |
06.03.97 | 22008 | 86,887 |
07.03.97 | 21020 | 97,636 |
07.03.97 | 21021 | 94,630 |
07.03.97 | 22003 | 99,125 |
07.03.97 | 22004 | 96,903 |
07.03.97 | 22005 | 94,450 |
07.03.97 | 22006 | 92,953 |
07.03.97 | 22007 | 90,257 |
07.03.97 | 22008 | 87,081 |
11.03.97 | 21020 | 96,775 |
11.03.97 | 21021 | 94,860 |
11.03.97 | 22003 | 99,209 |
11.03.97 | 22004 | 96,650 |
11.03.97 | 22005 | 94,500 |
11.03.97 | 22006 | 93,162 |
11.03.97 | 22007 | 90,993 |
11.03.97 | 22008 | 87,317 |
12.03.97 | 21020 | 97,700 |
12.03.97 | 21021 | 94,132 |
12.03.97 | 22003 | 97,682 |
12.03.97 | 22004 | 95,787 |
12.03.97 | 22005 | 94,000 |
12.03.97 | 22006 | 92,513 |
12.03.97 | 22007 | 90,000 |
12.03.97 | 22008 | 87,138 |
13.03.97 | 21020 | 97,490 |
13.03.97 | 21021 | 94,000 |
13.03.97 | 22003 | 99,000 |
13.03.97 | 22004 | 96,064 |
13.03.97 | 22005 | 93,625 |
13.03.97 | 22006 | 92,141 |
13.03.97 | 22007 | 90,000 |
13.03.97 | 22008 | 86,400 |
14.03.97 | 21020 | 97,485 |
14.03.97 | 21021 | 94,946 |
14.03.97 | 22003 | 99,090 |
14.03.97 | 22004 | 96,501 |
14.03.97 | 22005 | 93,602 |
14.03.97 | 22006 | 92,133 |
14.03.97 | 22007 | 89,000 |
14.03.97 | 22008 | 86,731 |
17.03.97 | 21020 | 97,955 |
17.03.97 | 21021 | 92,545 |
17.03.97 | 22003 | 99,010 |
17.03.97 | 22004 | 96,800 |
17.03.97 | 22005 | 93,890 |
17.03.97 | 22006 | 92,423 |
17.03.97 | 22007 | 89,064 |
17.03.97 | 22008 | 87,328 |
18.03.97 | 21020 | 98,024 |
18.03.97 | 21021 | 94,576 |
18.03.97 | 22003 | 99,112 |
18.03.97 | 22004 | 96,576 |
18.03.97 | 22005 | 94,031 |
18.03.97 | 22006 | 92,455 |
18.03.97 | 22007 | 89,064 |
18.03.97 | 22008 | 86,166 |
19.03.97 | 21020 | 98,007 |
19.03.97 | 21021 | 94,668 |
19.03.97 | 22003 | 99,195 |
19.03.97 | 22004 | 96,819 |
19.03.97 | 22005 | 93,877 |
19.03.97 | 22006 | 91,269 |
19.03.97 | 22007 | 88,900 |
19.03.97 | 22008 | 86,649 |
20.03.97 | 24001 | 72,152 |
21.03.97 | 21020 | 98,278 |
21.03.97 | 21021 | 94,772 |
21.03.97 | 22003 | 99,600 |
21.03.97 | 22004 | 97,004 |
21.03.97 | 22005 | 94,285 |
21.03.97 | 22006 | 92,474 |
21.03.97 | 22007 | 88,900 |
21.03.97 | 22008 | 86,200 |
21.03.97 | 24001 | 72,503 |
24.03.97 | 21020 | 98,542 |
24.03.97 | 21021 | 94,855 |
24.03.97 | 22003 | 99,782 |
24.03.97 | 22004 | 97,333 |
24.03.97 | 22005 | 94,290 |
24.03.97 | 22006 | 92,693 |
24.03.97 | 22007 | 89,014 |
24.03.97 | 22008 | 86,303 |
24.03.97 | 24001 | 73,415 |
25.03.97 | 21020 | 98,273 |
25.03.97 | 21021 | 94,770 |
25.03.97 | 22003 | 99,784 |
25.03.97 | 22004 | 97,212 |
25.03.97 | 22005 | 94,182 |
25.03.97 | 22006 | 90,967 |
25.03.97 | 22007 | 88,855 |
25.03.97 | 22008 | 86,255 |
25.03.97 | 24001 | 72,600 |
26.03.97 | 21020 | 98,248 |
26.03.97 | 21021 | 94,563 |
26.03.97 | 22003 | 99,845 |
26.03.97 | 22004 | 97,248 |
26.03.97 | 22005 | 94,264 |
26.03.97 | 22006 | 92,016 |
26.03.97 | 22007 | 88,934 |
26.03.97 | 22008 | 86,300 |
26.03.97 | 24001 | 72,495 |
27.03.97 | 22003 | 100,000 |
27.03.97 | 22009 | 83,778 |
28.03.97 | 21020 | 99,032 |
28.03.97 | 21021 | 95,190 |
28.03.97 | 22004 | 97,329 |
28.03.97 | 22005 | 94,188 |
28.03.97 | 22006 | 92,888 |
28.03.97 | 22007 | 89,682 |
28.03.97 | 22008 | 88,090 |
28.03.97 | 22009 | 84,019 |
28.03.97 | 24001 | 72,997 |
31.03.97 | 21020 | 99,106 |
31.03.97 | 21021 | 95,565 |
31.03.97 | 22004 | 97,543 |
31.03.97 | 22005 | 94,517 |
31.03.97 | 22006 | 92,818 |
31.03.97 | 22007 | 89,682 |
31.03.97 | 22008 | 87,300 |
31.03.97 | 22009 | 84,050 |
31.03.97 | 24001 | 72,900 |
01.04.97 | 21020 | 99,249 |
01.04.97 | 21021 | 95,723 |
01.04.97 | 22004 | 97,727 |
01.04.97 | 22005 | 94,517 |
01.04.97 | 22006 | 92,953 |
01.04.97 | 22007 | 90,000 |
01.04.97 | 22008 | 86,996 |
01.04.97 | 22009 | 84,330 |
01.04.97 | 24001 | 73,000 |
02.04.97 | 21020 | 99,250 |
02.04.97 | 21021 | 95,693 |
02.04.97 | 22004 | 97,963 |
02.04.97 | 22005 | 94,736 |
02.04.97 | 22006 | 93,156 |
02.04.97 | 22007 | 90,990 |
02.04.97 | 22008 | 86,940 |
02.04.97 | 22009 | 84,022 |
02.04.97 | 24001 | 73,000 |
03.04.97 | 21020 | 99,268 |
03.04.97 | 21021 | 95,807 |
03.04.97 | 22004 | 98,022 |
03.04.97 | 22005 | 94,922 |
03.04.97 | 22006 | 93,274 |
03.04.97 | 22007 | 90,558 |
03.04.97 | 22008 | 86,610 |
03.04.97 | 22009 | 83,988 |
03.04.97 | 24001 | 72,952 |
04.04.97 | 21020 | 99,308 |
04.04.97 | 21021 | 95,800 |
04.04.97 | 22004 | 98,072 |
04.04.97 | 22005 | 95,226 |
04.04.97 | 22006 | 93,486 |
04.04.97 | 22007 | 90,893 |
04.04.97 | 22008 | 86,444 |
04.04.97 | 22009 | 84,133 |
04.04.97 | 24001 | 72,857 |
07.04.97 | 21020 | 99,642 |
07.04.97 | 21021 | 95,765 |
07.04.97 | 22004 | 98,337 |
07.04.97 | 22005 | 95,438 |
07.04.97 | 22006 | 93,650 |
07.04.97 | 22007 | 91,200 |
07.04.97 | 22008 | 88,400 |
07.04.97 | 22009 | 84,131 |
07.04.97 | 24001 | 73,053 |
08.04.97 | 21020 | 99,790 |
08.04.97 | 21021 | 96,330 |
08.04.97 | 22004 | 98,380 |
08.04.97 | 22005 | 95,533 |
08.04.97 | 22006 | 93,841 |
08.04.97 | 22007 | 91,200 |
08.04.97 | 22008 | 87,490 |
08.04.97 | 22009 | 84,432 |
08.04.97 | 24001 | 73,006 |
09.04.97 | 21020 | 99,862 |
09.04.97 | 21021 | 96,427 |
09.04.97 | 22004 | 98,455 |
09.04.97 | 22005 | 95,674 |
09.04.97 | 22006 | 93,827 |
09.04.97 | 22007 | 91,038 |
09.04.97 | 22008 | 87,525 |
09.04.97 | 22009 | 85,103 |
09.04.97 | 24001 | 73,208 |
10.04.97 | 21020 | 100,00 |
10.04.97 | 21022 | 91,650 |
11.04.97 | 21021 | 96,963 |
11.04.97 | 21022 | 92,066 |
11.04.97 | 22004 | 98,780 |
11.04.97 | 22005 | 95,861 |
11.04.97 | 22006 | 94,384 |
11.04.97 | 22007 | 91,498 |
11.04.97 | 22008 | 87,907 |
11.04.97 | 22009 | 84,907 |
11.04.97 | 24001 | 73,500 |
14.04.97 | 21021 | 97,091 |
14.04.97 | 21022 | 92,221 |
14.04.97 | 22004 | 99,137 |
14.04.97 | 22005 | 96,461 |
14.04.97 | 22006 | 94,535 |
14.04.97 | 22007 | 91,570 |
14.04.97 | 22008 | 88,076 |
14.04.97 | 22009 | 85,445 |
14.04.97 | 24001 | 73,561 |
15.04.97 | 21021 | 97,503 |
15.04.97 | 21022 | 92,419 |
15.04.97 | 22004 | 99,180 |
15.04.97 | 22005 | 96,521 |
15.04.97 | 22006 | 94,953 |
15.04.97 | 22007 | 91,891 |
15.04.97 | 22008 | 88,044 |
15.04.97 | 22009 | 85,768 |
15.04.97 | 24001 | 73,568 |
16.04.97 | 21021 | 97,762 |
16.04.97 | 21022 | 92,643 |
16.04.97 | 22004 | 99,514 |
16.04.97 | 22005 | 96,747 |
16.04.97 | 22006 | 95,016 |
16.04.97 | 22007 | 92,800 |
16.04.97 | 22008 | 88,395 |
16.04.97 | 22009 | 86,464 |
16.04.97 | 24001 | 73,614 |
17.04.97 | 21021 | 97,699 |
17.04.97 | 21022 | 92,528 |
17.04.97 | 22004 | 99,647 |
17.04.97 | 22005 | 96,600 |
17.04.97 | 22006 | 95,063 |
17.04.97 | 22007 | 92,009 |
17.04.97 | 22008 | 88,789 |
17.04.97 | 22009 | 86,860 |
17.04.97 | 24001 | 73,647 |
21.04.97 | 21021 | 97,836 |
21.04.97 | 21022 | 92,444 |
21.04.97 | 22004 | 99,809 |
21.04.97 | 22005 | 96,810 |
21.04.97 | 22006 | 95,262 |
21.04.97 | 22007 | 92,009 |
21.04.97 | 22008 | 86,911 |
21.04.97 | 22009 | 86,487 |
21.04.97 | 24001 | 73,671 |
22.04.97 | 21021 | 97,894 |
22.04.97 | 21022 | 92,642 |
22.04.97 | 22004 | 99,862 |
22.04.97 | 22005 | 96,854 |
22.04.97 | 22006 | 95,350 |
22.04.97 | 22007 | 92,487 |
22.04.97 | 22008 | 88,720 |
22.04.97 | 22009 | 86,314 |
22.04.97 | 24001 | 73,938 |
23.04.97 | 21021 | 98,091 |
23.04.97 | 21022 | 92,955 |
23.04.97 | 22004 | 99,893 |
23.04.97 | 22005 | 97,196 |
23.04.97 | 22006 | 95,347 |
23.04.97 | 22007 | 92,693 |
23.04.97 | 22008 | 88,859 |
23.04.97 | 22009 | 86,535 |
23.04.97 | 24001 | 74,051 |
24.04.97 | 22004 | 100,000 |
24.04.97 | 22010 | 84,320 |
25.04.97 | 21021 | 98,472 |
25.04.97 | 21022 | 93,593 |
25.04.97 | 22005 | 97,478 |
25.04.97 | 22006 | 95,920 |
25.04.97 | 22007 | 92,693 |
25.04.97 | 22008 | 89,248 |
25.04.97 | 22009 | 87,185 |
25.04.97 | 22010 | 84,823 |
25.04.97 | 24001 | 75,000 |
28.04.97 | 21021 | 98,686 |
28.04.97 | 21022 | 93,569 |
28.04.97 | 22005 | 97,687 |
28.04.97 | 22006 | 96,382 |
28.04.97 | 22007 | 93,300 |
28.04.97 | 22008 | 89,248 |
28.04.97 | 22009 | 88,132 |
28.04.97 | 22010 | 86,361 |
28.04.97 | 24001 | 76,105 |
29.04.97 | 21021 | 98,913 |
29.04.97 | 21022 | 94,045 |
29.04.97 | 22005 | 97,880 |
29.04.97 | 22006 | 96,498 |
29.04.97 | 22007 | 93,800 |
29.04.97 | 22008 | 89,248 |
29.04.97 | 22009 | 88,106 |
29.04.97 | 22010 | 86,366 |
29.04.97 | 24001 | 76,318 |
30.04.97 | 21021 | 99,023 |
30.04.97 | 21022 | 94,968 |
30.04.97 | 22005 | 98,284 |
30.04.97 | 22006 | 96,779 |
30.04.97 | 22007 | 93,800 |
30.04.97 | 22008 | 90,700 |
30.04.97 | 22009 | 89,266 |
30.04.97 | 22010 | 86,498 |
30.04.97 | 24001 | 76,811 |
04.05.97 | 21021 | 99,205 |
04.05.97 | 21022 | 94,962 |
04.05.97 | 22005 | 98,202 |
04.05.97 | 22006 | 96,818 |
04.05.97 | 22007 | 94,351 |
04.05.97 | 22008 | 90,750 |
04.05.97 | 22009 | 88,884 |
04.05.97 | 22010 | 86,817 |
04.05.97 | 24001 | 76,987 |
05.05.97 | 21021 | 99,378 |
05.05.97 | 21022 | 94,962 |
05.05.97 | 22005 | 98,500 |
05.05.97 | 22006 | 96,600 |
05.05.97 | 22007 | 94,290 |
05.05.97 | 22008 | 91,176 |
05.05.97 | 22009 | 88,810 |
05.05.97 | 22010 | 86,953 |
05.05.97 | 24001 | 76,983 |
06.05.97 | 21021 | 99,433 |
06.05.97 | 21022 | 94,700 |
06.05.97 | 22005 | 98,331 |
06.05.97 | 22006 | 96,649 |
06.05.97 | 22007 | 94,290 |
06.05.97 | 22008 | 90,865 |
06.05.97 | 22009 | 89,017 |
06.05.97 | 22010 | 86,915 |
06.05.97 | 24001 | 76,880 |
07.05.97 | 21021 | 97,211 |
07.05.97 | 21022 | 94,820 |
07.05.97 | 22005 | 98,369 |
07.05.97 | 22006 | 96,859 |
07.05.97 | 22007 | 94,377 |
07.05.97 | 22008 | 91,100 |
07.05.97 | 22009 | 89,046 |
07.05.97 | 22010 | 86,797 |
07.05.97 | 24001 | 76,980 |
08.05.97 | 24002 | 73,909 |
12.05.97 | 21021 | 99,765 |
12.05.97 | 21022 | 94,939 |
12.05.97 | 22005 | 98,501 |
12.05.97 | 22006 | 95,704 |
12.05.97 | 22007 | 94,377 |
12.05.97 | 22008 | 91,260 |
12.05.97 | 22009 | 89,035 |
12.05.97 | 22010 | 88,008 |
12.05.97 | 24001 | 77,406 |
12.05.97 | 24002 | 73,923 |
13.05.97 | 21021 | 99,850 |
13.05.97 | 21022 | 95,315 |
13.05.97 | 22005 | 98,694 |
13.05.97 | 22006 | 97,399 |
13.05.97 | 22007 | 94,698 |
13.05.97 | 22008 | 90,403 |
13.05.97 | 22009 | 89,313 |
13.05.97 | 22010 | 87,685 |
13.05.97 | 24001 | 77,422 |
13.05.97 | 24002 | 74,508 |
14.05.97 | 21021 | 99,892 |
14.05.97 | 21022 | 95,445 |
14.05.97 | 22005 | 98,872 |
14.05.97 | 22006 | 97,414 |
14.05.97 | 22007 | 95,000 |
14.05.97 | 22008 | 91,750 |
14.05.97 | 22009 | 89,683 |
14.05.97 | 22010 | 87,630 |
14.05.97 | 24001 | 77,601 |
14.05.97 | 24002 | 74,762 |
15.05.97 | 21021 | 100,000 |
15.05.97 | 22011 | 86,347 |
16.05.97 | 21022 | 96,203 |
16.05.97 | 22005 | 99,396 |
16.05.97 | 22006 | 98,034 |
16.05.97 | 22007 | 95,000 |
16.05.97 | 22008 | 92,360 |
16.05.97 | 22009 | 90,972 |
16.05.97 | 22010 | 88,562 |
16.05.97 | 22011 | 87,236 |
16.05.97 | 24001 | 79,057 |
16.05.97 | 24002 | 75,700 |
19.05.97 | 21022 | 96,549 |
19.05.97 | 22005 | 99,577 |
19.05.97 | 22006 | 98,254 |
19.05.97 | 22007 | 95,650 |
19.05.97 | 22008 | 92,754 |
19.05.97 | 22009 | 91,107 |
19.05.97 | 22010 | 88,993 |
19.05.97 | 22011 | 87,497 |
19.05.97 | 24001 | 79,448 |
19.05.97 | 24002 | 77,016 |
20.05.97 | 21022 | 96,686 |
20.05.97 | 22005 | 99,765 |
20.05.97 | 22006 | 98,239 |
20.05.97 | 22007 | 95,852 |
20.05.97 | 22008 | 93,027 |
20.05.97 | 22009 | 91,487 |
20.05.97 | 22010 | 89,323 |
20.05.97 | 22011 | 87,627 |
20.05.97 | 24001 | 79,926 |
20.05.97 | 24002 | 77,002 |
21.05.97 | 21022 | 96,819 |
21.05.97 | 22005 | 99,650 |
21.05.97 | 22006 | 98,492 |
21.05.97 | 22007 | 95,850 |
21.05.97 | 22008 | 93,298 |
21.05.97 | 22009 | 91,846 |
21.05.97 | 22010 | 89,554 |
21.05.97 | 22011 | 87,971 |
21.05.97 | 24001 | 80,371 |
21.05.97 | 24002 | 77,202 |
22.05.97 | 21022 | 98,222 |
22.05.97 | 22005 | 99,804 |
22.05.97 | 22006 | 98,492 |
22.05.97 | 22007 | 96,143 |
22.05.97 | 22008 | 93,672 |
22.05.97 | 22009 | 92,145 |
22.05.97 | 22010 | 89,949 |
22.05.97 | 22011 | 88,536 |
22.05.97 | 24001 | 81,219 |
22.05.97 | 24002 | 78,777 |
23.05.97 | 21022 | 97,250 |
23.05.97 | 22005 | 99,811 |
23.05.97 | 22006 | 98,629 |
23.05.97 | 22007 | 96,232 |
23.05.97 | 22008 | 92,804 |
23.05.97 | 22009 | 92,625 |
23.05.97 | 22010 | 90,014 |
23.05.97 | 22011 | 88,937 |
23.05.97 | 24001 | 81,434 |
23.05.97 | 24002 | 79,200 |
26.05.97 | 21022 | 96,616 |
26.05.97 | 22005 | 99,803 |
26.05.97 | 22006 | 98,649 |
26.05.97 | 22007 | 96,232 |
26.05.97 | 22008 | 93,498 |
26.05.97 | 22009 | 92,338 |
26.05.97 | 22010 | 89,902 |
26.05.97 | 22011 | 88,581 |
26.05.97 | 24001 | 79,606 |
26.05.97 | 24002 | 79,001 |
27.05.97 | 21022 | 96,645 |
27.05.97 | 22005 | 99,890 |
27.05.97 | 22006 | 98,094 |
27.05.97 | 22007 | |
27.05.97 | 22008 | 93,545 |
27.05.97 | 22009 | 91,260 |
27.05.97 | 22010 | 89,563 |
27.05.97 | 22011 | 88,897 |
27.05.97 | 24001 | 81,543 |
27.05.97 | 24002 | 78,102 |
28.05.97 | 21022 | 96,287 |
28.05.97 | 22005 | 99,869 |
28.05.97 | 22006 | 98,338 |
28.05.97 | 22007 | |
28.05.97 | 22008 | 93,475 |
28.05.97 | 22009 | 91,221 |
28.05.97 | 22010 | 89,391 |
28.05.97 | 22011 | 88,233 |
28.05.97 | 24001 | 81,067 |
28.05.97 | 24002 | 78,200 |
29.05.97 | 22005 | 100,000 |
29.05.97 | 22012 | 87,303 |
30.05.97 | 21022 | 96,982 |
30.05.97 | 22006 | 98,667 |
30.05.97 | 22007 | 95,814 |
30.05.97 | 22008 | 93,096 |
30.05.97 | 22009 | 90,537 |
30.05.97 | 22010 | 89,430 |
30.05.97 | 22011 | 88,050 |
30.05.97 | 22012 | 87,858 |
30.05.97 | 24001 | 80,994 |
30.05.97 | 24002 | 77,325 |